AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
MCP verified MIT Self-run

Mcp Server Mattermost

mcp-cloud-ru-tech-mcp-server-mattermost · by cloud-ru-tech

MCP server for Mattermost — let Claude, Cursor, and other AI assistants work with channels, messages, and files

No reviews yet
0 installs
0 views
view→install

Install

$ agentstack add mcp-cloud-ru-tech-mcp-server-mattermost

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access Used
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/mcp-cloud-ru-tech-mcp-server-mattermost)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
2mo ago

Declared compatibility

Claude CodeClaude DesktopCursorWindsurf

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Mcp Server Mattermost? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

mcp-server-mattermost

Let AI assistants read, search, and post in your Mattermost workspace

38 tools · Channels · Messages · Reactions · Threads · Files · Users

[](https://modelcontextprotocol.io/) [](https://pypi.org/project/mcp-server-mattermost/) [](https://hub.docker.com/r/legard/mcp-server-mattermost) [](https://github.com/cloud-ru-tech/mcp-server-mattermost/actions) [](https://www.python.org/downloads/) [](https://opensource.org/licenses/MIT) [](https://mcp-server-mattermost.readthedocs.io/)

Features

Channels — list, create, join, manage channels and DMs Messages — send, search, edit, delete with rich attachments Reactions & Threads — emoji reactions, pins, full thread history Users & Teams — lookup, search, status Files — upload, metadata, download links Bookmarks — save links and files in channels (Entry+ edition)

Example Queries

Once configured, you can ask your AI assistant:

  • "List all channels and find where the deployment discussion is happening"
  • "What did I miss in #engineering since yesterday morning?"
  • "Show me my unread channels and summarize the threads I was mentioned in"
  • "Send a build status alert to #engineering with a red attachment"
  • "Search for messages about the outage last week and summarize"
  • "Summarize this thread and post the key decisions"
  • "Find who worked on the authentication bug last week"
  • "Upload the report.pdf to #general and share the link"

Available Tools

Channels (11 tools)

| Tool | Description | Key Parameters | |------|-------------|----------------| | list_public_channels | List public channels in a team | team_id ✓ | | list_my_channels | List your channels with unread counts | team_id ✓, only_unread | | get_channel | Get channel details by ID | channel_id ✓ | | get_channel_by_name | Get channel by name | team_id, channel_name ✓ | | create_channel | Create a new channel | team_id, name, display_name ✓ | | join_channel | Join a public channel | channel_id ✓ | | leave_channel | Leave a channel | channel_id ✓ | | mark_channel_viewed | Mark a channel as viewed (reset unread counters) | channel_id ✓ | | get_channel_members | List channel members | channel_id ✓ | | add_user_to_channel | Add user to channel | channel_id, user_id ✓ | | create_direct_channel | Create DM channel | user_id_1, user_id_2 ✓ |

Messages (5 tools)

| Tool | Description | Key Parameters | |------|-------------|----------------| | post_message | Send a message to a channel | channel_id, message ✓, attachments | | get_channel_messages | Get messages: recent, unread window, or since timestamp | channel_id ✓, unread_only, since | | search_messages | Search messages by term | team_id, terms ✓ | | update_message | Edit a message | post_id, message ✓, attachments | | delete_message | Delete a message | post_id ✓ |

Reactions & Threads (6 tools)

| Tool | Description | Key Parameters | |------|-------------|----------------| | add_reaction | Add emoji reaction | post_id, emoji_name ✓ | | remove_reaction | Remove emoji reaction | post_id, emoji_name ✓ | | get_reactions | Get all reactions on a post | post_id ✓ | | pin_message | Pin a message | post_id ✓ | | unpin_message | Unpin a message | post_id ✓ | | get_thread | Get thread messages | post_id ✓ |

Users (5 tools)

| Tool | Description | Key Parameters | |------|-------------|----------------| | get_me | Get current user info | — | | get_user | Get user by ID | user_id ✓ | | get_user_by_username | Get user by username | username ✓ | | search_users | Search users | term ✓ | | get_user_status | Get online status | user_id ✓ |

Teams (3 tools)

| Tool | Description | Key Parameters | |------|-------------|----------------| | list_teams | List your teams | — | | get_team | Get team details | team_id ✓ | | get_team_members | List team members | team_id ✓ |

Files (3 tools)

| Tool | Description | Key Parameters | |------|-------------|----------------| | upload_file | Upload a file | channel_id, file_path ✓ | | get_file_info | Get file metadata | file_id ✓ | | get_file_link | Get download link | file_id ✓ |

Bookmarks (5 tools) — Requires Entry+ edition

> Note: Requires Entry, Professional, Enterprise, or Enterprise Advanced edition > (not available in Team Edition). Minimum version: v10.1.

| Tool | Description | Key Parameters | |------|-------------|----------------| | list_bookmarks | List channel bookmarks | channel_id ✓ | | create_bookmark | Create link or file bookmark | channel_id, display_name, bookmark_type ✓ | | update_bookmark | Update bookmark properties | channel_id, bookmark_id ✓ | | delete_bookmark | Delete a bookmark | channel_id, bookmark_id ✓ | | update_bookmark_sort_order | Reorder bookmark | channel_id, bookmark_id, new_sort_order ✓ |

Quick Start

  1. Get a Mattermost bot token
  2. Add to your MCP client config:
{
  "mcpServers": {
    "mattermost": {
      "command": "uvx",
      "args": ["mcp-server-mattermost"],
      "env": {
        "MATTERMOST_URL": "https://your-server.com",
        "MATTERMOST_TOKEN": "your-token"
      }
    }
  }
}
  1. Restart your client

> Full setup guide — Claude Desktop, Cursor, Claude Code, Opencode, Docker, pip

Configuration

| Variable | Required | Default | Description | |----------|----------|---------|-------------| | MATTERMOST_URL | Yes | — | Mattermost server URL | | MATTERMOST_AUTH_MODE | No | static_token | Auth mode: static_token, client_token, or oauth_proxy | | MATTERMOST_TOKEN | Conditional | — | Bot or personal token. Required for static_token. | | MATTERMOST_TIMEOUT | No | 30 | Request timeout in seconds | | MATTERMOST_MAX_RETRIES | No | 3 | Max retry attempts | | MATTERMOST_VERIFY_SSL | No | true | Verify SSL certificates | | MATTERMOST_LOG_LEVEL | No | INFO | Logging level | | MATTERMOST_LOG_FORMAT | No | json | Log output format: json or text | | MATTERMOST_API_VERSION | No | v4 | Mattermost API version |

For client_token and oauth_proxy modes — including Mattermost OAuth App registration, all MATTERMOST_OAUTH_* settings, and MCP client connection — see [Authentication](docs/authentication.md).

Docker

Stdio mode (default)

docker run -i --rm \
  -e MATTERMOST_URL=https://your-mattermost.com \
  -e MATTERMOST_TOKEN=your-token \
  legard/mcp-server-mattermost

Claude Desktop config

{
  "mcpServers": {
    "mattermost": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "MATTERMOST_URL=https://your-mattermost.com",
        "-e", "MATTERMOST_TOKEN=your-token",
        "legard/mcp-server-mattermost"
      ]
    }
  }
}

