Skip to main content
Glama

mcp-viva-engage

Claude AIをViva Engage (Yammer) に接続するオープンソースのModel Context Protocol (MCP) サーバーです。Claudeとの自然な会話を通じて、ホームネットワークのコミュニティの閲覧、投稿の検索、会話の読み取り、返信の投稿が可能です。

作成者: Pranav Joshi


できること

接続後、Claudeに以下のような質問ができます:

  • 「私が所属しているViva Engageコミュニティは何ですか?」

  • 「Business Centralのエラーに関する投稿を検索して」

  • 「Developersコミュニティの最新の会話は何ですか?」

  • 「そのスレッドに…と返信して」

  • 「私のViva Engageフィードを見せて」


Related MCP server: linkedin-mcp-server

重要な制限 — ホームネットワークのみ

このMCPサーバーは、ホームネットワークのみ(ログイン資格情報に紐付いた主要な組織ネットワーク)で動作します。

なぜ外部ネットワークにアクセスできないのですか?

Viva Engageは2種類のネットワークをサポートしています:

  • ホームネットワーク — 主要な組織(例:会社のViva Engage)

  • 外部ネットワーク — ゲストメンバーとして参加している他の組織がホストするコミュニティ(例:MicrosoftのBC Partnersコミュニティ)

Yammer REST API (www.yammer.com/api/v1) は、どのようなパラメータやトークンを使用しても、ホームネットワークからのデータのみを返します。外部ネットワークには、完全なWebベースのログイン後にのみ利用可能なブラウザセッションCookieが必要であり、これはAPI呼び出しだけでは再現できません。

Microsoftの新しいGraph API (graph.microsoft.com) も外部ネットワークをサポートしておらず、自身のテナント内のネイティブモードのネットワークでのみ動作します。

これはMicrosoft APIの制限であり、このMCPサーバーの制限ではありません。将来的にMicrosoftがAPIを拡張して外部ネットワークをサポートすれば、このサーバーもそれに対応するように更新可能です。


仕組み

You ask Claude a question
        ↓
Claude calls this MCP server
        ↓
Server calls Viva Engage API using YOUR login
        ↓
Returns data only YOU can already see
        ↓
Claude answers your question

プライバシー: 各ユーザーが独自のAzureアプリを登録し、自身のMicrosoft資格情報を使用します。データが他者のインフラストラクチャを経由することはありません。ログイントークンは、あなたのマシン上にのみ暗号化されて保存されます。


前提条件

  • Node.js v18以上

  • Claude Desktop

  • Viva Engageにアクセス可能なMicrosoftの職場/学校アカウント


ステップ1 — Azureアプリの登録

これは初回のみのセットアップ(約10分)です。自身のMicrosoftアカウントでアプリを登録します。他の誰もあなたのアプリを使用することはできません。あなたの資格情報にのみ紐付いています。

  1. portal.azure.com にアクセスし、職場/学校のMicrosoftアカウントでサインインします

  2. **「アプリの登録」**を検索 → **「+ 新規登録」**をクリック

  3. 以下を入力:

    • 名前: mcp-viva-engage (任意)

    • サポートされているアカウントの種類: 複数のEntra IDテナント → すべてのテナントを許可を選択

    • リダイレクトURI:

      • プラットフォーム = パブリッククライアント/ネイティブ (モバイルおよびデスクトップ)

      • URI = http://localhost

  4. **「登録」**をクリック

  5. 概要ページで、以下の両方をコピーして保存してください:

    • アプリケーション (クライアント) ID

    • ディレクトリ (テナント) ID

API権限の追加

  1. 左側のサイドバーで**「APIのアクセス許可」**をクリック

  2. 「+ アクセス許可の追加」 → **「すべてのAPI」**タブ → **「Yammer」**を検索

  3. **「Yammer」**をクリック → **「委任されたアクセス許可」**をクリック

  4. 以下の4つの権限にチェックを入れます:

    • ✅ user_impersonation

    • ✅ Community.Read.All

    • ✅ EngagementConversation.ReadWrite.All

    • ✅ Storyline.ReadWrite.All

  5. **「アクセス許可の追加」**をクリック

