mattermost-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MATTERMOST_URL | No | Base URL of the Mattermost server, e.g. https://mattermost.example.com. | |
| MATTERMOST_CSRF | No | The MMCSRF browser session cookie value used to authenticate. | |
| MATTERMOST_TOKEN | No | The MMAUTHTOKEN browser session cookie value used to authenticate. | |
| MATTERMOST_USER_ID | No | Optional MMUSERID cookie value identifying the user. | |
| MATTERMOST_AUTH_HELP | No | Extra text added to the 401 error, e.g. how cookies are rotated in your setup. | |
| MATTERMOST_TRUST_ENV | No | Set to 0 to ignore HTTP(S)_PROXY/ALL_PROXY and connect to Mattermost directly. | 1 |
| MATTERMOST_COOKIE_TTL | No | Cookie cache lifetime in seconds. | 900 |
| MATTERMOST_COOKIE_HOST | No | ssh host alias whose cookie file is read (or `local` to read the file on this machine). Enables the cookie host source; unset by default (off). | |
| MATTERMOST_COOKIE_PATH | No | Path relative to $HOME on the cookie host to the KEY=VALUE cookie file. | .config/mattermost-mcp/cookie.env |
| MATTERMOST_COOKIE_CACHE | No | Local cache file (mode 0600) for cookies fetched from the cookie host. | ~/.cache/mattermost-mcp/cookie.cache |
| MATTERMOST_KEYCHAIN_SERVICE | No | Service name under which the OS keychain stores accounts url, token, csrf and user_id. | mattermost-mcp |
| MATTERMOST_COOKIE_SSH_TIMEOUT | No | ssh connect timeout in seconds when reading the cookie host file. | 10 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"subscribe": false,
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_channelsB | List all Mattermost channels the authenticated user is a member of. |
| get_channel_postsA | Get recent posts from a Mattermost channel, newest first. |
| get_threadB | Get a post and all its replies. |
| search_postsA | Full-text search across Mattermost posts, newest first. Supports Mattermost search syntax (from:username, in:channel-name, before:/after:/on:YYYY-MM-DD, "exact phrase", -excluded). By default skips channels the user has muted in the sidebar — pass include_muted=True to widen the search. |
| get_direct_messagesA | Get direct message history with a specific user, newest first. |
| get_mentionsA | Get posts that mention the authenticated user, newest first. Mentions in muted channels are included by default — mute hides unread badges, not @-mentions. Pass include_muted=False to exclude them. |
| get_unreadA | Get unread counts and mention badges per channel. By default skips channels muted in the sidebar (same behavior as the client unread badge). Pass include_muted=True to see every unread. |
| get_userA | Get a Mattermost user's profile by username. |
| get_meA | Get the authenticated user and what this server is allowed to do. Returns {id, username, first_name, last_name, email, status, nickname, position, auth_mode, write_enabled}. auth_mode is "token" or "cookie"; write_enabled tells whether posting/editing tools are available. |
| list_teamsA | List the teams the authenticated user belongs to. Returns list of {id, name, display_name}. |
| get_postB | Get a single post by ID. |
| get_channelA | Look up a channel by ID, or by its name (the URL slug, e.g. "town-square"). Pass channel_id, or name. With name alone, searches the channels you are a member of; add team_id or team_name to look up any channel in a team. Returns {id, name, display_name, type, team_id, header, purpose}. |
| search_usersA | Find users by username, full name, nickname or email prefix. |
| get_pinned_postsC | Get the posts pinned in a channel. |
| get_file_infoA | Get metadata of a file attached to a post (see a post's file_ids). The file content is not downloaded. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 15 tools
Each tool targets a distinct resource and retrieval path: single post (get_post), thread with replies (get_thread), channel history (get_channel_posts), DMs (get_direct_messages), mentions (get_mentions), and search (search_posts) are all clearly differentiated. Channel, user, and team lookups are similarly well-separated, leaving an agent little room for misselection.
Consistent snake_case with predictable verb_noun patterns: get_*, list_*, and search_* throughout. The only quirk, get_me, is an idiomatic convenience that still reads as a getter and doesn't break the pattern.
Fifteen tools is a natural fit for a chat workspace, spanning channels, users, teams, posts, search, and files. Every tool has a clear place and none look like filler.
Read coverage is thorough (posts, threads, channels, users, teams, files, search), but the surface is entirely read-only: there is no send_post, edit_post, delete_post, or channel-management operation. This is a notable gap for a messaging client, and get_me's write_enabled flag implies posting/editing tools are expected to exist.