Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
제작자가 쓴 설명(영어 원문)
Mattermost: read unreads, mentions, channels and threads; opt-in posting, edits, reactions
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
MATTERMOST_URL, MATTERMOST_ACCESS_TOKEN, MATTERMOST_ENABLE_WRITE, MATTERMOST_TOKEN, MATTERMOST_CSRF비밀로 표시된 값은 내 계정의 열쇠예요. 절대 다른 사람과 공유하거나 채팅에 붙여 넣지 마세요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요
{
"mcpServers": {
"mattermost": {
"command": "uvx",
"args": [
"mattermost-mcp-server"
],
"env": {
"MATTERMOST_URL": "your-value",
"MATTERMOST_ACCESS_TOKEN": "your-value",
"MATTERMOST_ENABLE_WRITE": "your-value",
"MATTERMOST_TOKEN": "your-value",
"MATTERMOST_CSRF": "your-value"
}
}
}
}터미널에서 이 명령어를 실행하세요
claude mcp add mattermost --env MATTERMOST_URL=your-value --env MATTERMOST_ACCESS_TOKEN=your-value --env MATTERMOST_ENABLE_WRITE=your-value --env MATTERMOST_TOKEN=your-value --env MATTERMOST_CSRF=your-value -- uvx mattermost-mcp-server실행하기 전에 빈 값을 채워 주세요.
프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"mattermost": {
"command": "uvx",
"args": [
"mattermost-mcp-server"
],
"env": {
"MATTERMOST_URL": "your-value",
"MATTERMOST_ACCESS_TOKEN": "your-value",
"MATTERMOST_ENABLE_WRITE": "your-value",
"MATTERMOST_TOKEN": "your-value",
"MATTERMOST_CSRF": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"mattermost": {
"type": "stdio",
"command": "uvx",
"args": [
"mattermost-mcp-server"
],
"env": {
"MATTERMOST_URL": "your-value",
"MATTERMOST_ACCESS_TOKEN": "your-value",
"MATTERMOST_ENABLE_WRITE": "your-value",
"MATTERMOST_TOKEN": "your-value",
"MATTERMOST_CSRF": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
MATTERMOST_ENABLE_WRITE env이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검
레지스트리 이름이 GitHub 계정 toffguy77 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
입력해야 할 값: MATTERMOST_URL, MATTERMOST_ACCESS_TOKEN, MATTERMOST_TOKEN, MATTERMOST_CSRF
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(1.1.0)은 4일 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Python (uv)도 있어야 해요.
같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, Claude Checkpoint MCP
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
MCP server that checkpoints Claude Code session context to survive crashes and token limits
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
A Model Context Protocol server for Mattermost. It lets an AI agent (Claude, Cursor, VS Code, any MCP client) catch up on your unreads and mentions, read channels, threads and DMs, and search. If you switch write mode on, the agent can also post, reply, send DMs, edit its own messages and react.
MATTERMOST_ENABLE_WRITE=1. Even then, the agent can only edit posts written by your own account.mattermost-mcp-server login: sign in once in a browser window and the server picks up the session cookies itself, and picks them up again when they expire.Claude Code
claude mcp add mattermost \
-e MATTERMOST_URL=https://mattermost.example.com \ -e MATTERMOST_ACCESS_TOKEN=your-token \ -- uvx mattermost-mcp-server
Claude Desktop (claude_desktop_config.json), Cursor (~/.cursor/mcp.json) and other clients that use mcpServers:
{
"mcpServers": { "mattermost": { "command": "uvx", "args": ["mattermost-mcp-server"], "env": { "MATTERMOST_URL": "https://mattermost.example.com", "MATTERMOST_ACCESS_TOKEN": "your-token" } } } }
VS Code (.vscode/mcp.json):
{
"inputs": [ { "type": "promptString", "id": "mm-token", "description": "Mattermost access token", "password": true } ], "servers": { "mattermost": { "command": "uvx", "args": ["mattermost-mcp-server"], "env": { "MATTERMOST_URL": "https://mattermost.example.com", "MATTERMOST_ACCESS_TOKEN": "${input:mm-token}" } } } }
Then try asking: *"What did I miss in Mattermost today?"* or *"Summarize the thread about the release in #engineering."*
To let the agent post, add "MATTERMOST_ENABLE_WRITE": "1" to env (see Write mode).
| Tool | Kind | What it does |
|---|---|---|
get_unread | read | Unread and mention counts per channel; skips muted channels by default, like the client badge |
get_mentions | read | Posts that mention you, newest first; since, limit |
list_channels | read | Your channels with unread_count, mute state and sidebar category; filter by team, category, DMs, muted |
get_channel_posts | read | Recent posts in a channel; since (ISO 8601) or before (post ID) to page back |
get_thread | read | A root post and all its replies |
search_posts | read | Full-text search with Mattermost syntax (from:, in:, after:…), optionally scoped to one channel or a sidebar category; skips muted channels by default |
get_direct_messages | read | DM history with a user; since, before |
get_user | read | A user's profile by username |
search_users | read | Find users by name, username or email prefix |
get_me | read | Your profile, the auth mode, and whether write mode is on |
list_teams | read | Your teams |
get_post | read | One post by ID |
get_channel | read | A channel by ID or by name (town-square), with header and purpose |
get_pinned_posts | read | Pinned posts of a channel |
get_file_info | read | Name, type and size of an attached file (content is not downloaded) |
create_post | write | Post in a channel, or reply in a thread with root_id |
send_direct_message | write | DM a user by username |
update_post | write | Edit one of your own posts; refuses anyone else's |
add_reaction | write | React with an emoji (thumbsup or :thumbsup:) |
remove_reaction | write | Remove your reaction; no error if it was not there |
Every tool carries MCP annotations (readOnlyHint, destructiveHint, idempotentHint), so clients can auto-approve reads and ask before writes. Nothing can delete posts, change channels or perform admin actions.
Write mode is off unless MATTERMOST_ENABLE_WRITE is 1, true, yes or on. When it is off:
The one server-side effect of read-only mode is the same as in any Mattermost client: get_direct_messages with someone you have never messaged creates the (empty) DM channel between you.
When write mode is on, update_post checks the post's author and refuses any post that is not yours, even if your account has permission to edit other people's posts. Posts are written as the authenticated user (or bot), so consider a dedicated bot account for agents that post on their own.
| Variable | Default | Meaning |
|---|---|---|
MATTERMOST_URL | — (required) | Base URL of your server, e.g. https://mattermost.example.com |
MATTERMOST_ACCESS_TOKEN | — | Personal access token or bot token; selects token auth |
MATTERMOST_ENABLE_WRITE | off | 1 enables the write tools |
MATTERMOST_AUTH_MODE | auto | token or cookie, to force a mode (see below) |
MATTERMOST_TOKEN | — | Cookie auth: value of the MMAUTHTOKEN cookie |
MATTERMOST_CSRF | — | Cookie auth: value of the MMCSRF cookie; required for write tools |
MATTERMOST_USER_ID | — | Cookie auth: value of the MMUSERID cookie (optional) |
MATTERMOST_AUTO_LOGIN | off | 1 opens the browser sign-in automatically when the saved session expires |
MATTERMOST_LOGIN_TIMEOUT | 300 | Seconds to wait for an automatic sign-in |
MATTERMOST_BROWSER | auto | Path of the Chromium-family browser used by login |
MATTERMOST_BROWSER_ARGS | — | Extra browser flags for login, e.g. --proxy-server=… |
MATTERMOST_BROWSER_PROFILE | ~/.config/mattermost-mcp/browser-profile | Sign-in browser profile (mode 0700) |
MATTERMOST_SESSION_FILE | ~/.config/mattermost-mcp/session.env | Where login saves the session (mode 0600) |
MATTERMOST_CACHE_TTL | 60 | Seconds to cache channel metadata; 0 disables the cache |
MATTERMOST_TRUST_ENV | 1 | 0 ignores HTTP(S)_PROXY/ALL_PROXY and connects to Mattermost directly |
MATTERMOST_AUTH_HELP | — | Extra text appended to the 401 error, e.g. how credentials are rotated in your setup |
MATTERMOST_KEYCHAIN_SERVICE | mattermost-mcp | Keychain service name (see Credential sources) |
MATTERMOST_COOKIE_HOST | off | Cookie host: ssh alias, or local |
MATTERMOST_COOKIE_PATH | .config/mattermost-mcp/cookie.env | Cookie host: file path, relative to $HOME on the host |
MATTERMOST_COOKIE_CACHE | ~/.cache/mattermost-mcp/cookie.cache | Cookie host: local cache file (mode 0600) |
MATTERMOST_COOKIE_TTL | 900 | Cookie host: cache lifetime, seconds |
MATTERMOST_COOKIE_SSH_TIMEOUT | 10 | Cookie host: ssh connect timeout, seconds |
Choosing the auth mode. If MATTERMOST_AUTH_MODE is unset, the first credential source that has any credential decides. The sources are checked in order: env, then cookie host, then the saved login session, then keychain. MATTERMOST_ACCESS_TOKEN in that source means token mode. MATTERMOST_TOKEN alone means cookie mode. A lower-priority source never overrides a higher one.
No personal access tokens on your server? Sign in once the way you always do (password, SSO, MFA), and the server uses your session:
uvx mattermost-mcp-server login --url https://mattermost.example.com
A browser window opens at your server's login page and closes by itself as soon as you are signed in. Any installed Chrome, Chromium, Edge or Brave works; set MATTERMOST_BROWSER to use a specific one. The session cookies are checked against the server and saved to ~/.config/mattermost-mcp/session.env (mode 0600). From then on the server needs no credentials in its configuration at all:
claude mcp add mattermost -- uvx mattermost-mcp-server
Other ways to sign in:
mattermost-mcp-server login --password # username/email + password (+ MFA code); the password is not stored
mattermost-mcp-server login --from-firefox # reuse the session of a Firefox where you are signed in mattermost-mcp-server status # which server, user and credential source is in use mattermost-mcp-server logout # revoke and delete the saved session (--forget-browser: also the browser profile)
When the session expires. Sessions expire after the time your admin configured. Run login again; running servers pick the new session up on their next call, without a restart. With MATTERMOST_AUTO_LOGIN=1 in the server's env, the server opens the sign-in window itself when it gets a
often completes without typing anything. Several running servers share one window.
The sign-in browser uses its own profile in ~/.config/mattermost-mcp/browser-profile, separate from your everyday browser. On macOS and Linux the server talks to it over a private pipe, not a network port.
To use session cookies directly, without login: log in to Mattermost in a browser, open DevTools → Application → Cookies, and copy MMAUTHTOKEN, MMCSRF and (optionally) MMUSERID into MATTERMOST_TOKEN, MATTERMOST_CSRF and MATTERMOST_USER_ID. This is also the way to go when a reverse proxy strips the Authorization header.
Session cookies expire. When they do, tool calls fail with a 401 error. Put fresh cookies wherever the server reads them from, then restart it, because env is read only once. If something rotates cookies for you, describe it in MATTERMOST_AUTH_HELP so the agent knows what to do.
The server resolves each field separately. The first source that has a value wins:
KEY=VALUE file with the same variable names, kept on another machine and read over ssh. Use this when one machine rotates the credential and others just consume it. The result is cached locally. On a 401 the server pulls the file again and retries once. ssh runs with BatchMode=yes, so a locked key fails fast instead of hanging the MCP handshake, and the reason goes to stderr. The file may only supply MATTERMOST_URL, MATTERMOST_ACCESS_TOKEN, MATTERMOST_TOKEN, MATTERMOST_CSRF and `MATTERMOST_USER_I앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요