職場/学校アカウントに関する注意: 初回ログイン前に、組織のIT管理者がこのアプリへの同意を付与する必要がある場合があります。これは初回のみのステップです。サーバーを初めて実行する際、ログイン画面から直接承認リクエストを送信できます。


ステップ2 — クローンとビルド

# Clone the repo
git clone https://github.com/pranav4186/mcp-viva-engage.git
cd mcp-viva-engage

# Install dependencies
npm install

# Build
npm run build

ステップ3 — 資格情報の設定

サンプルenvファイルをコピーします:

# Windows
copy .env.example .env

# Mac/Linux
cp .env.example .env

.envを開き、ステップ1で取得した値を入力します:

AZURE_CLIENT_ID=your-application-client-id-here
AZURE_TENANT_ID=your-directory-tenant-id-here

重要: .envファイルをGitHubにコミットしないでください。これを防ぐために既に.gitignoreに含まれています。


ステップ4 — Claude Desktopへの接続

Claude Desktopの設定ファイルを開きます:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Mac: ~/Library/Application Support/Claude/claude_desktop_config.json

mcpServersセクションにviva-engageサーバーを追加します:

{
  "mcpServers": {
    "viva-engage-mcp": {
      "command": "node",
      "args": ["C:/path/to/mcp-viva-engage/dist/server.js"],
      "env": {
        "AZURE_CLIENT_ID": "your-application-client-id-here",
        "AZURE_TENANT_ID": "your-directory-tenant-id-here"
      }
    }
  }
}

C:/path/to/mcp-viva-engage を、リポジトリをクローンした実際のパスに置き換えてください。 Windowsのパスでは、スラッシュ/またはダブルバックスラッシュ\を使用できます。

保存後、Claude Desktopを完全に終了して再起動してください。


ステップ5 — 初回ログイン

ClaudeにViva Engageについて初めて質問すると:

  1. Microsoftのログインページが記載されたブラウザウィンドウが自動的に開きます

  2. 職場/学校のMicrosoftアカウントでサインインします

  3. 権限を承認します

  4. ブラウザに**「Login successful!」**と表示されます

  5. Claudeがリクエストを完了します

セッションはマシン上で暗号化されて保持されます。Claude Desktopを再起動した際、再度ログインが必要になる場合があります。


利用可能なツール

ツール

説明

get_networks

所属しているすべてのViva Engageネットワークを取得

get_communities

ホームネットワーク内のすべてのコミュニティを一覧表示

get_community_by_id

IDを指定して特定のコミュニティの詳細を取得

get_community_messages

特定のコミュニティ内のすべての投稿を取得

get_thread

会話スレッド内のすべてのメッセージを取得

search_messages

ホームネットワーク全体で投稿を検索

post_message

コミュニティに新しいメッセージを投稿

reply_to_message

既存の会話スレッドに返信

get_storyline_feed

個人のViva Engageストーリーラインフィードを取得


セキュリティとプライバシー

🔐 独自のAzureアプリ

各ユーザーが独自のアプリを登録 — 共有インフラストラクチャなし

🔐 独自の資格情報

自身のMicrosoftアカウントでログイン

🔐 暗号化されたトークン保存

トークンはWindows DPAPI(Mac/Linuxではプレーンファイル)を使用して暗号化

🔐 コード内に秘密情報なし

クライアントIDとテナントIDはローカルの.envファイルのみに保持

🔐 委任された権限

サーバーは、あなたがViva Engageですでに閲覧可能なもののみを参照可能

🔐 パスワードに非接触

認証は完全にMicrosoftが処理


プロジェクト構造

mcp-viva-engage/
├── src/
│   ├── auth/
│   │   └── auth.ts          # Microsoft OAuth login with DPAPI encrypted cache
│   ├── yammerClient.ts      # Viva Engage / Yammer API client
│   └── server.ts            # MCP server and tool definitions
├── .env.example             # Template — copy to .env and fill in your values
├── .gitignore               # Prevents .env from being committed
├── package.json
├── tsconfig.json
└── README.md

