Skip to main content
Glama
jhanglim

Mattermost MCP Server

by jhanglim

Mattermost MCP Server

Mattermost와 연동되는 Model Context Protocol (MCP) 서버입니다. 이 서버를 통해 Claude가 Mattermost의 메시지 검색, 사용자 조회, 채널 관리, 팀 정보 조회 등을 수행할 수 있습니다.

주요 기능

  • 사용자 관리: 현재 사용자 정보 조회, 사용자 검색, 사용자 상세 정보 조회

  • 메시지 검색: 키워드, 사용자명, 날짜를 사용하여 전체 메시지 검색

  • 사용자별 메시지 검색: 특정 사용자의 메시지만 검색

  • 팀 관리: 소속된 팀 목록 조회

  • 채널 관리: 채널 목록 조회 및 채널 메시지 가져오기

  • 스레드 조회: 특정 게시물의 전체 대화 스레드 조회

  • 자동 사용자 정보 포함: 모든 메시지 결과에 작성자의 이름과 username 자동 포함

  • KST 시간 표시: 모든 타임스탬프가 한국 시간(KST, UTC+9)으로 표시

Related MCP server: Element MCP Server

사전 요구사항

  • Node.js (v16 이상)

  • npm 또는 yarn

  • API 접근 권한이 있는 Mattermost 계정

  • Mattermost 서버 URL 및 액세스 토큰

  • Claude Desktop 앱

설치 방법

# 저장소 클론
git clone https://github.com/jhanglim/mattermost-mcp-server.git
cd mattermost-mcp-server

# 의존성 설치
npm install

# TypeScript 컴파일
npm run build

설정

1. Mattermost 액세스 토큰 발급

  1. Mattermost에 로그인

  2. 계정 설정보안개인 액세스 토큰으로 이동

  3. 토큰 생성 클릭

  4. 토큰 설명 입력 후 생성

  5. 생성된 토큰을 복사 (한 번만 표시됩니다!)

2. Claude Desktop 설정

Claude Desktop 설정 파일을 편집하세요:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json

다음 내용을 추가:

{
  "mcpServers": {
    "mattermost": {
      "command": "node",
      "args": ["/절대경로/mattermost-mcp-server/build/index.js"],
      "env": {
        "MATTERMOST_URL": "https://your-mattermost-server.com",
        "MATTERMOST_TOKEN": "your-personal-access-token"
      }
    }
  }
}

중요:

  • /절대경로/mattermost-mcp-server/를 실제 프로젝트 경로로 변경하세요

  • build/index.js 경로를 정확히 지정하세요

  • MATTERMOST_URLMATTERMOST_TOKEN을 실제 값으로 변경하세요

3. Claude Desktop 재시작

설정을 저장한 후 Claude Desktop을 완전히 종료하고 다시 시작하세요.

사용 예시

Claude Desktop에서 다음과 같이 요청할 수 있습니다:

기본 검색

  • "Mattermost에서 '프로젝트 업데이트' 관련 메시지를 검색해줘"

  • "개발 채널의 최근 메시지를 보여줘"

  • "내가 속한 모든 팀을 보여줘"

사용자 관련

  • "내 Mattermost 정보를 알려줘"

  • "'홍길동' 사용자를 찾아줘"

  • "'nayoung' 사용자의 메시지를 검색해줘"

  • "'이나영'이 작성한 '배포' 관련 메시지를 찾아줘"

고급 검색

  • "from:jhanglim 형식으로 특정 사용자의 메시지 검색"

  • "@username 형식으로 멘션된 메시지 검색"

  • "마케팅 팀의 채널 목록을 알려줘"

문제 해결

MCP 서버가 Claude Desktop에 표시되지 않음

  1. claude_desktop_config.json 파일 경로가 올바른지 확인

  2. JSON 문법이 올바른지 확인 (쉼표, 중괄호 등)

  3. 프로젝트 경로가 절대 경로로 정확히 지정되었는지 확인

  4. build/index.js 파일이 존재하는지 확인 (npm run build 실행)

  5. Claude Desktop을 완전히 재시작

