# Mattermost

> Self-hosted Slack alternative — read and post from an AI agent.

[Canonical HTML page](https://top-mcps.com/mcp/mattermost) · [server.json](https://top-mcps.com/mcp/mattermost.json) · [methodology](https://top-mcps.com/about/methodology)

## Install

### Claude Desktop — `claude_desktop_config.json`

Paste under mcpServers. Fully quit and reopen Claude after editing.

```json
{
  "mcpServers": {
    "mattermost": {
      "command": "npx",
      "args": [
        "-y",
        "@conarti/mattermost-mcp"
      ],
      "env": {
        "MATTERMOST_URL": "${MATTERMOST_URL}",
        "MATTERMOST_TOKEN": "${MATTERMOST_TOKEN}"
      }
    }
  }
}
```

### Claude Code — `CLI or .mcp.json`

Run from your repo. Commit .mcp.json to share with your team.

```shell
# export MATTERMOST_URL=https://chat.example.com
# export MATTERMOST_TOKEN=your-personal-access-token
claude mcp add mattermost -- npx -y @conarti/mattermost-mcp
```

### Cursor — `.cursor/mcp.json`

Global path: ~/.cursor/mcp.json. Reload window after editing.

```json
{
  "mcpServers": {
    "mattermost": {
      "command": "npx",
      "args": [
        "-y",
        "@conarti/mattermost-mcp"
      ],
      "env": {
        "MATTERMOST_URL": "${MATTERMOST_URL}",
        "MATTERMOST_TOKEN": "${MATTERMOST_TOKEN}"
      }
    }
  }
}
```

### VS Code — `.vscode/mcp.json`

VS Code uses the "servers" key (not "mcpServers").

```jsonc
{
  "servers": {
    "mattermost": {
      "command": "npx",
      "args": [
        "-y",
        "@conarti/mattermost-mcp"
      ],
      "env": {
        "MATTERMOST_URL": "${MATTERMOST_URL}",
        "MATTERMOST_TOKEN": "${MATTERMOST_TOKEN}"
      }
    }
  }
}
```

### Windsurf — `~/.codeium/windsurf/mcp_config.json`

Open via Cascade → hammer icon → Configure.

```json
{
  "mcpServers": {
    "mattermost": {
      "command": "npx",
      "args": [
        "-y",
        "@conarti/mattermost-mcp"
      ],
      "env": {
        "MATTERMOST_URL": "${MATTERMOST_URL}",
        "MATTERMOST_TOKEN": "${MATTERMOST_TOKEN}"
      }
    }
  }
}
```

### Cline — `cline_mcp_settings.json`

Open via the Cline sidebar → MCP Servers → Edit.

```json
{
  "mcpServers": {
    "mattermost": {
      "command": "npx",
      "args": [
        "-y",
        "@conarti/mattermost-mcp"
      ],
      "env": {
        "MATTERMOST_URL": "${MATTERMOST_URL}",
        "MATTERMOST_TOKEN": "${MATTERMOST_TOKEN}"
      }
    }
  }
}
```

### Continue — `~/.continue/config.json`

Continue uses modelContextProtocolServers with a transport block.

```json
{
  "experimental": {
    "modelContextProtocolServers": [
      {
        "transport": {
          "type": "stdio",
          "command": "npx",
          "args": [
            "-y",
            "@conarti/mattermost-mcp"
          ],
          "env": {
            "MATTERMOST_URL": "${MATTERMOST_URL}",
            "MATTERMOST_TOKEN": "${MATTERMOST_TOKEN}"
          }
        }
      }
    ]
  }
}
```

### Codex CLI — `~/.codex/config.toml`

Codex uses TOML. Each server is a [mcp_servers.<name>] subtable.

```shell
# ~/.codex/config.toml
[mcp_servers.mattermost]
command = "npx"
args = [
  "-y",
  "@conarti/mattermost-mcp",
]
env = { MATTERMOST_URL = "${MATTERMOST_URL}", MATTERMOST_TOKEN = "${MATTERMOST_TOKEN}" }
```

### Zed — `~/.config/zed/settings.json`

Zed calls them "context_servers". Settings live-reload on save.

```jsonc
{
  "context_servers": {
    "mattermost": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "@conarti/mattermost-mcp"
        ]
      },
      "env": {
        "MATTERMOST_URL": "${MATTERMOST_URL}",
        "MATTERMOST_TOKEN": "${MATTERMOST_TOKEN}"
      }
    }
  }
}
```

### ChatGPT — `ChatGPT → Apps directory`

Mattermost doesn't ship a hosted HTTPS endpoint today. ChatGPT supports remote MCP servers only — to use this server in ChatGPT you'll need to deploy it to a public HTTPS URL first (e.g. via Cloudflare Workers or Vercel) or wait for an official remote build.

```none

```

## At a glance

- **Maintainer:** Community (conarti)
- **Transport:** stdio
- **Auth model:** API key
- **Required secrets:** MATTERMOST_URL, MATTERMOST_TOKEN
- **Supported clients:** Claude, Cursor, VS Code, Any MCP-compatible client, Mattermost 7+
- **License:** Apache-2.0
- **Language:** TypeScript
- **Latest version:** latest
- **Last verified:** 2026-05-31
- **GitHub stars:** 2 (fetched 2026-06-02T11:55:52.581Z)
- **Score:** 55/100 (rubric 2026-04 — see https://top-mcps.com/about/methodology)
- **Source:** https://github.com/conarti/mattermost-mcp

## Security & scope

- **Access scope:** network
- **Sandbox:** Personal access token or bot token in env. Token inherits the issuing identity's permissions; use a dedicated bot account scoped to only the channels the agent should access.
- **Gotchas:**
  - Personal access tokens carry the issuing user's permissions — a privileged user's token is dangerous in agent loops.
  - Mattermost admins can disable PAT issuance — coordinate with admin before relying on it.
  - Self-hosted instances may use self-signed TLS certs; the MCP rejects them by default. Configure trust explicitly.

## Quick answer

**What it does.** Connects to a Mattermost server and exposes channel + team enumeration, message posting and reading, and reaction/thread support.

**Best for:**
- Self-hosted chat automation
- Data-residency-constrained agent flows
- Channel summarisation
- Bot-style replies

**Not for:**
- Teams on Slack or MS Teams
- High-throughput marketing flows

## Description

A community-maintained MCP for Mattermost, the open-source self-hosted Slack alternative. Read channels, post messages, list teams, and respond to slash commands. The auth model and capability surface mirror the Slack MCP so teams that picked Mattermost for data-residency reasons can adopt agent workflows without re-architecting.

## Why it matters

Many regulated or sovereignty-conscious teams chose Mattermost over Slack for data residency. Same workflow needs; same MCP shape.

## Key features

- Self-hosted + Cloud support
- Personal access token or bot account
- Channel + team enumeration
- Threaded replies + reactions
- WebSocket-based event subscription

## FAQ

### Personal token vs bot account?

Either works. Bot accounts are preferred for production agent use — they show up as bots and have their own permission set, which keeps the audit trail clean.

### Does it stream events?

Yes via the Mattermost WebSocket API. The MCP exposes a subscribe-and-poll loop the agent can use for real-time message handling.

### Threading?

Full threading support — reply to a parent post by including parent_id in the post payload. Reactions follow the same pattern.

### Mattermost Cloud or self-hosted only?

Both. The API contract is the same; pass the matching URL.

## Changelog

- **2026-05-31** — Refreshed install snippets and fact sheet; verified for 2026.
- **2025-03-30** — Initial directory listing.