トラブルシューティング

初回ログイン時に「承認が必要です」と表示される

組織が新しいアプリに対して管理者の同意を求めています。IT管理者にAzureポータル → エンタープライズアプリケーション → mcp-viva-engageを検索 → 管理者の同意を付与するよう依頼してください。これは初回のみの操作です。

Claude Desktopにサーバーが表示されない

設定ファイルを編集した後、Claude Desktopを完全に終了して再起動してください。dist/server.jsへのパスが正しいか確認してください。

再起動後に再度ログインが必要になる

暗号化されたトークンの有効期限が切れている可能性があります。再度ログインしてください。ログイン後にセッションがキャッシュされます。

ホームネットワークのコミュニティしか表示されない

これは仕様です。上記の重要な制限セクションを参照してください。Yammer REST APIはホームネットワークへのアクセスのみをサポートしています。

Windowsでのパスの問題

設定ファイルでは、スラッシュ C:/path/to/dist/server.js またはダブルバックスラッシュ C:\\path\\to\\dist\\server.js を使用してください。


既知の制限

  • ホームネットワークのみ — 外部ネットワーク(例:Microsoft BC Partnersコミュニティ)には、公開されているMicrosoft APIではアクセスできません。上記の説明を参照してください。

  • レート制限 — Yammer APIは、ユーザー1人あたり、アプリ1つあたり、30秒間に10リクエストまで許可されています。

  • 読み取り専用検索 — 検索結果はViva Engageがインデックスしているものに限定されます。


ロードマップ

  • [ ] ユーザーがローカル設定を不要にするため、リモートコネクタに変換

  • [ ] 大規模なコミュニティフィードのページネーションサポートを追加

  • [ ] より安全なトークン保存のためにWindows資格情報マネージャーをサポート

  • [ ] 将来的にMicrosoftがAPIサポートを追加した場合、外部ネットワークをサポート


ライセンス

MIT — 詳細はLICENSEを参照してください。


免責事項

これは独立したオープンソースプロジェクトであり、MicrosoftやViva Engageとは提携、推奨、サポートされていません。自己責任で使用してください。

Available Tools

9 tools
get_communitiesGet CommunitiesA

Get all Viva Engage communities/groups the user is a member of in their home network

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description must cover behavior. It states it returns communities but lacks details on pagination, authentication requirements, or response shape. For a no-parameter tool, the description is minimally transparent.

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?

Single sentence, clear and concise with no unnecessary words. Perfectly front-loaded.

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

Completeness4/5

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 parameters and no output schema, the description adequately states what it does. Could mention scope (home network) but that is already included. Complete enough.

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?

No parameters in schema, so baseline is 4. Description adds no parameter info, which is appropriate as there are none.

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

Purpose5/5

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

Description clearly states it retrieves all Viva Engage communities the user is a member of in their home network. Distinguishes from siblings like get_community_by_id (single community) and get_networks (networks).

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 for listing all member communities, but does not provide explicit guidance on when to use this vs alternatives like get_community_by_id for a specific community.

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

get_community_by_idGet Community By IDA

Get details of a specific Viva Engage community by its ID

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYesThe ID of the community/group

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states 'Get details,' which implies a read operation but does not explicitly confirm read-only nature, side effects, or any required permissions. This is insufficient for a tool with no annotations.

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 concise sentence that contains all essential information without any filler or repetition. Every word serves a purpose.

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 simplicity of the tool (one parameter, no nested objects, no output schema), the description is adequate but lacks any indication of the response format or fields returned. It could be more complete by mentioning what 'details' entails.

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% coverage—the parameter 'group_id' is described as 'The ID of the community/group' in the schema. The description does not add additional meaning beyond what the schema already provides, meeting the baseline of 3.

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

Purpose5/5

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

The description clearly states the action (Get details), the resource (Viva Engage community), and the method (by its ID). It distinguishes itself from sibling 'get_communities' which likely lists all communities.

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 when you have a specific community ID, but it does not explicitly state when to use this tool versus alternatives like 'get_communities' or 'get_community_messages'. No when-not or exclusion criteria are provided.

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

