Loading…
Read, search and post in Mattermost as yourself or a bot.
Mattermost is an MCP server entry in ChatHome Skills, sourced from Official MCP Registry and scored 54/100. As a Model Context Protocol server, it exposes tools that MCP-compatible LLM clients such as Claude, Cursor, and Copilot can call directly, extending an agent's reach beyond its built-in capabilities. ChatHome Skills discovered this entry through its daily ingest of official registries and GitHub discovery queries, and re-verifies repository facts, freshness signals, and install metadata on every run. The quality score weighs official-registry presence, a working install command, license clarity, GitHub star trajectory, and repository freshness — the full formula is on the Sources page. No automated install command is listed; check the repository for manual setup instructions. Review the last-pushed date and repository status before adding Mattermost to a production agent workflow; the snapshot facts below are point-in-time values from the most recent ingest.
See source docsReview the upstream source before running this command.
{
"_meta": {
"io.modelcontextprotocol.registry/official": {
"status": "active",
"isLatest": true,
"updatedAt": "2026-10-21T09:21:11.385492Z",
"publishedAt": "2026-10-21T09:21:11.385492Z",
"statusChangedAt": "2026-10-21T09:21:11.385492Z"
}
},
"server": {
"name": "io.github.vriesdemichael/mm-mcp",
"title": "Mattermost",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"version": "0.4.0",
"packages": [
{
"version": "0.4.0",
"transport": {
"type": "stdio"
},
"fileSha256": "874814ee6d98f49cd7aef9b2ab651e387401abdd9ca7666aa37ab1e3543f291b",
"identifier": "https://github.com/vriesdemichael/mm-mcp/releases/download/v0.4.0/mm-mcp_0.4.0_darwin_amd64.mcpb",
"registryType": "mcpb",
"environmentVariables": [
{
"name": "MM_MCP_ALLOW_WRITES",
"format": "boolean",
"default": "false",
"description": "Offer the tools that post and change things. Your client's own approval of each call decides, and mm-mcp checks what each change others see states before it acts."
},
{
"name": "MM_MCP_CA_FILE",
"format": "filepath",
"description": "A PEM file of certificate authorities to trust beside your system's, for a Mattermost whose certificate your organisation signed itself. Leave it empty otherwise."
},
{
"name": "MM_MCP_DOWNLOAD_DIR",
"format": "filepath",
"description": "Where save_file writes attachments. Leave it empty for your Downloads directory."
},
{
"name": "MM_MCP_ELICITATION_OPT_IN",
"format": "boolean",
"default": "false",
"description": "Your client's own approval of each call decides whether a post or another change others see goes ahead, and mm-mcp checks what each states. Turn this on to have mm-mcp ask you too, through a question your client shows: a convenience where it shows it, not a safeguard, since some clients answer it themselves."
},
{
"name": "MM_MCP_FORCE_HUMAN_IN_THE_LOOP_IN_CLAUDE_CODE",
"format": "boolean",
"default": "false",
"description": "Not with mm-mcp asks as well: marks each tool that changes what others see so that Claude Code asks a person on every call, whatever its permission mode or rules allow. An agent cannot post on its own while it is on."
},
{
"name": "MM_MCP_MARK_AI_GENERATED",
"format": "boolean",
"default": "true",
"description": "Mark every post and edit the model writes with Mattermost's own marker for text written with AI."
},
{
"name": "MM_MCP_POST_FROM_VIEWS",
"format": "boolean",
"default": "true",
"description": "Where your app shows mm-mcp's views, a post the model proposes as your draft can be posted from the view with Post. Off, the draft waits in Mattermost for you to send."
},
{
"name": "MM_MCP_RESOURCE_MAX_MB",
"format": "number",
"default": "10",
"description": "The most one message carrying an attached file as an MCP resource holds, a binary file counted as its base64. MCP sends a resource whole, and a client drops a message past its own limit, 10 MB for clients built on the TypeScript SDK. A larger one is refused, and read_file or save_file reads it instead. 0 is no limit."
},
{
"name": "MM_TOKEN",
"format": "string",
"isSecret": true,
"description": "A personal access token or a bot token. Where those are switched off, leave it empty after logging in once with mm-mcp login --url <address> in a terminal, which keeps your session in the system's credential store."
},
{
"name": "MM_URL",
"format": "string",
"isRequired": true,
"description": "The address you open Mattermost at, such as https://chat.example.com."
}
]
},
{
"version": "0.4.0",
"transport": {
"type": "stdio"
},
"fileSha256": "01a91a09ed6d11e95e7f399b594ec6582bfb432724fd61ffba1afea4225742ba",
"identifier": "https://github.com/vriesdemichael/mm-mcp/releases/download/v0.4.0/mm-mcp_0.4.0_darwin_arm64.mcpb",
"registryType": "mcpb",
"environmentVariables": [
{
"name": "MM_MCP_ALLOW_WRITES",
"format": "boolean",
"default": "false",
"description": "Offer the tools that post and change things. Your client's own approval of each call decides, and mm-mcp checks what each change others see states before it acts."
},
{
"name": "MM_MCP_CA_FILE",
"format": "filepath",
"description": "A PEM file of certificate authorities to trust beside your system's, for a Mattermost whose certificate your organisation signed itself. Leave it empty otherwise."
},
{
"name": "MM_MCP_DOWNLOAD_DIR",
"format": "filepath",
"description": "Where save_file writes attachments. Leave it empty for your Downloads directory."
},
{
"name": "MM_MCP_ELICITATION_OPT_IN",
"format": "boolean",
"default": "false",
"description": "Your client's own approval of each call decides whether a post or another change others see goes ahead, and mm-mcp checks what each states. Turn this on to have mm-mcp ask you too, through a question your client shows: a convenience where it shows it, not a safeguard, since some clients answer it themselves."
},
{
"name": "MM_MCP_FORCE_HUMAN_IN_THE_LOOP_IN_CLAUDE_CODE",
"format": "boolean",
"default": "false",
"description": "Not with mm-mcp asks as well: marks each tool that changes what others see so that Claude Code asks a person on every call, whatever its permission mode or rules allow. An agent cannot post on its own while it is on."
},
{
"name": "MM_MCP_MARK_AI_GENERATED",
"format": "boolean",
"default": "true",
"description": "Mark every post and edit the model writes with Mattermost's own marker for text written with AI."
},
{
"name": "MM_MCP_POST_FROM_VIEWS",
"format": "boolean",
"default": "true",
"description": "Where your app shows mm-mcp's views, a post the model proposes as your draft can be posted from the view with Post. Off, the draft waits in Mattermost for you to send."
},
{
"name": "MM_MCP_RESOURCE_MAX_MB",
"format": "number",
"default": "10",
"description": "The most one message carrying an attached file as an MCP resource holds, a binary file counted as its base64. MCP sends a resource whole, and a client drops a message past its own limit, 10 MB for clients built on the TypeScript SDK. A larger one is refused, and read_file or save_file reads it instead. 0 is no limit."
},
{
"name": "MM_TOKEN",
"format": "string",
"isSecret": true,
"description": "A personal access token or a bot token. Where those are switched off, leave it empty after logging in once with mm-mcp login --url <address> in a terminal, which keeps your session in the system's credential store."
},
{
"name": "MM_URL",
"format": "string",
"isRequired": true,
"description": "The address you open Mattermost at, such as https://chat.example.com."
}
]
},
{
"version": "0.4.0",
"transport": {
"type": "stdio"
},
"fileSha256": "ad56d46b2f40922350349821f2cd6feb6fc3924b7724f80bc30ddcdb2a0a0a8d",
"identifier": "https://github.com/vriesdemichael/mm-mcp/releases/download/v0.4.0/mm-mcp_0.4.0_linux_amd64.mcpb",
"registryType": "mcpb",
"environmentVariables": [
{
"name": "MM_MCP_ALLOW_WRITES",
"format": "boolean",
"default": "false",
"description": "Offer the tools that post and change things. Your client's own approval of each call decides, and mm-mcp checks what each change others see states before it acts."
},
{
"name": "MM_MCP_CA_FILE",
"format": "filepath",
"description": "A PEM file of certificate authorities to trust beside your system's, for a Mattermost whose certificate your organisation signed itself. Leave it empty otherwise."
},
{
"name": "MM_MCP_DOWNLOAD_DIR",
"format": "filepath",
"description": "Where save_file writes attachments. Leave it empty for your Downloads directory."
},
{
"name": "MM_MCP_ELICITATION_OPT_IN",
"format": "boolean",
"default": "false",
"description": "Your client's own approval of each call decides whether a post or another change others see goes ahead, and mm-mcp checks what each states. Turn this on to have mm-mcp ask you too, through a question your client shows: a convenience where it shows it, not a safeguard, since some clients answer it themselves."
},
{
"name": "MM_MCP_FORCE_HUMAN_IN_THE_LOOP_IN_CLAUDE_CODE",
"format": "boolean",
"default": "false",
"description": "Not with mm-mcp asks as well: marks each tool that changes what others see so that Claude Code asks a person on every call, whatever its permission mode or rules allow. An agent cannot post on its own while it is on."
},
{
"name": "MM_MCP_MARK_AI_GENERATED",
"format": "boolean",
"default": "true",
"description": "Mark every post and edit the model writes with Mattermost's own marker for text written with AI."
},
{
"name": "MM_MCP_POST_FROM_VIEWS",
"format": "boolean",
"default": "true",
"description": "Where your app shows mm-mcp's views, a post the model proposes as your draft can be posted from the view with Post. Off, the draft waits in Mattermost for you to send."
},
{
"name": "MM_MCP_RESOURCE_MAX_MB",
"format": "number",
"default": "10",
"description": "The most one message carrying an attached file as an MCP resource holds, a binary file counted as its base64. MCP sends a resource whole, and a client drops a message past its own limit, 10 MB for clients built on the TypeScript SDK. A larger one is refused, and read_file or save_file reads it instead. 0 is no limit."
},
{
"name": "MM_TOKEN",
"format": "string",
"isSecret": true,
"description": "A personal access token or a bot token. Where those are switched off, leave it empty after logging in once with mm-mcp login --url <address> in a terminal, which keeps your session in the system's credential store."
},
{
"name": "MM_URL",
"format": "string",
"isRequired": true,
"description": "The address you open Mattermost at, such as https://chat.example.com."
}
]
},
{
"version": "0.4.0",
"transport": {
"type": "stdio"
},
"fileSha256": "0924bf140fa6da0d2073c3e4082322b6a2dace30f09d18411ed1814adcf6bea0",
"identifier": "https://github.com/vriesdemichael/mm-mcp/releases/download/v0.4.0/mm-mcp_0.4.0_linux_arm64.mcpb",
"registryType": "mcpb",
"environmentVariables": [
{
"name": "MM_MCP_ALLOW_WRITES",
"format": "boolean",
"default": "false",
"description": "Offer the tools that post and change things. Your client's own approval of each call decides, and mm-mcp checks what each change others see states before it acts."
},
{
"name": "MM_MCP_CA_FILE",
"format": "filepath",
"description": "A PEM file of certificate authorities to trust beside your system's, for a Mattermost whose certificate your organisation signed itself. Leave it empty otherwise."
},
{
"name": "MM_MCP_DOWNLOAD_DIR",
"format": "filepath",
"description": "Where save_file writes attachments. Leave it empty for your Downloads directory."
},
{
"name": "MM_MCP_ELICITATION_OPT_IN",
"format": "boolean",
"default": "false",
"description": "Your client's own approval of each call decides whether a post or another change others see goes ahead, and mm-mcp checks what each states. Turn this on to have mm-mcp ask you too, through a question your client shows: a convenience where it shows it, not a safeguard, since some clients answer it themselves."
},
{
"name": "MM_MCP_FORCE_HUMAN_IN_THE_LOOP_IN_CLAUDE_CODE",
"format": "boolean",
"default": "false",
"description": "Not with mm-mcp asks as well: marks each tool that changes what others see so that Claude Code asks a person on every call, whatever its permission mode or rules allow. An agent cannot post on its own while it is on."
},
{
"name": "MM_MCP_MARK_AI_GENERATED",
"format": "boolean",
"default": "true",
"description": "Mark every post and edit the model writes with Mattermost's own marker for text written with AI."
},
{
"name": "MM_MCP_POST_FROM_VIEWS",
"format": "boolean",
"default": "true",
"description": "Where your app shows mm-mcp's views, a post the model proposes as your draft can be posted from the view with Post. Off, the draft waits in Mattermost for you to send."
},
{
"name": "MM_MCP_RESOURCE_MAX_MB",
"format": "number",
"default": "10",
"description": "The most one message carrying an attached file as an MCP resource holds, a binary file counted as its base64. MCP sends a resource whole, and a client drops a message past its own limit, 10 MB for clients built on the TypeScript SDK. A larger one is refused, and read_file or save_file reads it instead. 0 is no limit."
},
{
"name": "MM_TOKEN",
"format": "string",
"isSecret": true,
"description": "A personal access token or a bot token. Where those are switched off, leave it empty after logging in once with mm-mcp login --url <address> in a terminal, which keeps your session in the system's credential store."
},
{
"name": "MM_URL",
"format": "string",
"isRequired": true,
"description": "The address you open Mattermost at, such as https://chat.example.com."
}
]
},
{
"version": "0.4.0",
"transport": {
"type": "stdio"
},
"fileSha256": "c473c72864efb1a2c25454bb6126c693de29e09653e2af1fbfe958c32b8da947",
"identifier": "https://github.com/vriesdemichael/mm-mcp/releases/download/v0.4.0/mm-mcp_0.4.0_windows_amd64.mcpb",
"registryType": "mcpb",
"environmentVariables": [
{
"name": "MM_MCP_ALLOW_WRITES",
"format": "boolean",
"default": "false",
"description": "Offer the tools that post and change things. Your client's own approval of each call decides, and mm-mcp checks what each change others see states before it acts."
},
{
"name": "MM_MCP_CA_FILE",
"format": "filepath",
"description": "A PEM file of certificate authorities to trust beside your system's, for a Mattermost whose certificate your organisation signed itself. Leave it empty otherwise."
},
{
"name": "MM_MCP_DOWNLOAD_DIR",
"format": "filepath",
"description": "Where save_file writes attachments. Leave it empty for your Downloads directory."
},
{
"name": "MM_MCP_ELICITATION_OPT_IN",
"format": "boolean",
"default": "false",
"description": "Your client's own approval of each call decides whether a post or another change others see goes ahead, and mm-mcp checks what each states. Turn this on to have mm-mcp ask you too, through a question your client shows: a convenience where it shows it, not a safeguard, since some clients answer it themselves."
},
{
"name": "MM_MCP_FORCE_HUMAN_IN_THE_LOOP_IN_CLAUDE_CODE",
"format": "boolean",
"default": "false",
"description": "Not with mm-mcp asks as well: marks each tool that changes what others see so that Claude Code asks a person on every call, whatever its permission mode or rules allow. An agent cannot post on its own while it is on."
},
{
"name": "MM_MCP_MARK_AI_GENERATED",
"format": "boolean",
"default": "true",
"description": "Mark every post and edit the model writes with Mattermost's own marker for text written with AI."
},
{
"name": "MM_MCP_POST_FROM_VIEWS",
"format": "boolean",
"default": "true",
"description": "Where your app shows mm-mcp's views, a post the model proposes as your draft can be posted from the view with Post. Off, the draft waits in Mattermost for you to send."
},
{
"name": "MM_MCP_RESOURCE_MAX_MB",
"format": "number",
"default": "10",
"description": "The most one message carrying an attached file as an MCP resource holds, a binary file counted as its base64. MCP sends a resource whole, and a client drops a message past its own limit, 10 MB for clients built on the TypeScript SDK. A larger one is refused, and read_file or save_file reads it instead. 0 is no limit."
},
{
"name": "MM_TOKEN",
"format": "string",
"isSecret": true,
"description": "A personal access token or a bot token. Where those are switched off, leave it empty after logging in once with mm-mcp login --url <address> in a terminal, which keeps your session in the system's credential store."
},
{
"name": "MM_URL",
"format": "string",
"isRequired": true,
"description": "The address you open Mattermost at, such as https://chat.example.com."
}
]
},
{
"version": "0.4.0",
"transport": {
"type": "stdio"
},
"fileSha256": "5a37b08c0872877c233f43ed75ffd3dfad5920c9c4b6aa4245ddeae892896e20",
"identifier": "https://github.com/vriesdemichael/mm-mcp/releases/download/v0.4.0/mm-mcp_0.4.0_windows_arm64.mcpb",
"registryType": "mcpb",
"environmentVariables": [
{
"name": "MM_MCP_ALLOW_WRITES",
"format": "boolean",
"default": "false",
"description": "Offer the tools that post and change things. Your client's own approval of each call decides, and mm-mcp checks what each change others see states before it acts."
},
{
"name": "MM_MCP_CA_FILE",
"format": "filepath",
"description": "A PEM file of certificate authorities to trust beside your system's, for a Mattermost whose certificate your organisation signed itself. Leave it empty otherwise."
},
{
"name": "MM_MCP_DOWNLOAD_DIR",
"format": "filepath",
"description": "Where save_file writes attachments. Leave it empty for your Downloads directory."
},
{
"name": "MM_MCP_ELICITATION_OPT_IN",
"format": "boolean",
"default": "false",
"description": "Your client's own approval of each call decides whether a post or another change others see goes ahead, and mm-mcp checks what each states. Turn this on to have mm-mcp ask you too, through a question your client shows: a convenience where it shows it, not a safeguard, since some clients answer it themselves."
},
{
"name": "MM_MCP_FORCE_HUMAN_IN_THE_LOOP_IN_CLAUDE_CODE",
"format": "boolean",
"default": "false",
"description": "Not with mm-mcp asks as well: marks each tool that changes what others see so that Claude Code asks a person on every call, whatever its permission mode or rules allow. An agent cannot post on its own while it is on."
},
{
"name": "MM_MCP_MARK_AI_GENERATED",
"format": "boolean",
"default": "true",
"description": "Mark every post and edit the model writes with Mattermost's own marker for text written with AI."
},
{
"name": "MM_MCP_POST_FROM_VIEWS",
"format": "boolean",
"default": "true",
"description": "Where your app shows mm-mcp's views, a post the model proposes as your draft can be posted from the view with Post. Off, the draft waits in Mattermost for you to send."
},
{
"name": "MM_MCP_RESOURCE_MAX_MB",
"format": "number",
"default": "10",
"description": "The most one message carrying an attached file as an MCP resource holds, a binary file counted as its base64. MCP sends a resource whole, and a client drops a message past its own limit, 10 MB for clients built on the TypeScript SDK. A larger one is refused, and read_file or save_file reads it instead. 0 is no limit."
},
{
"name": "MM_TOKEN",
"format": "string",
"isSecret": true,
"description": "A personal access token or a bot token. Where those are switched off, leave it empty after logging in once with mm-mcp login --url <address> in a terminal, which keeps your session in the system's credential store."
},
{
"name": "MM_URL",
"format": "string",
"isRequired": true,
"description": "The address you open Mattermost at, such as https://chat.example.com."
}
]
}
],
"repository": {
"url": "https://github.com/vriesdemichael/mm-mcp",
"source": "github"
},
"description": "Read, search and post in Mattermost as yourself or a bot."
}
}