Skip to main content
Glama

mcp-viva-engage

Ein Open-Source Model Context Protocol (MCP) Server, der Claude AI mit Viva Engage (Yammer) verbindet. Durchsuchen Sie Ihre Home-Network-Communities, suchen Sie nach Beiträgen, lesen Sie Unterhaltungen und posten Sie Antworten – alles durch natürliche Konversation mit Claude.

Erstellt von Pranav Joshi


Was Sie tun können

Sobald die Verbindung hergestellt ist, können Sie Claude Dinge fragen wie:

  • "Welchen Viva Engage Communities gehöre ich an?"

  • "Suche nach Beiträgen über Business Central Fehler"

  • "Was sind die neuesten Unterhaltungen in der Entwickler-Community?"

  • "Antworte auf diesen Thread mit..."

  • "Zeige mir meinen Viva Engage Feed"


Related MCP server: linkedin-mcp-server

Wichtige Einschränkung — Nur Home Network

Dieser MCP-Server funktioniert nur mit Ihrem Home Network (dem primären Organisationsnetzwerk, das mit Ihren Anmeldedaten verknüpft ist).

Warum kann nicht auf externe Netzwerke zugegriffen werden?

Viva Engage unterstützt zwei Arten von Netzwerken:

  • Home Network — Ihre primäre Organisation (z. B. das Viva Engage Ihres Unternehmens)

  • Externe Netzwerke — Communities, die von anderen Organisationen gehostet werden, bei denen Sie Gastmitglied sind (z. B. die Microsoft BC Partners Community)

Die Yammer REST API (www.yammer.com/api/v1) gibt unabhängig von den verwendeten Parametern oder Token nur Daten aus Ihrem Home Network zurück. Externe Netzwerke erfordern Browser-Sitzungscookies, die erst nach einer vollständigen webbasierten Anmeldung verfügbar sind – etwas, das nicht allein durch API-Aufrufe repliziert werden kann.

Microsofts neuere Graph API (graph.microsoft.com) unterstützt ebenfalls keine externen Netzwerke – sie funktioniert nur mit Netzwerken im nativen Modus innerhalb Ihres eigenen Tenants.

Dies ist eine Einschränkung der Microsoft API, keine Einschränkung dieses MCP-Servers. Sollte Microsoft seine API in Zukunft um die Unterstützung externer Netzwerke erweitern, kann dieser Server aktualisiert werden, um diese zu unterstützen.


Funktionsweise

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

Datenschutz: Jeder Benutzer registriert seine eigene Azure-App und verwendet seine eigenen Microsoft-Anmeldedaten. Es fließen niemals Daten über die Infrastruktur Dritter. Ihr Anmeldetoken wird nur verschlüsselt auf Ihrem Computer gespeichert.


Voraussetzungen


Schritt 1 — Registrieren Sie Ihre eigene Azure-App

Dies ist eine einmalige Einrichtung (~10 Minuten). Sie registrieren Ihre eigene App unter Ihrem eigenen Microsoft-Konto. Niemand sonst kann Ihre App verwenden – sie ist nur an Ihre Anmeldedaten gebunden.

  1. Gehen Sie zu portal.azure.com und melden Sie sich mit Ihrem Microsoft Arbeits-/Schulkonto an

  2. Suchen Sie nach "App-Registrierungen" → klicken Sie auf "+ Neue Registrierung"

  3. Füllen Sie Folgendes aus:

    • Name: mcp-viva-engage (oder ein beliebiger Name)

    • Unterstützte Kontotypen: Mehrere Entra ID-Tenants → wählen Sie Alle Tenants zulassen

    • Umleitungs-URI:

      • Plattform = Öffentlicher Client/nativ (mobil & Desktop)

      • URI = http://localhost

  4. Klicken Sie auf "Registrieren"

  5. Kopieren und speichern Sie auf der Übersichtsseite beide dieser Werte:

    • Anwendungs-ID (Client-ID)

    • Verzeichnis-ID (Tenant-ID)

API-Berechtigungen hinzufügen

  1. Klicken Sie in der linken Seitenleiste auf "API-Berechtigungen"

  2. Klicken Sie auf "+ Berechtigung hinzufügen" → klicken Sie auf den Tab "Alle APIs" → suchen Sie nach "Yammer"

  3. Klicken Sie auf "Yammer" → klicken Sie auf "Delegierte Berechtigungen"

  4. Aktivieren Sie diese vier Berechtigungen:

    • ✅ user_impersonation

    • ✅ Community.Read.All

    • ✅ EngagementConversation.ReadWrite.All

    • ✅ Storyline.ReadWrite.All

  5. Klicken Sie auf "Berechtigungen hinzufügen"

Hinweis für Arbeits-/Schulkonten: Der IT-Administrator Ihrer Organisation muss möglicherweise die Zustimmung für diese App erteilen, bevor Sie sich zum ersten Mal anmelden können. Dies ist ein einmaliger Schritt. Sie können direkt vom Anmeldebildschirm aus eine Genehmigungsanfrage senden, wenn Sie den Server zum ersten Mal ausführen.


Schritt 2 — Klonen und Erstellen

# 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

Schritt 3 — Konfigurieren Sie Ihre Anmeldedaten

Kopieren Sie die Beispiel-Env-Datei:

# Windows
copy .env.example .env

# Mac/Linux
cp .env.example .env

Öffnen Sie .env und tragen Sie Ihre Werte aus Schritt 1 ein:

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

