MCPLow riskUnclaimed
Mattermost
Read, search and post in Mattermost as yourself or a bot.
vriesdemichaelvriesdemichael/mm-mcp
server.json
{
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"name": "io.github.vriesdemichael/mm-mcp",
"description": "Read, search and post in Mattermost as yourself or a bot.",
"title": "Mattermost",
"repository": {
"url": "https://github.com/vriesdemichael/mm-mcp",
"source": "github"
},
"version": "0.3.0",
"packages": [
{
"registryType": "mcpb",
"identifier": "https://github.com/vriesdemichael/mm-mcp/releases/download/v0.3.0/mm-mcp_0.3.0_darwin_amd64.mcpb",
"version": "0.3.0",
"fileSha256": "c50ad9fd09aae9799dab3abfba622d1a8a692d8fa38a54c5873a2322ff4455e2",
"transport": {
"type": "stdio"
},
"environmentVariables": [
{
"description": "Offer the tools that post and change things. Each change others see asks you before it acts, which needs a client that shows MCP elicitation questions; following a thread, saving a post or a draft, reminders and typing do not ask.",
"format": "boolean",
"default": "false",
"name": "MM_MCP_ALLOW_WRITES"
},
{
"description": "mm-mcp asks you before each change others see. Turn it off only where your client does not show mm-mcp's question, and its own approval of each tool call is to be the check instead: a client that approves tools by itself then posts as you with nobody seeing it first.",
"format": "boolean",
"default": "true",
"name": "MM_MCP_ASK_BEFORE_WRITES"
},
{
"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.",
"format": "filepath",
"name": "MM_MCP_CA_FILE"
},
{
"description": "Where save_file writes attachments. Leave it empty for your Downloads directory.",
"format": "filepath",
"name": "MM_MCP_DOWNLOAD_DIR"
},
{
"description": "Only with Ask before posting off: 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.",
"format": "boolean",
"default": "false",
"name": "MM_MCP_FORCE_HUMAN_IN_THE_LOOP_IN_CLAUDE_CODE"
},
{
"description": "Mark every post and edit the model writes with Mattermost's own marker for text written with AI.",
"format": "boolean",
"default": "true",
"name": "MM_MCP_MARK_AI_GENERATED"
},
{
"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.",
"format": "string",
"isSecret": true,
"name": "MM_TOKEN"
},
{
"description": "The address you open Mattermost at, such as https://chat.example.com.",
"isRequired": true,
"format": "string",
"name": "MM_URL"
}
]
},
{
"registryType": "mcpb",
"identifier": "https://github.com/vriesdemichael/mm-mcp/releases/download/v0.3.0/mm-mcp_0.3.0_darwin_arm64.mcpb",
"version": "0.3.0",
"fileSha256": "eb448614e737b9a615ed254509859e3e91096ba58c772a0f6cbace545dc4cbae",
"transport": {
"type": "stdio"
},
"environmentVariables": [
{
"description": "Offer the tools that post and change things. Each change others see asks you before it acts, which needs a client that shows MCP elicitation questions; following a thread, saving a post or a draft, reminders and typing do not ask.",
"format": "boolean",
"default": "false",
"name": "MM_MCP_ALLOW_WRITES"
},
{
"description": "mm-mcp asks you before each change others see. Turn it off only where your client does not show mm-mcp's question, and its own approval of each tool call is to be the check instead: a client that approves tools by itself then posts as you with nobody seeing it first.",
"format": "boolean",
"default": "true",
"name": "MM_MCP_ASK_BEFORE_WRITES"
},
{
"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.",
"format": "filepath",
"name": "MM_MCP_CA_FILE"
},
{
"description": "Where save_file writes attachments. Leave it empty for your Downloads directory.",
"format": "filepath",
"name": "MM_MCP_DOWNLOAD_DIR"
},
{
"description": "Only with Ask before posting off: 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.",
"format": "boolean",
"default": "false",
"name": "MM_MCP_FORCE_HUMAN_IN_THE_LOOP_IN_CLAUDE_CODE"
},
{
"description": "Mark every post and edit the model writes with Mattermost's own marker for text written with AI.",
"format": "boolean",
"default": "true",
"name": "MM_MCP_MARK_AI_GENERATED"
},
{
"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.",
"format": "string",
"isSecret": true,
"name": "MM_TOKEN"
},
{
"description": "The address you open Mattermost at, such as https://chat.example.com.",
"isRequired": true,
"format": "string",
"name": "MM_URL"
}
]
},
{
"registryType": "mcpb",
"identifier": "https://github.com/vriesdemichael/mm-mcp/releases/download/v0.3.0/mm-mcp_0.3.0_linux_amd64.mcpb",
"version": "0.3.0",
"fileSha256": "daff2f0a53a81fd901319ac43ab4c1f13275fa69e7bf26355eb3460d641a0be3",
"transport": {
"type": "stdio"
},
"environmentVariables": [
{
"description": "Offer the tools that post and change things. Each change others see asks you before it acts, which needs a client that shows MCP elicitation questions; following a thread, saving a post or a draft, reminders and typing do not ask.",
"format": "boolean",
"default": "false",
"name": "MM_MCP_ALLOW_WRITES"
},
{
"description": "mm-mcp asks you before each change others see. Turn it off only where your client does not show mm-mcp's question, and its own approval of each tool call is to be the check instead: a client that approves tools by itself then posts as you with nobody seeing it first.",
"format": "boolean",
"default": "true",
"name": "MM_MCP_ASK_BEFORE_WRITES"
},
{
"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.",
"format": "filepath",
"name": "MM_MCP_CA_FILE"
},
{
"description": "Where save_file writes attachments. Leave it empty for your Downloads directory.",
"format": "filepath",
"name": "MM_MCP_DOWNLOAD_DIR"
},
{
"description": "Only with Ask before posting off: 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.",
"format": "boolean",
"default": "false",
"name": "MM_MCP_FORCE_HUMAN_IN_THE_LOOP_IN_CLAUDE_CODE"
},
{
"description": "Mark every post and edit the model writes with Mattermost's own marker for text written with AI.",
"format": "boolean",
"default": "true",
"name": "MM_MCP_MARK_AI_GENERATED"
},
{
"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.",
"format": "string",
"isSecret": true,
"name": "MM_TOKEN"
},
{
"description": "The address you open Mattermost at, such as https://chat.example.com.",
"isRequired": true,
"format": "string",
"name": "MM_URL"
}
]
},
{
"registryType": "mcpb",
"identifier": "https://github.com/vriesdemichael/mm-mcp/releases/download/v0.3.0/mm-mcp_0.3.0_linux_arm64.mcpb",
"version": "0.3.0",
"fileSha256": "39b29c773bbe4b20ec600c530296a84c9e04f34dffbba50c909a170904556d2d",
"transport": {
"type": "stdio"
},
"environmentVariables": [
{
"description": "Offer the tools that post and change things. Each change others see asks you before it acts, which needs a client that shows MCP elicitation questions; following a thread, saving a post or a draft, reminders and typing do not ask.",
"format": "boolean",
"default": "false",
"name": "MM_MCP_ALLOW_WRITES"
},
{
"description": "mm-mcp asks you before each change others see. Turn it off only where your client does not show mm-mcp's question, and its own approval of each tool call is to be the check instead: a client that approves tools by itself then posts as you with nobody seeing it first.",
"format": "boolean",
"default": "true",
"name": "MM_MCP_ASK_BEFORE_WRITES"
},
{
"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.",
"format": "filepath",
"name": "MM_MCP_CA_FILE"
},
{
"description": "Where save_file writes attachments. Leave it empty for your Downloads directory.",
"format": "filepath",
"name": "MM_MCP_DOWNLOAD_DIR"
},
{
"description": "Only with Ask before posting off: 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.",
"format": "boolean",
"default": "false",
"name": "MM_MCP_FORCE_HUMAN_IN_THE_LOOP_IN_CLAUDE_CODE"
},
{
"description": "Mark every post and edit the model writes with Mattermost's own marker for text written with AI.",
"format": "boolean",
"default": "true",
"name": "MM_MCP_MARK_AI_GENERATED"
},
{
"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.",
"format": "string",
"isSecret": true,
"name": "MM_TOKEN"
},
{
"description": "The address you open Mattermost at, such as https://chat.example.com.",
"isRequired": true,
"format": "string",
"name": "MM_URL"
}
]
},
{
"registryType": "mcpb",
"identifier": "https://github.com/vriesdemichael/mm-mcp/releases/download/v0.3.0/mm-mcp_0.3.0_windows_amd64.mcpb",
"version": "0.3.0",
"fileSha256": "6e25fafb57402473c1ebb4467dfc63949c6b89ae5015d4dc9f4bb4c8b412dc62",
"transport": {
"type": "stdio"
},
"environmentVariables": [
{
"description": "Offer the tools that post and change things. Each change others see asks you before it acts, which needs a client that shows MCP elicitation questions; following a thread, saving a post or a draft, reminders and typing do not ask.",
"format": "boolean",
"default": "false",
"name": "MM_MCP_ALLOW_WRITES"
},
{
"description": "mm-mcp asks you before each change others see. Turn it off only where your client does not show mm-mcp's question, and its own approval of each tool call is to be the check instead: a client that approves tools by itself then posts as you with nobody seeing it first.",
"format": "boolean",
"default": "true",
"name": "MM_MCP_ASK_BEFORE_WRITES"
},
{
"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.",
"format": "filepath",
"name": "MM_MCP_CA_FILE"
},
{
"description": "Where save_file writes attachments. Leave it empty for your Downloads directory.",
"format": "filepath",
"name": "MM_MCP_DOWNLOAD_DIR"
},
{
"description": "Only with Ask before posting off: 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.",
"format": "boolean",
"default": "false",
"name": "MM_MCP_FORCE_HUMAN_IN_THE_LOOP_IN_CLAUDE_CODE"
},
{
"description": "Mark every post and edit the model writes with Mattermost's own marker for text written with AI.",
"format": "boolean",
"default": "true",
"name": "MM_MCP_MARK_AI_GENERATED"
},
{
"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.",
"format": "string",
"isSecret": true,
"name": "MM_TOKEN"
},
{
"description": "The address you open Mattermost at, such as https://chat.example.com.",
"isRequired": true,
"format": "string",
"name": "MM_URL"
}
]
},
{
"registryType": "mcpb",
"identifier": "https://github.com/vriesdemichael/mm-mcp/releases/download/v0.3.0/mm-mcp_0.3.0_windows_arm64.mcpb",
"version": "0.3.0",
"fileSha256": "65d1ff930935ce1ba171f649dc5e19491f4bebdbb1c018bed6f001ad7ed77afa",
"transport": {
"type": "stdio"
},
"environmentVariables": [
{
"description": "Offer the tools that post and change things. Each change others see asks you before it acts, which needs a client that shows MCP elicitation questions; following a thread, saving a post or a draft, reminders and typing do not ask.",
"format": "boolean",
"default": "false",
"name": "MM_MCP_ALLOW_WRITES"
},
{
"description": "mm-mcp asks you before each change others see. Turn it off only where your client does not show mm-mcp's question, and its own approval of each tool call is to be the check instead: a client that approves tools by itself then posts as you with nobody seeing it first.",
"format": "boolean",
"default": "true",
"name": "MM_MCP_ASK_BEFORE_WRITES"
},
{
"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.",
"format": "filepath",
"name": "MM_MCP_CA_FILE"
},
{
"description": "Where save_file writes attachments. Leave it empty for your Downloads directory.",
"format": "filepath",
"name": "MM_MCP_DOWNLOAD_DIR"
},
{
"description": "Only with Ask before posting off: 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.",
"format": "boolean",
"default": "false",
"name": "MM_MCP_FORCE_HUMAN_IN_THE_LOOP_IN_CLAUDE_CODE"
},
{
"description": "Mark every post and edit the model writes with Mattermost's own marker for text written with AI.",
"format": "boolean",
"default": "true",
"name": "MM_MCP_MARK_AI_GENERATED"
},
{
"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.",
"format": "string",
"isSecret": true,
"name": "MM_TOKEN"
},
{
"description": "The address you open Mattermost at, such as https://chat.example.com.",
"isRequired": true,
"format": "string",
"name": "MM_URL"
}
]
}
]
}Permissions
DeclaredDetected
Runs code—
bundleInstalls—
mcpb:https://github.com/vriesdemichael/mm-mcp/releases/download/v0.3.0/mm-mcp_0.3.0_darwin_amd64.mcpb@0.3.0mcpb:https://github.com/vriesdemichael/mm-mcp/releases/download/v0.3.0/mm-mcp_0.3.0_darwin_arm64.mcpb@0.3.0mcpb:https://github.com/vriesdemichael/mm-mcp/releases/download/v0.3.0/mm-mcp_0.3.0_linux_amd64.mcpb@0.3.0mcpb:https://github.com/vriesdemichael/mm-mcp/releases/download/v0.3.0/mm-mcp_0.3.0_linux_arm64.mcpb@0.3.0mcpb:https://github.com/vriesdemichael/mm-mcp/releases/download/v0.3.0/mm-mcp_0.3.0_windows_amd64.mcpb@0.3.0mcpb:https://github.com/vriesdemichael/mm-mcp/releases/download/v0.3.0/mm-mcp_0.3.0_windows_arm64.mcpb@0.3.0Runs install scripts—None
NetworkNoneNone
Needs credentials
MM_TOKENMM_TOKENOutside the workspace—None
Agent tools—None
Checks
Low risk · Nothing worth a warning was found.
Not reviewed by a person · Checked by rules; the model review is not switched on yet.
Versions
- #30.3.0latestOct 9, 2026
- #20.2.0Oct 8, 2026
- #10.1.0Oct 7, 2026
MattermostOpen in Codeg