Mattermost MCP Server
Provides tools for interacting with Mattermost workspaces, including channel management, posting messages, replying to threads, adding reactions, retrieving channel history and thread replies, user management, and topic monitoring.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Mattermost MCP ServerGet the latest 20 messages from the town-square channel."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Mattermost MCP Server
MCP Server for the Mattermost API, enabling Claude and other MCP clients to interact with Mattermost workspaces.
Quick Start
Using npx (recommended)
npx @conarti/mattermost-mcp --helpUsing environment variables
MATTERMOST_URL=https://your-mattermost.com/api/v4 \
MATTERMOST_TOKEN=your-token \
MATTERMOST_TEAM_ID=your-team-id \
npx @conarti/mattermost-mcpUsing CLI arguments
npx @conarti/mattermost-mcp \
--url https://your-mattermost.com/api/v4 \
--token your-token \
--team-id your-team-idRelated MCP server: Mattermost MCP Server
Installation
Option 1: npx (no installation needed)
npx @conarti/mattermost-mcpOption 2: Global installation
npm install -g @conarti/mattermost-mcp
mattermost-mcp --helpOption 3: Clone and build
git clone https://github.com/conarti/mattermost-mcp.git
cd mattermost-mcp
npm install
npm run build
npm startConfiguration
The server supports multiple configuration methods with the following priority (highest to lowest):
CLI arguments (
--url,--token,--team-id)Environment variables (
MATTERMOST_URL,MATTERMOST_TOKEN,MATTERMOST_TEAM_ID)config.local.json (for local overrides, gitignored)
config.json (default configuration)
CLI Arguments
Argument | Description |
| Mattermost API URL (e.g., https://mattermost.example.com/api/v4) |
| Mattermost personal access token |
| Mattermost team ID |
| Run topic monitoring immediately on startup |
| Exit after running monitoring (use with --run-monitoring) |
| Show help message |
Environment Variables
Variable | Description |
| Mattermost API URL |
| Mattermost personal access token |
| Mattermost team ID |
Configuration File
Create config.local.json (gitignored) or use config.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
}
}Claude Code Integration
Add to your Claude Code MCP settings (~/.claude/claude_desktop_config.json or via claude mcp add):
{
"mcpServers": {
"mattermost": {
"command": "npx",
"args": ["-y", "@conarti/mattermost-mcp@latest"],
"env": {
"MATTERMOST_URL": "https://your-mattermost.com/api/v4",
"MATTERMOST_TOKEN": "your-token",
"MATTERMOST_TEAM_ID": "your-team-id"
}
}
}
}Or using a config file:
{
"mcpServers": {
"mattermost": {
"command": "node",
"args": ["/path/to/mattermost-mcp/build/index.js"]
}
}
}Features
Channel Tools
Tool | Description |
| List channels in the workspace (public, private, and DMs) |
| Get messages from a channel with filtering options |
mattermost_list_channels Options
limit(default: 100): Maximum number of channels to returnpage(default: 0): Page number for paginationinclude_private(default: false): If true, returns all channels including private channels and direct messages (DMs)
mattermost_get_channel_history Options
channel_id(required): The ID of the channellimit: Number of messages to retrieve. If not specified or 0, returns ALL messagespage(default: 0): Page number for pagination (only used when limit > 0)since_date: ISO 8601 date to get messages after (e.g., "2025-01-15")before_date: ISO 8601 date to get messages before. Use withsince_datefor date rangesbefore_post_id: Get messages before this post ID (cursor pagination)after_post_id: Get messages after this post ID (cursor pagination)
Examples:
// Get ALL messages from a channel
{ "channel_id": "abc123" }
// Get last 50 messages
{ "channel_id": "abc123", "limit": 50 }
// Get all messages from December 18, 2025
{ "channel_id": "abc123", "since_date": "2025-12-18", "before_date": "2025-12-19" }
// Get messages from a specific date onwards
{ "channel_id": "abc123", "since_date": "2025-12-15" }Message Tools
Tool | Description |
| Post a new message to a channel |
| Reply to a specific message thread |
| Add an emoji reaction to a message |
| Get all replies in a thread |
User Tools
Tool | Description |
| Get a list of users in the workspace |
| Get detailed profile information for a user |
Monitoring Tools
Tool | Description |
| Trigger topic monitoring immediately |
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
Configuration
{
"monitoring": {
"enabled": true,
"schedule": "*/15 * * * *",
"channels": ["general", "random"],
"topics": ["important", "urgent"],
"messageLimit": 50,
"notificationChannelId": "optional-channel-id",
"userId": "optional-user-id"
}
}Running Monitoring Manually
# Run monitoring and continue server
mattermost-mcp --run-monitoring
# Run monitoring and exit (useful for cron jobs)
mattermost-mcp --run-monitoring --exit-after-monitoringGetting Your Credentials
Mattermost URL
Your Mattermost API URL is typically: https://your-mattermost-domain.com/api/v4
Personal Access Token
Go to Account Settings > Security > Personal Access Tokens
Click Create Token
Give it a description and create
Copy the token (it won't be shown again)
Team ID
Go to your team in Mattermost
Open browser developer tools (F12)
Go to Network tab
Refresh the page
Look for API calls containing
teams/— the ID is in the URL
Or use the Mattermost API:
curl -H "Authorization: Bearer YOUR_TOKEN" \
https://your-mattermost.com/api/v4/teamsTroubleshooting
Missing Configuration Error
Missing required configuration:
- mattermostUrl (--url or MATTERMOST_URL)
- token (--token or MATTERMOST_TOKEN)
- teamId (--team-id or MATTERMOST_TEAM_ID)Make sure you've provided all required configuration via CLI arguments, environment variables, or config file.
Permission Errors
Verify that:
Your personal access token has the necessary permissions
The token is correctly set
The Mattermost URL and team ID are correct
License
MIT License
Available Tools
9 toolsmattermost_add_reactionB
Add a reaction emoji to a message
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | The ID of the channel containing the message | |
| post_id | Yes | The ID of the message to react to | |
| emoji_name | Yes | The name of the emoji reaction (without colons) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description only states the action without disclosing behavioral traits like side effects (e.g., notifications), idempotency, or permission requirements. Insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the core function without unnecessary words. Could be slightly improved with additional context but is appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has three required parameters, no output schema, and no annotations, the description is too minimal. It does not explain return values, confirmation, or constraints like duplicate reactions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds no extra meaning beyond the schema, such as what 'emoji_name' format is expected or valid values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'add' and specifies the resource 'reaction emoji to a message', clearly differentiating it from sibling tools like 'mattermost_post_message' which adds a text message.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as when to add a reaction versus posting a reply. Lacks any when-not-to-use or prerequisite information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mattermost_get_channel_historyA
Get messages from a Mattermost channel. By default returns ALL messages. Use limit parameter to restrict the number of messages.
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | The ID of the channel | |
| limit | No | Number of messages to retrieve. If not specified or 0, returns ALL messages from the channel. | |
| page | No | Page number for pagination (starting from 0). Only used when limit > 0. | |
| since_date | No | Get messages after this date (ISO 8601 format, e.g., '2025-12-18' or '2025-12-18T10:00:00Z') | |
| before_date | No | Get messages before this date (ISO 8601 format). Use with since_date to get messages for a specific date range (e.g., since_date='2025-12-18', before_date='2025-12-19' for all messages on Dec 18). | |
| before_post_id | No | Get messages before this post ID | |
| after_post_id | No | Get messages after this post ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions that by default all messages are returned and that limit restricts count. However, it does not disclose ordering, whether messages include deleted ones, or any rate limits or auth requirements. For a read operation, this is minimally adequate but lacks richer behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the core purpose, and the second clarifies default behavior and the limit parameter. Every word is functional, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters and no output schema, the description is somewhat sparse. It does not explain pagination behavior (page only used when limit>0 is in schema but not highlighted), nor the maximum results or ordering. It covers the basics but lacks completeness for advanced query scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with descriptions. The description adds value by explaining the default for limit ('returns ALL messages') and how to use since_date/before_date for date ranges. This reinforces usage tips beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'Get' with the resource 'messages from a Mattermost channel.' It clearly states the default behavior (all messages) and mentions the limit parameter. Sibling tools like `mattermost_post_message` and `mattermost_get_thread_replies` are distinct, so there is no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving messages but does not explicitly state when to use this tool compared to alternatives like `mattermost_get_thread_replies` for thread replies. No exclusion criteria or conditions are provided, so guidance is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mattermost_get_thread_repliesA
Get all replies in a message thread
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | The ID of the channel containing the thread | |
| post_id | Yes | The ID of the parent message |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read-only operation ('get'), but does not disclose whether it requires specific permissions, is idempotent, or returns paginated results. Adequate but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no wasted words. It is front-loaded with the key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with 2 parameters, no output schema, and no annotations, the description is minimally adequate. It does not explain the format of replies, pagination, or limits, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both parameters have descriptions). The tool description adds no extra meaning beyond 'get all replies'. Baseline 3 is appropriate as the schema already explains the parameters adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get all replies in a message thread' uses a specific verb ('get') and resource ('replies'), clearly distinguishing it from sibling tools like 'mattermost_reply_to_thread' (which creates a reply) and 'mattermost_post_message' (which posts a new message).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool vs alternatives, lacks exclusions, and does not mention prerequisites. The sibling tool list is provided but without any comparative context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mattermost_get_user_profileB
Get detailed profile information for a specific user
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | The ID of the user |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It only states 'Get detailed profile information' but does not explain what profile fields are included, whether authentication is required, or any side effects. The description is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that directly conveys the tool's purpose without any unnecessary words. It is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description does not describe the return format or any limitations. For a simple get operation, this might be sufficient, but more detail (e.g., what fields are returned) would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents the user_id parameter. The description adds no additional meaning beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'detailed profile information for a specific user'. It distinguishes from sibling tools like mattermost_get_users which lists users, and other tools focused on different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. There is no mention that it is for retrieving a single user's full profile, while mattermost_get_users is for listing or searching. The description lacks context about appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mattermost_get_usersB
Get a list of users in the Mattermost workspace with pagination
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of users to return (default 100, max 200) | |
| page | No | Page number for pagination (starting from 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden. It mentions pagination but fails to disclose key behaviors like required permissions, sorting, filtering, or response format. The schema already documents pagination parameters, so the description adds minimal value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using a single sentence that clearly states the purpose and key feature (pagination). No superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with no output schema and no annotations, the description should explain what data is returned (e.g., user IDs, usernames, email). It only mentions pagination, leaving the agent uncertain about the response structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description mentions pagination but does not add extra meaning to the parameters beyond what the schema already provides (e.g., default values, max limit).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get a list of users in the Mattermost workspace with pagination', specifying the verb (get), resource (list of users), and scope (workspace with pagination). It distinguishes from sibling tools like mattermost_get_user_profile which gets a single user.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. Implied usage is for listing users, but no exclusions or conditions are given. There is no mention of when not to use it or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mattermost_list_channelsA
List channels in the Mattermost workspace. By default lists public team channels. Set include_private=true to get all channels including private channels and direct messages (DMs).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of channels to return (default 100, max 200) | |
| page | No | Page number for pagination (starting from 0) | |
| include_private | No | If true, returns all channels for the current user including private channels and direct messages. If false (default), returns only public team channels. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses default behavior, pagination via limit/page, and the include_private flag. It does not mention authentication or rate limits, but for a read-only list operation, the transparency is good.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose, and contains no unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no output schema, the description covers purpose, default, and key parameter. It could mention the return format briefly, but it is fairly complete given the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds meaning beyond the schema by explaining the behavior of include_private (including private channels and DMs) and the default value. This compensates for the schema's dry descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists channels in the Mattermost workspace, specifying default behavior (public team channels) and the effect of the include_private parameter. It distinguishes from siblings like mattermost_get_channel_history which deals with history of a specific channel.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use include_private versus default, but does not explicitly exclude other use cases or mention alternatives among siblings. However, the context is clear enough for typical use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mattermost_post_messageC
Post a new message to a Mattermost channel
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | The ID of the channel to post to | |
| message | Yes | The message text to post |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility but only states the obvious. It does not disclose write behavior specifics, potential errors, permissions, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, direct sentence that efficiently states the tool's purpose. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool's simplicity, the description omits important context such as return value (e.g., message ID), error handling, or any side effects. Given no output schema or annotations, more completeness is expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds no extra meaning beyond what the schema already provides for channel_id and message. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('post a new message') and the target resource ('Mattermost channel'). It implicitly distinguishes from siblings like 'reply_to_thread' by specifying 'new message', but lacks explicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like mattermost_reply_to_thread. There is no mention of prerequisites, limitations, or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mattermost_reply_to_threadB
Reply to a specific message thread in Mattermost
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | The ID of the channel containing the thread | |
| post_id | Yes | The ID of the parent message to reply to | |
| message | Yes | The reply text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description must disclose behavioral traits. It only indicates a write operation ('reply') but does not mention potential failures, rate limits, or any side effects. The agent lacks understanding of what happens on success or failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the core purpose. It is appropriately sized with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description does not mention the return value or error handling. For a mutation tool with no output schema, this is a significant gap. The agent needs to know what the tool returns (e.g., reply object or confirmation) to handle the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The tool description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (reply) and the resource (specific message thread). It effectively distinguishes from sibling tools like mattermost_post_message (which creates a new message) and mattermost_get_thread_replies (which retrieves replies).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites such as requiring the post_id to exist in the given channel. No exclusions or context for optimal use are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mattermost_run_monitoringC
Run the topic monitoring process immediately
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description fails to disclose any behavioral traits such as required permissions, side effects, or what the process entails. The agent receives no information about the tool's impact or safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (one sentence) with no wasted words, but it lacks important details. While concise, it could be more informative within the same length, making it not optimally effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, and zero parameters, the description is the sole source of information. It does not explain what 'topic monitoring process' is, what the outcome looks like, or any prerequisites, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the schema coverage is 100% by default. The description does not need to add parameter details, and 0 parameters warrants a baseline of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Run' and resource 'topic monitoring process', clearly indicating the action and object. It distinguishes from sibling tools like mattermost_post_message or mattermost_get_channel_history, which serve different functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. There is no mention of prerequisites, context, or when not to use it. The description simply states the action without any usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
All tools have clearly distinct purposes: messaging, user info, channels, reactions, and monitoring. No two tools overlap in functionality, making selection unambiguous.
All tools follow a consistent pattern of `mattermost_verb_noun` in snake_case, such as `mattermost_post_message` and `mattermost_list_channels`. No mixing of conventions.
9 tools is a well-scoped set for a Mattermost integration, covering essential operations without being overwhelming or sparse.
Covers core chat operations (read, post, reply, user info, channels, reactions, monitoring). Minor gaps like message editing or deletion are absent but the surface is mostly complete for typical workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for Sendbird — chat users, channels, members, and messages from your AI client.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Related MCP Servers
- -licenseNot gradedqualityAmaintenanceMCP Server for the Slack API, enabling Claude to interact with Slack workspaces.121,28290,042MIT
- FlicenseNot gradedqualityFmaintenanceAn MCP server that enables Claude and other MCP clients to interact with Mattermost workspaces, providing channel management, messaging capabilities, and topic monitoring functionality.39
- -licenseNot gradedqualityNot gradedmaintenanceA Model Context Protocol server that enables Claude to interact with Mattermost instances, supporting post management, channel operations, user management, and reaction management.101
- FlicenseAqualityDmaintenanceMCP server for Mattermost that enables AI assistants to read posts, search messages, send messages, and manage channels.9
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/conarti/mattermost-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server