Read-only, offline MCP server for Teams: search chats, read conversations, surface trending topics, find people, and browse meetings & calls — straight from the local on-disk cache, with no Graph API, no cloud, no credentials, and token-economical output for coding agents. Built on libzaungast.
Zaungast provides 10 read-only tools for Teams cache inspection with consistent naming (verb_noun pattern: list_, read_, get_, search_, rank_, find_, describe_). All tools have descriptions (avg ~80 chars, within baseline 34-392). Input schemas are present and typed. However, parameter descriptions are sparse or missing entirely (e.g., 'kind' in list_conversations lacks guidance on when to filter; 'window' in rank_topics has no format spec like '7d' vs '7 days'). Output schemas are not documented, LLMs cannot predict response structure for chaining. Error handling is minimal; no recovery guidance. All tools are read-only (low risk), but lack the polish expected of production tools.
Inspect the Teams IndexedDB schema and get a proposed mapping for unrecognized builds
Find a person in the Teams cache by name or identifier
Get a specific message by ID
List calls and meetings from the Teams cache
List conversations (chats, channels, group chats) from the Teams cache
List calendar events from the Teams cache
Surface trending topics from conversations within a time window
Read messages from a conversation
Output schemas not documented. LLMs cannot predict response structure (fields, types, nesting) for downstream tool chaining or data extraction. E.g., does list_conversations return {id, name, type, lastMessage}? Does search return {messageId, conversationId, snippet, timestamp}?
Parameter descriptions are minimal or missing format/constraint guidance. 'window' in rank_topics lacks format spec (is it '7d', '7 days', or epoch seconds?). 'kind' in list_conversations has no guidance on when to filter. LLMs cannot infer valid values.
No error handling or recovery guidance. If a conversation ID is invalid, search fails, or a person is not found, tools return no actionable error message. LLMs cannot self-correct or suggest alternatives.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Read messages from a thread within a conversation
Search messages in the Teams cache
No pagination or result limits documented. Tools like list_conversations, list_events, list_calls, and search may return unbounded results, risking context window exhaustion. No 'limit' parameter guidance or 'total_count' in responses.
Tool composition risk: read_conversation and read_thread both accept 'conversation' as a string identifier, but no guidance on format (UUID, email, channel name?). Agents cannot reliably chain list_conversations → read_conversation without knowing the identifier format.