{"_id":"@atyaga/mcp-mattermost","_rev":"4-bf982fd388c2459ae31e3a99f05a291b","name":"@atyaga/mcp-mattermost","dist-tags":{"latest":"0.0.9"},"versions":{"0.0.6":{"name":"@atyaga/mcp-mattermost","version":"0.0.6","keywords":["npx","mcp"],"author":{"name":"dakatan","email":"tkdtkd0022@gmail.com"},"license":"MIT","_id":"@atyaga/mcp-mattermost@0.0.6","maintainers":[{"name":"atyaga","email":"atyaga@gmail.com"}],"homepage":"https://github.com/tyaga/mcp-mattermost","bugs":{"url":"https://github.com/tyaga/mcp-mattermost/issues"},"bin":{"mcp-mattermost":"build/index.js"},"dist":{"shasum":"988615df094be2bd36203a79afb135883922335c","tarball":"https://registry.npmjs.org/@atyaga/mcp-mattermost/-/mcp-mattermost-0.0.6.tgz","fileCount":29,"integrity":"sha512-k+ng838rBZ08MpkIdsJE7QnjRGgpShNYUbrF7b5nwfooStlaBxBg9KBXx0aoieDoP00ZbkW8cN+KvFA8YnO4xw==","signatures":[{"sig":"MEUCIQDNQ0/l6Nvnl9gJTn/sLxb3Vxg4SoubFQ3BaVt0ldwrBgIgbDKxtVrHlsUDTG5d4xxx8uzLYWoP8h8DRyGZyB9QFK4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88375},"gitHead":"28a02ced40882b96a7c23b86500a5e9b081caca6","scripts":{"lint":"eslint . --ext .ts","test":"jest","build":"tsc -p tsconfig.build.json && node -e \"require('fs').chmodSync('build/index.js', '755'); require('fs').chmodSync('build/http-server.js', '755');\"","lint:fix":"eslint . --ext .ts --fix","inspector":"mcp-inspector build/index.js"},"_npmUser":{"name":"atyaga","email":"atyaga@gmail.com"},"repository":{"url":"git+https://github.com/tyaga/mcp-mattermost.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP (Model Context Protocol) server for Mattermost","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.24.3","express":"^5.2.1","@mattermost/client":"^10.6.0","@modelcontextprotocol/sdk":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.26.0","ts-jest":"^29.3.2","ts-node":"^10.9.0","prettier":"^3.5.3","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^22.15.3","@types/express":"^5.0.6","@eslint/eslintrc":"^3.3.1","@mattermost/types":"^10.6.0","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^10.1.2","eslint-plugin-prettier":"^5.3.1","@typescript-eslint/parser":"^8.31.1","@modelcontextprotocol/inspector":"^0.11.0","@typescript-eslint/eslint-plugin":"^8.31.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-mattermost_0.0.6_1778974149807_0.10100833431667655","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@atyaga/mcp-mattermost","version":"0.0.7","keywords":["npx","mcp"],"author":{"name":"dakatan","email":"tkdtkd0022@gmail.com"},"license":"MIT","_id":"@atyaga/mcp-mattermost@0.0.7","maintainers":[{"name":"atyaga","email":"atyaga@gmail.com"}],"homepage":"https://github.com/tyaga/mcp-mattermost","bugs":{"url":"https://github.com/tyaga/mcp-mattermost/issues"},"bin":{"mcp-mattermost":"build/index.js"},"dist":{"shasum":"267781474e0d52f061e86b9c0986c38f0c12ee2f","tarball":"https://registry.npmjs.org/@atyaga/mcp-mattermost/-/mcp-mattermost-0.0.7.tgz","fileCount":29,"integrity":"sha512-rkJIba10UtOIThwhrEkvGKn0YBYa8YCKfkcRb+NnYq7ODY+CKfBFrYDe2383uiSNQYaopTKDhkmyAT/iAV8oWA==","signatures":[{"sig":"MEUCIQCD1mRQDKr6pRhVn7dW5ph1eARgRNkETS30J1G1kAQk6AIgSz8bZCrcRtewp5m6Fgzi1VUTqdqSxuqzKhaseAKbFnY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88367},"gitHead":"28a02ced40882b96a7c23b86500a5e9b081caca6","scripts":{"lint":"eslint . --ext .ts","test":"jest","build":"tsc -p tsconfig.build.json && node -e \"require('fs').chmodSync('build/index.js', '755'); require('fs').chmodSync('build/http-server.js', '755');\"","lint:fix":"eslint . --ext .ts --fix","inspector":"mcp-inspector build/index.js"},"_npmUser":{"name":"atyaga","email":"atyaga@gmail.com"},"repository":{"url":"git+https://github.com/tyaga/mcp-mattermost.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP (Model Context Protocol) server for Mattermost","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.24.3","express":"^5.2.1","@mattermost/client":"^10.6.0","@modelcontextprotocol/sdk":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.26.0","ts-jest":"^29.3.2","ts-node":"^10.9.0","prettier":"^3.5.3","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^22.15.3","@types/express":"^5.0.6","@eslint/eslintrc":"^3.3.1","@mattermost/types":"^10.6.0","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^10.1.2","eslint-plugin-prettier":"^5.3.1","@typescript-eslint/parser":"^8.31.1","@modelcontextprotocol/inspector":"^0.11.0","@typescript-eslint/eslint-plugin":"^8.31.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-mattermost_0.0.7_1778974239891_0.9575642159823734","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@atyaga/mcp-mattermost","version":"0.0.8","keywords":["npx","mcp"],"author":{"name":"dakatan","email":"tkdtkd0022@gmail.com"},"license":"MIT","_id":"@atyaga/mcp-mattermost@0.0.8","maintainers":[{"name":"atyaga","email":"atyaga@gmail.com"}],"homepage":"https://github.com/tyaga/mcp-mattermost","bugs":{"url":"https://github.com/tyaga/mcp-mattermost/issues"},"bin":{"mcp-mattermost":"build/index.js"},"dist":{"shasum":"9e258b5644a3688360058da4f22700564fe5ba71","tarball":"https://registry.npmjs.org/@atyaga/mcp-mattermost/-/mcp-mattermost-0.0.8.tgz","fileCount":29,"integrity":"sha512-6YhJoOq3w4KMCsKS2nHsJPoEdzoWD2gcIXDkktmKtOLwfQWacKvDndVE+9NzkE4VOYHczrEJkW6jrM7/Hp1C3w==","signatures":[{"sig":"MEYCIQDPlLkmT1Arm7fDFmnXtMm6ZlduaLbGzccfUPmdQqgQmQIhAOehQ6GKOBbro8xc/n2MvllAONkVxvAQCeVNTMcFw1wc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88367},"gitHead":"28a02ced40882b96a7c23b86500a5e9b081caca6","scripts":{"lint":"eslint . --ext .ts","test":"jest","build":"tsc -p tsconfig.build.json && node -e \"require('fs').chmodSync('build/index.js', '755'); require('fs').chmodSync('build/http-server.js', '755');\"","lint:fix":"eslint . --ext .ts --fix","inspector":"mcp-inspector build/index.js"},"_npmUser":{"name":"atyaga","email":"atyaga@gmail.com"},"repository":{"url":"git+https://github.com/tyaga/mcp-mattermost.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP (Model Context Protocol) server for Mattermost","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.24.3","express":"^5.2.1","@mattermost/client":"^10.6.0","@modelcontextprotocol/sdk":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.26.0","ts-jest":"^29.3.2","ts-node":"^10.9.0","prettier":"^3.5.3","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^22.15.3","@types/express":"^5.0.6","@eslint/eslintrc":"^3.3.1","@mattermost/types":"^10.6.0","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^10.1.2","eslint-plugin-prettier":"^5.3.1","@typescript-eslint/parser":"^8.31.1","@modelcontextprotocol/inspector":"^0.11.0","@typescript-eslint/eslint-plugin":"^8.31.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-mattermost_0.0.8_1778974254438_0.991180729122326","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@atyaga/mcp-mattermost","version":"0.0.9","author":{"name":"dakatan","email":"tkdtkd0022@gmail.com"},"license":"MIT","description":"MCP (Model Context Protocol) server for Mattermost","repository":{"type":"git","url":"git+https://github.com/tyaga/mcp-mattermost.git"},"homepage":"https://github.com/tyaga/mcp-mattermost","keywords":["npx","mcp"],"scripts":{"build":"tsc -p tsconfig.build.json && node -e \"require('fs').chmodSync('build/index.js', '755'); require('fs').chmodSync('build/http-server.js', '755');\"","inspector":"mcp-inspector build/index.js","lint":"eslint . --ext .ts","lint:fix":"eslint . --ext .ts --fix","test":"jest"},"bin":{"mcp-mattermost":"build/index.js"},"dependencies":{"@mattermost/client":"^10.6.0","@modelcontextprotocol/sdk":"^1.11.0","express":"^5.2.1","zod":"^3.24.3"},"devDependencies":{"@eslint/eslintrc":"^3.3.1","@mattermost/types":"^10.6.0","@modelcontextprotocol/inspector":"^0.11.0","@types/express":"^5.0.6","@types/jest":"^29.5.14","@types/node":"^22.15.3","@typescript-eslint/eslint-plugin":"^8.31.1","@typescript-eslint/parser":"^8.31.1","eslint":"^9.26.0","eslint-config-prettier":"^10.1.2","eslint-plugin-import":"^2.31.0","eslint-plugin-prettier":"^5.3.1","jest":"^29.7.0","prettier":"^3.5.3","ts-jest":"^29.3.2","ts-node":"^10.9.0","typescript":"^5.0.0"},"_id":"@atyaga/mcp-mattermost@0.0.9","gitHead":"28a02ced40882b96a7c23b86500a5e9b081caca6","bugs":{"url":"https://github.com/tyaga/mcp-mattermost/issues"},"_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-c5NBgiDRXr+icW30Ilj02s5YTZ/CxnI6eyyxbkn4Jx9eAGsefDBLq6ndQMrXbmMWEv58VfbyUqyP3Eg+JKdImw==","shasum":"0dad19a66163c77552dd45229b50c3b45b55d5d2","tarball":"https://registry.npmjs.org/@atyaga/mcp-mattermost/-/mcp-mattermost-0.0.9.tgz","fileCount":29,"unpackedSize":88367,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCexfSjF1bQbtoKf6lbSKmS4miMqH6VAKDfbDCKMAwN7AIgXAGkvTC+OwLj/Mpvm9/1vrvxAXGX+TQxjulCg1AW9pU="}]},"_npmUser":{"name":"atyaga","email":"atyaga@gmail.com"},"directories":{},"maintainers":[{"name":"atyaga","email":"atyaga@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-mattermost_0.0.9_1778974325239_0.14107100599987676"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-16T23:29:09.704Z","modified":"2026-05-16T23:32:05.477Z","0.0.6":"2026-05-16T23:29:09.954Z","0.0.7":"2026-05-16T23:30:40.051Z","0.0.8":"2026-05-16T23:30:54.586Z","0.0.9":"2026-05-16T23:32:05.382Z"},"bugs":{"url":"https://github.com/tyaga/mcp-mattermost/issues"},"author":{"name":"dakatan","email":"tkdtkd0022@gmail.com"},"license":"MIT","homepage":"https://github.com/tyaga/mcp-mattermost","keywords":["npx","mcp"],"repository":{"type":"git","url":"git+https://github.com/tyaga/mcp-mattermost.git"},"description":"MCP (Model Context Protocol) server for Mattermost","maintainers":[{"name":"atyaga","email":"atyaga@gmail.com"}],"readme":"# MCP Mattermost Server\n\nThis is an MCP (Model Context Protocol) server for Mattermost, written in TypeScript. It provides various tools for interacting with the Mattermost API.\n\n## Installation\n\nTo run this tool, you need to set the following environment variables:\n\n```json\n{\n  ...\n  \"mcp-mattermost\": {\n    \"command\": \"npx\",\n    \"args\": [\n      \"@dakatan/mcp-mattermost\"\n    ],\n    \"env\": {\n      \"MCP_MATTERMOST_URL\": \"https://mattermost.x.y\",\n      \"MCP_MATTERMOST_TOKEN\": \"<personal access token or bot token>\",\n      \"MCP_MATTERMOST_TEAM_ID\": \"\",\n      \"MCP_MATTERMOST_TEAM_NAME\": \"\"\n    }\n  },\n  ...\n}\n```\n\n## Configuration\n\n| Variable Name              | Description                                                                         | Required |\n| -------------------------- | ----------------------------------------------------------------------------------- | -------- |\n| `MCP_MATTERMOST_URL`       | The URL of your Mattermost instance                                                 | Yes      |\n| `MCP_MATTERMOST_TOKEN`     | Your Mattermost personal access token or bot token                                  | Yes      |\n| `MCP_MATTERMOST_TEAM_ID`   | Team ID(s) — single value or comma-separated list (e.g. `id1,id2`)                  | No       |\n| `MCP_MATTERMOST_TEAM_NAME` | Team name(s) — single value or comma-separated list (e.g. `team-a,team-b`)          | No       |\n\n### Team configuration\n\n- **Single team**: provide a single `MCP_MATTERMOST_TEAM_ID` or `MCP_MATTERMOST_TEAM_NAME`\n- **Multiple teams**: provide a comma-separated list, e.g. `MCP_MATTERMOST_TEAM_ID=id1,id2,id3`\n- **Auto-discover**: if neither variable is set, the server will automatically discover all teams the user/bot belongs to via the `getMyTeams()` API\n\nBoth `MCP_MATTERMOST_TEAM_ID` and `MCP_MATTERMOST_TEAM_NAME` can be set simultaneously — teams from both will be combined.\n\n**Note:** Using `MCP_MATTERMOST_TEAM_ID` is recommended as it's more reliable and efficient than using team names.\n\n### Bot token support\n\nBot tokens in Mattermost work identically to personal access tokens — both use `Authorization: BEARER <token>`. Simply set `MCP_MATTERMOST_TOKEN` to your bot token value.\n\n## HTTP Server (Remote Deployment)\n\nThe server can also run as an HTTP service using the Streamable HTTP transport, allowing remote clients (e.g. Cursor IDE) to connect via URL.\n\n### Running the HTTP server\n\n```bash\nnode build/http-server.js\n```\n\nAdditional environment variable:\n\n| Variable Name      | Description                                                              | Default |\n| ------------------ | ------------------------------------------------------------------------ | ------- |\n| `MCP_HTTP_PORT`    | HTTP server port                                                         | `3002`  |\n| `MCP_LOG_LEVEL`    | Log level: `debug`, `info`, `warn`, `error`, `silent`                    | `info`  |\n| `MCP_AUTH_TOKENS`  | Bearer token auth: comma-separated `username:token` pairs (see below)    | —       |\n\n### Authentication\n\nSet `MCP_AUTH_TOKENS` to enable Bearer token authentication. Format: `username:token` pairs separated by commas.\n\n```bash\nMCP_AUTH_TOKENS=alice:abc123secret,bob:xyz789secret\n```\n\nIf `MCP_AUTH_TOKENS` is not set or empty, authentication is disabled (all requests are allowed). The `/health` endpoint is always accessible without authentication.\n\n### Client configuration (Cursor IDE)\n\n```json\n{\n  \"mcpServers\": {\n    \"mcp-mattermost\": {\n      \"url\": \"https://your-server.example.com/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer abc123secret\"\n      }\n    }\n  }\n}\n```\n\n### Deployment with systemd and nginx\n\n1. Clone and build the project on your server:\n\n```bash\ncd /data/mcp-servers\ngit clone <repo-url> mcp-mattermost\ncd mcp-mattermost\nnpm ci\nnpm run build\n```\n\n2. Create an environment file (e.g. `/data/mcp-servers/mcp-mattermost/.env`):\n\n```bash\nMCP_MATTERMOST_URL=https://your-mattermost.example.com/\nMCP_MATTERMOST_TOKEN=<token>\nMCP_MATTERMOST_TEAM_ID=<team-id>\nMCP_HTTP_PORT=3002\nMCP_LOG_LEVEL=info\nMCP_AUTH_TOKENS=alice:abc123secret,bob:xyz789secret\n```\n\n3. Create a systemd service (`/etc/systemd/system/mcp-mattermost.service`):\n\n```ini\n[Unit]\nDescription=MCP Mattermost Server (Streamable HTTP)\nAfter=network.target\n\n[Service]\nType=simple\nUser=srvadmin\nWorkingDirectory=/data/mcp-servers/mcp-mattermost\nEnvironmentFile=/data/mcp-servers/mcp-mattermost/.env\nExecStart=/usr/bin/node build/http-server.js\nRestart=on-failure\nRestartSec=5\n\n[Install]\nWantedBy=multi-user.target\n```\n\n4. Enable and start the service:\n\n```bash\nsudo systemctl daemon-reload\nsudo systemctl enable mcp-mattermost\nsudo systemctl start mcp-mattermost\n```\n\n5. Add an nginx location block (with SSE-compatible proxy settings):\n\n```nginx\nlocation /mcp {\n    proxy_set_header Host $host;\n    proxy_set_header X-Forwarded-For $remote_addr;\n    proxy_set_header Connection '';\n    proxy_http_version 1.1;\n    chunked_transfer_encoding off;\n    proxy_buffering off;\n    proxy_cache off;\n    proxy_pass http://127.0.0.1:3002;\n}\n```\n\n## Tools Provided\n\nThe MCP server provides the following tools:\n\n- User management: `mattermost_get_users`, `mattermost_search_users`\n- Channel management: `mattermost_search_channels`, `mattermost_get_channels`, `mattermost_get_my_channels`\n- Post management: `mattermost_search_posts`, `mattermost_get_posts`, `mattermost_get_channel_posts`, `mattermost_create_post`, `mattermost_get_posts_thread`, `mattermost_pin_post`, `mattermost_unpin_post`, `mattermost_get_pinned_posts`\n- Reaction management: `mattermost_add_reaction`, `mattermost_remove_reaction`, `mattermost_get_reactions`\n","readmeFilename":"README.md"}