HTTP mode (production)

docker run -d -p 8000:8000 \
  -e MCP_TRANSPORT=http \
  -e MCP_HOST=0.0.0.0 \
  -e MATTERMOST_URL=https://your-mattermost.com \
  -e MATTERMOST_TOKEN=your-token \
  legard/mcp-server-mattermost

Health check: curl http://localhost:8000/health

HTTP mode with Mattermost OAuth proxy

Register a Mattermost OAuth 2.0 Application first:

| Mattermost field | Production value | |------------------|------------------| | Is Trusted | Yes | | Is Public Client | No | | Callback URLs | https://mcp.example.com/oauth/callback/mm |

Then run the MCP server:

docker run -d -p 8000:8000 \
  -e MCP_TRANSPORT=http \
  -e MCP_HOST=0.0.0.0 \
  -e MATTERMOST_AUTH_MODE=oauth_proxy \
  -e MATTERMOST_URL=https://mattermost.internal \
  -e MATTERMOST_OAUTH_MATTERMOST_PUBLIC_URL=https://mattermost.example.com \
  -e MATTERMOST_OAUTH_MCP_PUBLIC_URL=https://mcp.example.com \
  -e MATTERMOST_OAUTH_CLIENT_ID=your-mattermost-oauth-app-id \
  -e MATTERMOST_OAUTH_CLIENT_TYPE=confidential \
  -e MATTERMOST_OAUTH_CLIENT_SECRET=your-mattermost-oauth-app-secret \
  legard/mcp-server-mattermost

If your Mattermost login uses Keycloak SSO, users authenticate through Keycloak inside the Mattermost OAuth login flow. The MCP server does not need a Keycloak client.

Connect Claude Code with Dynamic Client Registration:

claude mcp add --transport http mattermost https://mcp.example.com/mcp

Do not pass --client-id for this server; the MCP client registers with the MCP server, and the MCP server uses the fixed Mattermost OAuth App upstream.

Environment Variables (Docker)

| Variable | Default | Description | |----------|---------|-------------| | MCP_TRANSPORT | stdio | Transport: stdio or http | | MCP_HOST | 127.0.0.1 | HTTP bind host (use 0.0.0.0 in Docker) | | MCP_PORT | 8000 | HTTP port |

Documentation

📖 mcp-server-mattermost.readthedocs.io

Development

# Clone and install
git clone https://github.com/cloud-ru-tech/mcp-server-mattermost
cd mcp-server-mattermost
uv sync --dev

# Run unit tests
uv run pytest

# Run integration tests (requires Docker or external Mattermost)
uv run pytest tests/integration -v

# Type checking
uv run mypy src/

# Linting
uv run ruff check src/ tests/

# Run locally
MATTERMOST_URL=https://... MATTERMOST_TOKEN=... uv run mcp-server-mattermost

Integration Tests

Integration tests run against a real Mattermost server via Docker (Testcontainers) or external server.

# With Docker (Testcontainers) — automatic setup
uv run pytest tests/integration -v

# Against external Mattermost server
export MATTERMOST_URL=https://your-server.com
export MATTERMOST_TOKEN=your-bot-token
uv run pytest tests/integration -v

# Run specific test module
uv run pytest tests/integration/test_channels.py -v

Integration tests are excluded from the default pytest run. Unit tests run with:

uv run pytest  # Unit tests only

Debugging

Use the MCP Inspector to debug:

npx @modelcontextprotocol/inspector uvx mcp-server-mattermost

Contributing

Contributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.

License

MIT — see [LICENSE](LICENSE) for details.


Built with FastMCP · Mattermost API v4

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.