get_community_messagesGet Community MessagesB

Get all messages/posts in a specific Viva Engage community in the home network

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYesThe ID of the community/group

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description must fully convey behavioral traits. It indicates a read operation but omits details on pagination, sorting, filtering, authentication, rate limits, or what happens if the community is not found.

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?

A single, well-front-loaded sentence with no redundant words. Every part earns its place: verb, resource, community scope, and network qualification.

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?

For a simple list tool with one required parameter and no output schema, the description provides adequate purpose but lacks details on return format, limits, or ordering. It is sufficient for basic use but could be more complete.

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 already describes group_id as 'The ID of the community/group' (100% coverage), so the description adds little beyond reaffirming the context. Baseline 3 applies; the mention of 'home network' adds minimal value.

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

Purpose5/5

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

The description clearly states the verb 'Get', the resource 'messages/posts', and the scope 'in a specific Viva Engage community in the home network'. It distinguishes from siblings like get_thread (single thread) and post_message (write operation).

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 does not provide any guidance on when to use this tool versus alternatives such as search_messages or get_thread. No explicit usage context or exclusions are given.

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

get_networksGet NetworksA

Get all Viva Engage networks the user belongs to

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations provided, so description bears full burden. It only states operation without any behavioral traits like read-only, side effects, or rate limits. For a simple read, minimal but missing explicit safety cues.

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?

Single straightforward sentence with zero waste. Front-loads the action and resource.

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

Completeness4/5

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

Given no output schema and simplest tool, description explains what it returns (all networks user belongs to). Could mention output format or authentication, but context is adequate for a list operation.

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?

Input schema has no parameters (0 params), so baseline is 4. Description adds no additional param info, which is acceptable since none exist.

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

Purpose5/5

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

Description clearly uses verb 'Get' and resource 'networks', specifying scope 'the user belongs to'. It distinguishes from siblings like get_communities which are different resources.

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?

Description does not explicitly state when to use this tool vs alternatives, but the purpose is clear and siblings are distinct, so no immediate confusion. Still, lacks any usage guidance.

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

get_storyline_feedGet Storyline FeedA

Get the current user's Viva Engage storyline/personal feed

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are present, and the description only restates the function name. It doesn't disclose any behavioral aspects like authentication requirements, data freshness, or return format.

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, concise sentence with no unnecessary words.

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?

For a simple retrieval tool with no parameters, the description is adequate but could be improved by mentioning that it returns the feed for the authenticated user, especially since there is no output schema.

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 zero parameters with 100% coverage, so the description adds no extra semantics beyond confirming it's a parameterless call.

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

Purpose5/5

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 'Viva Engage storyline/personal feed', which is distinct from sibling tools like get_communities or get_thread.

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?

No explicit when-to-use or alternatives are provided, but the purpose is clear enough that the agent can infer it's for retrieving the current user's personal feed.

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

get_threadGet ThreadC

Get all messages in a specific conversation thread

ParametersJSON Schema
NameRequiredDescriptionDefault
thread_idYesThe ID of the thread to retrieve

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided. The description does not disclose behavioral traits such as read-only nature, pagination, error handling, or rate limits. The 'get' verb implies reading but is not explicit.

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?

Single sentence, front-loaded with purpose. No redundant information, but could be more structured with 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?

Missing crucial details: What does the output contain? Is there ordering or filtering? No output schema, so description should compensate. Incomplete for an agent to fully understand behavior.

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 has 100% description coverage for the sole parameter, so the schema already explains it. The description adds no further semantics beyond restating the parameter role.

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 retrieves all messages in a specific thread, using a specific verb and resource. It distinguishes from sibling tools like get_community_messages but could be more explicit.

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 on when to use this tool versus alternatives like get_community_messages or search_messages. Missing context on prerequisites or exclusion cases.

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

post_messagePost MessageC

Post a new message to a Viva Engage community

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYesThe ID of the community to post to
bodyYesThe content of the message to post

TDQS

