Read, search and post in Mattermost as yourself or a bot.
Connect Runs on your machine
claude mcp add mm-mcp -e MM_MCP_ALLOW_WRITES=<MM_MCP_ALLOW_WRITES> -e MM_MCP_CA_FILE=<MM_MCP_CA_FILE> -e MM_MCP_DOWNLOAD_DIR=<MM_MCP_DOWNLOAD_DIR> -e MM_MCP_ELICITATION_OPT_IN=<MM_MCP_ELICITATION_OPT_IN> -e MM_MCP_FORCE_HUMAN_IN_THE_LOOP_IN_CLAUDE_CODE=<MM_MCP_FORCE_HUMAN_IN_THE_LOOP_IN_CLAUDE_CODE> -e MM_MCP_MARK_AI_GENERATED=<MM_MCP_MARK_AI_GENERATED> -e MM_MCP_POST_FROM_VIEWS=<MM_MCP_POST_FROM_VIEWS> -e MM_MCP_RESOURCE_MAX_MB=<MM_MCP_RESOURCE_MAX_MB> -e MM_TOKEN=<MM_TOKEN> -e MM_URL=<MM_URL> -- https://github.com/vriesdemichael/mm-mcp/releases/download/v0.4.1/mm-mcp_0.4.1_darwin_amd64.mcpb
{
"mcpServers": {
"mm-mcp": {
"command": "https://github.com/vriesdemichael/mm-mcp/releases/download/v0.4.1/mm-mcp_0.4.1_darwin_amd64.mcpb",
"args": [],
"env": {
"MM_MCP_ALLOW_WRITES": "<MM_MCP_ALLOW_WRITES>",
"MM_MCP_CA_FILE": "<MM_MCP_CA_FILE>",
"MM_MCP_DOWNLOAD_DIR": "<MM_MCP_DOWNLOAD_DIR>",
"MM_MCP_ELICITATION_OPT_IN": "<MM_MCP_ELICITATION_OPT_IN>",
"MM_MCP_FORCE_HUMAN_IN_THE_LOOP_IN_CLAUDE_CODE": "<MM_MCP_FORCE_HUMAN_IN_THE_LOOP_IN_CLAUDE_CODE>",
"MM_MCP_MARK_AI_GENERATED": "<MM_MCP_MARK_AI_GENERATED>",
"MM_MCP_POST_FROM_VIEWS": "<MM_MCP_POST_FROM_VIEWS>",
"MM_MCP_RESOURCE_MAX_MB": "<MM_MCP_RESOURCE_MAX_MB>",
"MM_TOKEN": "<MM_TOKEN>",
"MM_URL": "<MM_URL>"
}
}
}
}
{
"mcpServers": {
"mm-mcp": {
"command": "https://github.com/vriesdemichael/mm-mcp/releases/download/v0.4.1/mm-mcp_0.4.1_darwin_amd64.mcpb",
"args": [],
"env": {
"MM_MCP_ALLOW_WRITES": "<MM_MCP_ALLOW_WRITES>",
"MM_MCP_CA_FILE": "<MM_MCP_CA_FILE>",
"MM_MCP_DOWNLOAD_DIR": "<MM_MCP_DOWNLOAD_DIR>",
"MM_MCP_ELICITATION_OPT_IN": "<MM_MCP_ELICITATION_OPT_IN>",
"MM_MCP_FORCE_HUMAN_IN_THE_LOOP_IN_CLAUDE_CODE": "<MM_MCP_FORCE_HUMAN_IN_THE_LOOP_IN_CLAUDE_CODE>",
"MM_MCP_MARK_AI_GENERATED": "<MM_MCP_MARK_AI_GENERATED>",
"MM_MCP_POST_FROM_VIEWS": "<MM_MCP_POST_FROM_VIEWS>",
"MM_MCP_RESOURCE_MAX_MB": "<MM_MCP_RESOURCE_MAX_MB>",
"MM_TOKEN": "<MM_TOKEN>",
"MM_URL": "<MM_URL>"
}
}
}
}
{
"servers": {
"mm-mcp": {
"type": "stdio",
"command": "https://github.com/vriesdemichael/mm-mcp/releases/download/v0.4.1/mm-mcp_0.4.1_darwin_amd64.mcpb",
"args": [],
"env": {
"MM_MCP_ALLOW_WRITES": "<MM_MCP_ALLOW_WRITES>",
"MM_MCP_CA_FILE": "<MM_MCP_CA_FILE>",
"MM_MCP_DOWNLOAD_DIR": "<MM_MCP_DOWNLOAD_DIR>",
"MM_MCP_ELICITATION_OPT_IN": "<MM_MCP_ELICITATION_OPT_IN>",
"MM_MCP_FORCE_HUMAN_IN_THE_LOOP_IN_CLAUDE_CODE": "<MM_MCP_FORCE_HUMAN_IN_THE_LOOP_IN_CLAUDE_CODE>",
"MM_MCP_MARK_AI_GENERATED": "<MM_MCP_MARK_AI_GENERATED>",
"MM_MCP_POST_FROM_VIEWS": "<MM_MCP_POST_FROM_VIEWS>",
"MM_MCP_RESOURCE_MAX_MB": "<MM_MCP_RESOURCE_MAX_MB>",
"MM_TOKEN": "<MM_TOKEN>",
"MM_URL": "<MM_URL>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
MM_MCP_ALLOW_WRITESOptional | 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. |
MM_MCP_CA_FILEOptional | 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. |
MM_MCP_DOWNLOAD_DIROptional | Where save_file writes attachments. Leave it empty for your Downloads directory. |
MM_MCP_ELICITATION_OPT_INOptional | 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 t… |
MM_MCP_FORCE_HUMAN_IN_THE_LOOP_IN_CLAUDE_CODEOptional | 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. |
MM_MCP_MARK_AI_GENERATEDOptional | Mark every post and edit the model writes with Mattermost's own marker for text written with AI. |
MM_MCP_POST_FROM_VIEWSOptional | 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. |
MM_MCP_RESOURCE_MAX_MBOptional | 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 inst… |
MM_TOKENOptional, secret | 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. |
MM_URLRequired | The address you open Mattermost at, such as https://chat.example.com. |
Details
| Package | https://github.com/vriesdemichael/mm-mcp/releases/download/v0.4.1/[email protected] (MCPB, stdio) |
| Package | https://github.com/vriesdemichael/mm-mcp/releases/download/v0.4.1/[email protected] (MCPB, stdio) |
| Package | https://github.com/vriesdemichael/mm-mcp/releases/download/v0.4.1/[email protected] (MCPB, stdio) |
| Package | https://github.com/vriesdemichael/mm-mcp/releases/download/v0.4.1/[email protected] (MCPB, stdio) |
| Package | https://github.com/vriesdemichael/mm-mcp/releases/download/v0.4.1/[email protected] (MCPB, stdio) |
| Package | https://github.com/vriesdemichael/mm-mcp/releases/download/v0.4.1/[email protected] (MCPB, stdio) |
| First published | 30 Oct 2026 |
| Last updated | 30 Oct 2026 |
| Registry name | io.github.vriesdemichael/mm-mcp |
More search and web servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