Wichtig: Committen Sie niemals Ihre .env-Datei auf GitHub. Sie ist bereits in der .gitignore enthalten, um dies zu verhindern.


Schritt 4 — Verbindung mit Claude Desktop herstellen

Öffnen Sie Ihre Claude Desktop Konfigurationsdatei:

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

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

Fügen Sie den viva-engage Server zum Abschnitt mcpServers hinzu:

{
  "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"
      }
    }
  }
}

Ersetzen Sie C:/path/to/mcp-viva-engage durch den tatsächlichen Pfad, unter dem Sie das Repo geklont haben. Windows-Pfade können Schrägstriche / oder doppelte Backslashes \ verwenden.

Beenden Sie Claude Desktop vollständig und starten Sie es neu, nachdem Sie gespeichert haben.


Schritt 5 — Erste Anmeldung

Wenn Sie Claude das erste Mal etwas über Viva Engage fragen:

  1. Ein Browserfenster öffnet sich automatisch mit der Microsoft-Anmeldeseite

  2. Melden Sie sich mit Ihrem Microsoft Arbeits-/Schulkonto an

  3. Genehmigen Sie die Berechtigungen

  4. Der Browser zeigt "Anmeldung erfolgreich!"

  5. Claude führt Ihre Anfrage aus

Ihre Sitzung wird verschlüsselt auf Ihrem Computer gespeichert. Wenn Sie Claude Desktop neu starten, müssen Sie sich möglicherweise erneut anmelden.


Verfügbare Tools

Tool

Beschreibung

get_networks

Ruft alle Viva Engage Netzwerke ab, denen Sie angehören

get_communities

Listet alle Communities in Ihrem Home Network auf

get_community_by_id

Ruft Details einer bestimmten Community nach ID ab

get_community_messages

Ruft alle Beiträge in einer bestimmten Community ab

get_thread

Ruft alle Nachrichten in einem Unterhaltungs-Thread ab

search_messages

Durchsucht Beiträge in Ihrem gesamten Home Network

post_message

Postet eine neue Nachricht in einer Community

reply_to_message

Antwortet auf einen bestehenden Unterhaltungs-Thread

get_storyline_feed

Ruft Ihren persönlichen Viva Engage Storyline-Feed ab


Sicherheit & Datenschutz

🔐 Ihre eigene Azure-App

Jeder Benutzer registriert seine eigene App — keine geteilte Infrastruktur

🔐 Ihre eigenen Anmeldedaten

Sie melden sich mit Ihrem eigenen Microsoft-Konto an

🔐 Verschlüsselte Token-Speicherung

Token wird mit Windows DPAPI (oder als einfache Datei auf Mac/Linux) verschlüsselt

🔐 Keine Geheimnisse im Code

Client-ID und Tenant-ID bleiben nur in Ihrer lokalen .env-Datei

🔐 Delegierte Berechtigungen

Der Server kann nur sehen, was Sie bereits in Viva Engage sehen können

🔐 Passwort wird nie berührt

Microsoft übernimmt die Authentifizierung vollständig


Projektstruktur

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

Fehlerbehebung

"Genehmigung erforderlich" bei der ersten Anmeldung

Ihre Organisation erfordert eine Administratorzustimmung für neue Apps. Bitten Sie Ihren IT-Administrator, die App im Azure-Portal zu genehmigen → Unternehmensanwendungen → mcp-viva-engage suchen → Administratorzustimmung erteilen. Dies ist eine einmalige Aktion.

Server wird nicht in Claude Desktop angezeigt

Beenden Sie Claude Desktop vollständig und starten Sie es neu, nachdem Sie die Konfigurationsdatei bearbeitet haben. Überprüfen Sie, ob der Pfad zu dist/server.js korrekt ist.

Anmeldung nach Neustart erneut erforderlich

Das verschlüsselte Token ist möglicherweise abgelaufen. Melden Sie sich einfach erneut an — die Sitzung wird nach der Anmeldung zwischengespeichert.

Nur Communities des Home Networks sichtbar

Dies ist zu erwarten — siehe den Abschnitt Wichtige Einschränkung oben. Die Yammer REST API unterstützt nur den Zugriff auf das Home Network.

Pfadprobleme unter Windows

Verwenden Sie entweder Schrägstriche C:/path/to/dist/server.js oder doppelte Backslashes C:\\path\\to\\dist\\server.js in der Konfigurationsdatei.


Bekannte Einschränkungen

  • Nur Home Network — Externe Netzwerke (z. B. Microsoft BC Partners Community) sind über keine öffentliche Microsoft API zugänglich. Siehe Erklärung oben.

  • Ratenbegrenzung — Die Yammer API erlaubt 10 Anfragen pro Benutzer pro App alle 30 Sekunden.

  • Nur-Lese-Suche — Suchergebnisse sind auf das beschränkt, was Viva Engage indiziert.


Roadmap

  • [ ] Umwandlung in einen Remote-Connector, damit Benutzer keine lokale Einrichtung benötigen

  • [ ] Unterstützung für Paginierung bei großen Community-Feeds hinzufügen

  • [ ] Unterstützung für Windows Credential Manager für noch sicherere Token-Speicherung

  • [ ] Unterstützung für externe Netzwerke, falls Microsoft in Zukunft API-Unterstützung hinzufügt


Lizenz

MIT — siehe LICENSE für Details.


Haftungsausschluss

Dies ist ein unabhängiges Open-Source-Projekt und ist nicht mit Microsoft oder Viva Engage verbunden, wird von diesen nicht unterstützt oder gefördert. Nutzung auf eigene Gefahr.

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