C2.9/5.0
Behavior2/5

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

No annotations, so description must disclose side effects. Does not mention mutation, rate limits, formatting, or success/error behavior.

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?

Single sentence, no fluff. Efficient for a simple operation.

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?

Minimal description for a creation tool. No mention of return value, error cases, or community identification. With sibling reply_to_message, should differentiate.

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 covers 100% of parameters with descriptions. Description adds no extra parameter context beyond 'post to a community', so baseline score of 3.

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?

Clearly states verb 'Post a new message to a Viva Engage community'. Specific enough but lacks detail on message type and doesn't differentiate from sibling reply_to_message explicitly.

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 on when to use versus alternatives like reply_to_message. No mention of prerequisites (e.g., obtaining group_id).

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

reply_to_messageReply To MessageB

Reply to an existing message or conversation thread

ParametersJSON Schema
NameRequiredDescriptionDefault
thread_idYesThe ID of the message or thread to reply to
bodyYesThe content of the reply

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided. Description implies write operation but lacks detail on behavior (e.g., quotting, character limits).

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?

Single concise sentence, front-loaded with key action and resource.

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?

Sufficient for basic understanding but missing behavioral details that would aid an agent (e.g., markdown support, permissions).

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 covers both parameters with descriptions. Tool description adds no extra meaning beyond schema.

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

Purpose5/5

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

Clear verb 'reply' and resource 'existing message or conversation thread'. Distinguishes from siblings like post_message.

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?

Does not specify when to use vs alternatives (e.g., post_message for new threads). No context on when not to use.

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

search_messagesSearch MessagesA

Search for posts and messages across all communities in the home network

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe search term or question to search for

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description bears full responsibility for behavioral disclosure. It indicates search across all communities but omits critical details such as read-only nature, rate limits, response format, pagination, or authentication requirements, which are essential for safe usage.

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?

A single, front-loaded sentence that efficiently conveys the tool's purpose with no superfluous information. Every word earns its place.

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 simplicity of the tool (one parameter, no output schema), the description is minimally viable but lacks behavioral context such as search behavior (e.g., case sensitivity, full-text), result limits, or how results are structured. Sibling tools exist but are not referenced.

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% for the single parameter, so baseline is 3. The description adds context about the search scope (across all communities) but does not enhance the parameter's meaning beyond the schema's 'search term or question'.

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

Purpose5/5

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

The description clearly states the tool searches for posts and messages across all communities in the home network, providing a specific verb and resource scope. It effectively distinguishes itself from sibling tools like get_community_messages or get_thread, which operate on narrower contexts.

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?

No explicit guidance on when to use this tool versus alternatives. The scope is implied by contrasting with siblings (e.g., get_community_messages for a specific community), but the description does not state exclusions or provide direct comparison.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv1.0.0
    • First observedget_communities
    • First observedget_community_by_id
    • First observedget_community_messages
    • First observedget_networks
    • First observedget_storyline_feed
    • First observedget_thread
    • First observedpost_message
    • First observedreply_to_message
    • First observedsearch_messages

TDQS

A3.7/5.0

Scored across 9 tools

Disambiguation5/5

Each tool targets a distinct resource or action: communities are separate from messages, threads, feeds, and networks. No apparent overlap between tools like get_community_messages and get_thread, as one fetches all posts in a community and the other retrieves a specific conversation thread.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., get_communities, post_message, search_messages). No mixing of styles or vague verbs.

Tool Count5/5

With 9 tools covering communities, messages, threads, networks, feeds, and search, the count is well-scoped for a social engagement platform. Each tool serves a clear purpose without unnecessary redundancy.

Completeness4/5

The tool set covers core read and write operations for communities and messages, including posting and replying. However, it lacks update and delete functionality for messages, which is a minor gap for full lifecycle management.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables sending and receiving Instagram Direct Messages, managing conversations, downloading media, viewing user profiles and stories, and interacting with posts through natural language in Claude.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables Claude Desktop to manage your LinkedIn profile and company pages, including posting, reading posts, and fetching profile information.
    7
    66 npm
    4
    MIT