Skip to main content
Glama

Mattermost MCP Server

by pvev
README.md10.1 kB
# Mattermost MCP Server MCP Server for the Mattermost API, enabling Claude and other MCP clients to interact with Mattermost workspaces. ## Features This MCP server provides tools for interacting with Mattermost, including: ### Topic Monitoring The server includes a topic monitoring system that can: - Monitor specified channels for messages containing topics of interest - Run on a configurable schedule (using cron syntax) - Send notifications when relevant topics are discussed - Mention you in a specified channel when topics are found ### Channel Tools - `mattermost_list_channels`: List public channels in the workspace - `mattermost_get_channel_history`: Get recent messages from a channel ### Message Tools - `mattermost_post_message`: Post a new message to a channel - `mattermost_reply_to_thread`: Reply to a specific message thread - `mattermost_add_reaction`: Add an emoji reaction to a message - `mattermost_get_thread_replies`: Get all replies in a thread ### Monitoring Tools - `mattermost_run_monitoring`: Trigger the topic monitoring process immediately ### User Tools - `mattermost_get_users`: Get a list of users in the workspace - `mattermost_get_user_profile`: Get detailed profile information for a user ## Setup 1. Clone this repository: ```bash git clone https://github.com/yourusername/mattermost-mcp.git cd mattermost-mcp ``` 2. Install dependencies: ```bash npm install ``` 3. Configure the server: The repository includes a `config.json` file with placeholder values. For your actual configuration, create a `config.local.json` file (which is gitignored) with your real credentials: ```json { "mattermostUrl": "https://your-mattermost-instance.com/api/v4", "token": "your-personal-access-token", "teamId": "your-team-id", "monitoring": { "enabled": false, "schedule": "*/15 * * * *", "channels": ["town-square", "off-topic"], "topics": ["tv series", "champions league"], "messageLimit": 50 } } ``` This approach keeps your real credentials out of the repository while maintaining the template for others. 4. Build the server: ```bash npm run build ``` 5. Run the server: ```bash npm start ``` ## Topic Monitoring Configuration The monitoring system can be configured with the following options: - `enabled` (boolean): Whether monitoring is enabled - `schedule` (string): Cron expression for when to check for new messages (e.g., "*/15 * * * *" for every 15 minutes) - `channels` (string[]): Array of channel names to monitor - `topics` (string[]): Array of topics to look for in messages - `messageLimit` (number): Number of recent messages to analyze per check - `notificationChannelId` (string, optional): Channel ID where notifications will be sent. If not provided, the system will automatically use a direct message channel. - `userId` (string, optional): Your user ID for mentions in notifications. If not provided, the system will automatically detect the current user. To enable monitoring, set `enabled` to `true` in your `config.local.json` file. ### Running Monitoring Manually You can trigger the monitoring process manually in several ways: 1. **Using the provided scripts**: - `./run-monitoring-http.sh` - Triggers monitoring via HTTP without restarting the server (recommended) - `./run-monitoring.sh` - Starts a new server instance with monitoring enabled - `./trigger-monitoring.sh` - Runs the monitoring process and exits (useful for cron jobs) - `./view-channel-messages.js <channel-name> [count]` - View the last messages in a channel - `./analyze-channel.js <channel-name> [count]` - Analyze message statistics in a channel - `./get-last-message.js <channel-name>` - Get the last message from a channel 2. **Using the command-line interface (CLI)**: - While the server is running, simply type one of these commands in the terminal: - `run` - Run the monitoring process - `monitor` - Same as `run` - `check` - Same as `run` - Other available commands: - `help` - Show available commands - `exit` - Shutdown the server 3. **Using the MCP tool**: - Use the `mattermost_run_monitoring` tool through the MCP interface - This will immediately check all configured channels for your topics of interest 4. **Using the command-line flags**: - Start the server with the `--run-monitoring` flag: ```bash npm start -- --run-monitoring ``` - This will run the monitoring process immediately after the server starts - Add `--exit-after-monitoring` to exit after the monitoring process completes: ```bash npm start -- --run-monitoring --exit-after-monitoring ``` - This is useful for running the monitoring process from cron jobs ## Tool Details ### Channel Tools #### `mattermost_list_channels` - List public channels in the workspace - Optional inputs: - `limit` (number, default: 100, max: 200): Maximum number of channels to return - `page` (number, default: 0): Page number for pagination - Returns: List of channels with their IDs and information #### `mattermost_get_channel_history` - Get recent messages from a channel - Required inputs: - `channel_id` (string): The ID of the channel - Optional inputs: - `limit` (number, default: 30): Number of messages to retrieve - `page` (number, default: 0): Page number for pagination - Returns: List of messages with their content and metadata ### Message Tools #### `mattermost_post_message` - Post a new message to a Mattermost channel - Required inputs: - `channel_id` (string): The ID of the channel to post to - `message` (string): The message text to post - Returns: Message posting confirmation and ID #### `mattermost_reply_to_thread` - Reply to a specific message thread - Required inputs: - `channel_id` (string): The channel containing the thread - `post_id` (string): ID of the parent message - `message` (string): The reply text - Returns: Reply confirmation and ID #### `mattermost_add_reaction` - Add an emoji reaction to a message - Required inputs: - `channel_id` (string): The channel containing the message - `post_id` (string): Message ID to react to - `emoji_name` (string): Emoji name without colons - Returns: Reaction confirmation #### `mattermost_get_thread_replies` - Get all replies in a message thread - Required inputs: - `channel_id` (string): The channel containing the thread - `post_id` (string): ID of the parent message - Returns: List of replies with their content and metadata ### User Tools #### `mattermost_get_users` - Get list of workspace users with basic profile information - Optional inputs: - `limit` (number, default: 100, max: 200): Maximum users to return - `page` (number, default: 0): Page number for pagination - Returns: List of users with their basic profiles #### `mattermost_get_user_profile` - Get detailed profile information for a specific user - Required inputs: - `user_id` (string): The user's ID - Returns: Detailed user profile information ## Usage with Claude Desktop Add the following to your `claude_desktop_config.json`: ```json { "mcpServers": { "mattermost": { "command": "node", "args": [ "/path/to/mattermost-mcp/build/index.js" ] } } } ``` ## Troubleshooting If you encounter permission errors, verify that: 1. Your personal access token has the necessary permissions 2. The token is correctly copied to your configuration 3. The Mattermost URL and team ID are correct ## HTTP Endpoints The server exposes HTTP endpoints for remote control: - **Run Monitoring**: `http://localhost:3456/run-monitoring` - Triggers the monitoring process immediately - Returns JSON response with success/error information - **Check Status**: `http://localhost:3456/status` - Returns information about the server and monitoring status - Useful for health checks You can use these endpoints with curl or any HTTP client: ```bash # Trigger monitoring curl http://localhost:3456/run-monitoring # Check status curl http://localhost:3456/status ``` ## Utility Scripts ### run-monitoring-http.sh This script triggers the monitoring process via the HTTP endpoint: ```bash ./run-monitoring-http.sh ``` This is the recommended way to trigger monitoring manually as it: - Doesn't restart the server - Doesn't interfere with the scheduled monitoring - Works reliably from any terminal ### view-channel-messages.js This script allows you to view the most recent messages in any channel: ```bash # View messages in a channel (channel name is required) node view-channel-messages.js <channel-name> # View a specific number of messages node view-channel-messages.js <channel-name> <message-count> # Example: View the last 10 messages in a channel node view-channel-messages.js general 10 ``` The script will display: - Channel information (name, purpose, total message count) - The most recent messages with timestamps and usernames - If the channel doesn't exist, it will list all available channels ### analyze-channel.js This script provides detailed statistics about messages in a channel: ```bash # Analyze messages in a channel (channel name is required) node analyze-channel.js <channel-name> # Analyze a specific number of messages node analyze-channel.js <channel-name> <message-count> # Example: Analyze the last 50 messages in a channel node analyze-channel.js general 50 ``` The script will display: - Channel information and metadata - Total message count (including system messages) - Breakdown of user messages vs. system messages - Message count by user - The most recent messages in the channel ### get-last-message.js This script retrieves only the most recent message from a channel: ```bash # Get the last message from a channel (channel name is required) node get-last-message.js <channel-name> # Example: Get the last message from the general channel node get-last-message.js general ``` The script will display: - The sender's user ID and username - The timestamp of the message - The full message content ## License This MCP server is licensed under the MIT License.

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/pvev/mattermost-mcp'

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