연결 오류

  • Mattermost URL이 올바른지 확인 (https:// 포함)

  • 액세스 토큰이 유효한지 확인

  • Mattermost 서버에 접근 가능한지 확인

  • 방화벽이나 프록시 설정 확인

권한 오류

  • 토큰에 적절한 권한이 있는지 확인

  • 팀/채널 멤버십을 확인

  • 토큰이 만료되지 않았는지 확인

검색 결과가 없음

  • 검색어를 확인하세요

  • from:username 형식이 올바른지 확인

  • 사용자가 실제로 메시지를 작성했는지 확인

빌드 오류

# node_modules 삭제 후 재설치
rm -rf node_modules package-lock.json
npm install
npm run build

보안 주의사항

  • ⚠️ 액세스 토큰을 절대 Git에 커밋하지 마세요

  • ⚠️ claude_desktop_config.json을 공유하지 마세요 (토큰 포함)

  • 가능하면 읽기 전용 권한의 토큰을 사용하세요

  • 토큰을 정기적으로 갱신하세요

  • 더 이상 사용하지 않는 토큰은 삭제하세요

라이선스

MIT License - 자세한 내용은 LICENSE 파일을 참조하세요

관련 링크

지원

문제가 발생하거나 질문이 있으시면 GitHub Issues에 등록해주세요.

Available Tools

9 tools
get_channel_messagesC

특정 채널의 최근 메시지들을 가져옵니다. 결과에는 자동으로 작성자의 이름(user_name)과 username이 포함됩니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
channel_idYes채널 ID
pageNo페이지 번호 (기본값: 0)
per_pageNo페이지당 메시지 수 (기본값: 60)

TDQS

C2.9/5.0
Behavior2/5

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 results include author names and usernames automatically, which adds some behavioral context. However, it doesn't disclose critical traits like whether this is a read-only operation, rate limits, authentication needs, pagination behavior beyond parameters, or error handling. For a tool with no annotations, this leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no wasted words. The first sentence states the core purpose, and the second adds a useful behavioral detail. It's appropriately sized and front-loaded, though could be slightly improved with more structure (e.g., bullet points for clarity).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete. It doesn't explain return values beyond mentioning included fields, nor does it cover error cases, permissions, or side effects. For a tool with 3 parameters and retrieval functionality, more context is needed to ensure the agent can use it effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters (channel_id, page, per_page) with descriptions and defaults. The description adds no additional parameter semantics beyond what the schema provides, such as format details or constraints. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('가져옵니다' - fetches/retrieves) and resource ('특정 채널의 최근 메시지들' - recent messages from a specific channel). It distinguishes from siblings like get_channels (which lists channels) and search_messages (which searches across channels), though not explicitly. However, it doesn't fully differentiate from get_post_thread (which might retrieve thread messages) or search_user_messages (user-specific), so it's not a perfect 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like search_messages or get_post_thread. The description implies it's for recent messages in a specific channel, but doesn't specify contexts like 'use this for quick overviews' or 'avoid for historical searches.' Without such distinctions, the agent lacks clear decision criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_channelsC

특정 팀의 채널 목록을 가져옵니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
team_idYes팀 ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It only states what the tool does at a high level ('fetches channel list') but doesn't describe return format, pagination behavior, authentication requirements, rate limits, error conditions, or whether this is a read-only operation. For a tool with zero annotation coverage, this is insufficient 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence in Korean that directly states the tool's purpose without any wasted words. It's appropriately sized for a simple retrieval tool and front-loads the essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations, no output schema, and minimal behavioral description, this is incomplete. The description doesn't help an agent understand what format the channel list returns, whether it includes metadata, how to handle large result sets, or what permissions are required. Given the lack of structured data, the description should provide more operational context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the single parameter (team_id). The description adds no additional parameter semantics beyond what's in the schema - it doesn't explain what constitutes a valid team_id, where to find it, or provide examples. Baseline 3 is appropriate when the schema does the documentation work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('가져옵니다' - fetches/retrieves) and resource ('채널 목록' - channel list) with scope ('특정 팀의' - for a specific team). It distinguishes from siblings like get_channel_messages (which gets messages) and get_teams (which gets teams rather than channels). However, it doesn't explicitly differentiate from all possible list operations in the sibling set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It doesn't mention when to use get_channels versus search_messages for finding channels, or whether this is the primary way to list channels versus other methods. No prerequisites, exclusions, or comparative context is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_current_userB

현재 토큰 소유자(나)의 정보를 조회합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a retrieval operation ('조회합니다'), which implies read-only behavior, but doesn't address authentication requirements, rate limits, error conditions, or what specific user information is returned. The description is minimal and lacks important operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary elaboration. It's appropriately sized for a simple retrieval tool with no parameters, though it could potentially be more front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a user information retrieval tool with no annotations and no output schema, the description is insufficient. It doesn't specify what user information is returned (profile data, permissions, etc.), format of response, or any limitations. The description should provide more context about the return value and operational constraints.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the parameter situation (none). The description appropriately doesn't discuss parameters, maintaining focus on the tool's purpose. Baseline for 0 parameters is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('조회합니다' - retrieve/query) and resource ('현재 토큰 소유자(나)의 정보' - current token owner/my information), making the purpose evident. It doesn't explicitly differentiate from sibling tools like 'get_user_info', but the focus on 'current token owner' provides some implicit distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context through '현재 토큰 소유자(나)' (current token owner/me), suggesting this tool is for retrieving the authenticated user's own information rather than arbitrary user data. However, it doesn't explicitly state when to use this versus alternatives like 'get_user_info' or provide clear exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_post_threadC

특정 게시물의 전체 스레드를 가져옵니다. 결과에는 자동으로 작성자의 이름(user_name)과 username이 포함됩니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
post_idYes게시물 ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that results include the author's name and username automatically, which adds some context about output behavior. However, it lacks critical details such as whether this is a read-only operation, potential rate limits, authentication requirements, error handling, or pagination. For a tool with no annotations, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, consisting of two sentences that efficiently convey the tool's purpose and a key output feature. It is front-loaded with the main action and avoids unnecessary verbosity, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete for effective tool use. It mentions output includes author details but doesn't cover other behavioral aspects like safety, performance, or error conditions. For a tool with no structured metadata, the description should provide more context to compensate, but it falls short.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not explicitly mention the 'post_id' parameter or provide additional semantic context beyond what the input schema already covers. Since the schema description coverage is 100% (with a clear description for 'post_id'), the baseline score is 3. The description adds no extra parameter details, but it doesn't need to compensate for low coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '특정 게시물의 전체 스레드를 가져옵니다' (Get the entire thread of a specific post). It specifies the verb ('가져옵니다' - get/fetch) and resource ('게시물의 전체 스레드' - entire post thread), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'get_channel_messages' or 'search_messages', which might also retrieve message-related data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It doesn't mention any prerequisites, exclusions, or comparisons to sibling tools such as 'get_channel_messages' or 'search_messages', which could be used for similar purposes. Users are left to infer usage based on the tool name and description alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_teamsB

현재 사용자가 속한 모든 팀 목록을 가져옵니다.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool does but doesn't describe important behavioral aspects: whether this requires authentication, what format the team list returns (just names or full objects), whether it's paginated, if there are rate limits, or what happens when the user belongs to no teams. For a read operation with zero annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states exactly what the tool does with zero wasted words. It's appropriately sized for a simple tool and front-loads the core functionality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no annotations, no output schema, and the description provides only basic functionality without behavioral context, this is incomplete. For a tool that fetches user data, the description should address authentication requirements, return format, error conditions, or limitations. The current description is too minimal for effective agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the lack of parameters. The description appropriately doesn't discuss parameters since none exist. It gets a baseline 4 for zero-parameter tools that don't need parameter explanation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('가져옵니다' - fetches/gets) and resource ('팀 목록' - team list) with scope ('현재 사용자가 속한' - that the current user belongs to). It distinguishes from siblings by focusing on teams rather than channels, messages, or users. However, it doesn't explicitly differentiate from potential similar team-related tools that might exist.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It doesn't mention when this tool is appropriate versus searching for teams, getting team details, or using other sibling tools. There's no context about prerequisites, limitations, or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_user_infoC

사용자 ID로 사용자의 상세 정보를 조회합니다. username, 이름, 닉네임 등을 확인할 수 있습니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes조회할 사용자의 ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states this is a retrieval operation ('조회합니다'), implying it is read-only, but does not disclose other traits such as authentication requirements, rate limits, error conditions, or what happens if the user ID is invalid. The description adds minimal behavioral context beyond the implied read-only nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately concise with two sentences: one stating the purpose and another listing example data fields ('username, 이름, 닉네임 등'). It is front-loaded with the core functionality, though the second sentence could be slightly more structured (e.g., clarifying if the list is exhaustive).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (single parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose and hints at return data, but lacks details on behavioral traits, error handling, or differentiation from siblings, leaving gaps for an agent to operate effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the 'user_id' parameter documented as '조회할 사용자의 ID' (ID of the user to retrieve). The description adds no additional meaning beyond this, such as format examples or constraints, so it meets the baseline of 3 where the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '사용자 ID로 사용자의 상세 정보를 조회합니다' (Retrieve detailed user information by user ID). It specifies the verb '조회합니다' (retrieve) and resource '사용자의 상세 정보' (user's detailed information), but does not explicitly differentiate it from sibling tools like 'get_current_user' or 'search_users'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It does not mention sibling tools like 'get_current_user' (which might retrieve the current user without an ID) or 'search_users' (which might search by criteria other than ID), leaving the agent to infer usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_messagesC

Mattermost에서 메시지를 검색합니다. 키워드, 사용자명(@username 또는 from:username), 날짜 등으로 검색할 수 있습니다. 검색 결과에는 자동으로 작성자의 이름(user_name)과 username이 포함됩니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes검색할 키워드 또는 검색어. 사용자명으로 검색하려면 'from:username' 또는 '@username' 형식 사용
is_or_searchNotrue인 경우 OR 검색, false인 경우 AND 검색 (기본값: false)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that search results include author names and usernames, which adds some context about output behavior. However, it lacks details on permissions, rate limits, pagination, or error handling, which are important for a search operation. This partial disclosure earns a score of 2.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded, with two sentences that directly explain the tool's function and output. There is no unnecessary information, making it efficient. However, it could be slightly more structured by explicitly separating usage guidelines, which prevents a perfect score of 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a search tool with no annotations and no output schema, the description is moderately complete. It covers the basic purpose and output inclusion but lacks details on result format, limitations, or error cases. This makes it adequate but with clear gaps, resulting in a score of 3.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so the input schema already fully documents the parameters. The description adds minimal value by mentioning keywords, usernames, and dates in the search, but does not provide additional syntax or format details beyond what the schema states. This meets the baseline of 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Mattermost에서 메시지를 검색합니다' (Search messages in Mattermost). It specifies the resource (messages) and the action (search), but does not explicitly differentiate it from sibling tools like 'search_user_messages' or 'get_channel_messages', which limits it to a 4 instead of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It mentions search capabilities but does not compare to sibling tools like 'search_user_messages' or 'get_channel_messages', nor does it specify prerequisites or exclusions. This lack of comparative context results in a score of 2.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_user_messagesC

특정 사용자의 메시지를 이름이나 username으로 검색합니다. '박찬우', 'cwpark' 등으로 검색 가능.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_nameYes검색할 사용자의 이름 또는 username (예: '박찬우', 'cwpark')
keywordNo추가로 검색할 키워드 (선택사항)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool searches messages, implying a read-only operation, but doesn't clarify aspects like permissions needed, rate limits, pagination, or what the output format might be. For a search tool with zero annotation coverage, this is a significant gap in transparency about how the tool behaves beyond its basic function.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and front-loaded, stating the core purpose in the first sentence. The second sentence adds useful examples without redundancy. It avoids unnecessary words, making it efficient, though it could be slightly more structured to highlight key points like the optional keyword parameter more explicitly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (search functionality with 2 parameters), lack of annotations, and no output schema, the description is incomplete. It covers the basic purpose but fails to address behavioral aspects, usage context relative to siblings, or output expectations. This leaves significant gaps for an agent to understand how to effectively use the tool in practice.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, meaning the input schema already fully documents both parameters (user_name and keyword). The description adds minimal value by repeating the examples for user_name ('박찬우', 'cwpark') and mentioning keyword as optional, but doesn't provide additional semantics beyond what's in the schema. This meets the baseline of 3 when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'search messages of a specific user by name or username' (특정 사용자의 메시지를 이름이나 username으로 검색합니다). It specifies the verb (search) and resource (user messages), and provides concrete examples ('박찬우', 'cwpark'). However, it doesn't explicitly differentiate from sibling tools like 'search_messages' or 'search_users', which reduces clarity about its unique role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides minimal guidance on when to use this tool. It mentions that searches can be done by name or username with examples, but offers no advice on when to choose this over alternatives like 'search_messages' or 'search_users', nor does it specify prerequisites or exclusions. This lack of comparative context leaves the agent with insufficient direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_usersC

사용자를 이름, username, 닉네임으로 검색합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
search_termYes검색할 이름, username 또는 닉네임

TDQS

C2.9/5.0
Behavior2/5

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 the search functionality but doesn't disclose behavioral traits like whether it's read-only, what permissions are needed, if there are rate limits, pagination behavior, or what the return format looks like. For a search tool with zero annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence in Korean that directly states the tool's purpose without any wasted words. It's appropriately sized and front-loaded with the core functionality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns, any behavioral constraints, or usage context. For a search tool, this leaves significant gaps for an AI agent to understand how to properly invoke and interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with the parameter 'search_term' fully documented in the schema. The description adds minimal value by listing the searchable fields (name, username, nickname), but this is already implied by the schema's description. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('search') and resource ('users') with specific search criteria ('by name, username, nickname'). It doesn't explicitly differentiate from sibling tools like 'search_messages' or 'search_user_messages', but the resource focus is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 'get_user_info' or 'get_current_user'. The description only states what it does, not when it's appropriate or what prerequisites might exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.4/5.0
Disambiguation4/5

Most tools have distinct purposes, such as get_channels for listing channels and get_user_info for user details. However, search_messages and search_user_messages overlap significantly, as both search messages with user-related filters, which could cause confusion for an agent. The other tools are clearly differentiated by their target resources (e.g., channels, posts, teams, users).

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, such as get_channels, search_messages, and get_user_info. There are no deviations in naming style or convention, making the set predictable and easy to parse. This consistency aids in agent understanding and tool selection.

Tool Count5/5

With 9 tools, the server is well-scoped for interacting with Mattermost, covering key resources like channels, messages, teams, and users. The count is neither too sparse nor bloated, allowing for comprehensive operations without overwhelming complexity. Each tool appears to serve a specific, useful function in the domain.

Completeness4/5

The tool set provides strong read/search coverage for Mattermost, including getting messages, channels, teams, users, and searching across these resources. However, there are notable gaps in write operations, such as creating or updating messages, channels, or teams, which limits full CRUD/lifecycle management. Agents can perform retrieval tasks effectively but may struggle with modification workflows.

Maintenance

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A Model Context Protocol server that enables Claude to interact with Mattermost instances, supporting post management, channel operations, user management, and reaction management.
    10
    1
  • A
    license
    A
    quality
    D
    maintenance
    Connects Claude with Matrix/Element to read and search messages across rooms. Enables listing rooms, viewing room information, retrieving message history, and searching conversation content from your Matrix account.
    4
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    This server enables interaction with Mattermost workspaces to manage channels, messages, threads, and user profiles via the Mattermost REST API. It provides a comprehensive suite of tools for reading channel history, posting messages, and managing reactions within a trusted environment.
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables interaction with Mattermost workspaces to manage channels, messages, threads, reactions, and user profiles via the REST API. This server allows AI models to perform both read and write operations, such as posting messages and retrieving channel history, within a trusted environment.

Latest Blog Posts

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

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