Skip to main content
Glama
cloud-ru-tech

mcp-server-mattermost

mcp-server-mattermost

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

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

MCP Server PyPI version Docker Pulls Tests Python 3.10+ License: MIT Docs

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

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

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

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

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

Tool

Description

Key Parameters

list_teams

List your teams

get_team

Get team details

team_id

get_team_members

List team members

team_id

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

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.

Docker

Stdio mode (default)

docker run -i --rm \
  -e MATTERMOST_URL=https://your-mattermost.com \
  -e MATTERMOST_TOKEN=your-token \
  legard/mcp-server-mattermost
{
  "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 for guidelines.

License

MIT — see LICENSE for details.


Built with FastMCP · Mattermost API v4

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
7dResponse time
3wRelease cycle
6Releases (12mo)

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cloud-ru-tech/mcp-server-mattermost'

If you have feedback or need assistance with the MCP directory API, please join our Discord server