Installation¶
Requirements¶
- Windows with the new Teams desktop app (
MSTeams/ WebView2), signed in at least once so a local cache exists. Teams on macOS uses a different storage engine (WebKit, SQLite-backed IndexedDB) and is not supported yet. - Node.js ≥ 22.5 — zaungast uses the built-in
node:sqlite. On Node 22 the required--experimental-sqliteflag is enabled automatically (the CLI re-execs itself with it); on Node ≥ 24node:sqliteis stable and no flag is involved.
Claude Code¶
claude mcp add zaungast -s user -- npx -y zaungast
-s userregisters it for every project (drop it for this-project-only).- No environment variables are needed — the local Teams database is auto-discovered.
- Verify:
claude mcp listshould showzaungast … ✓ Connected. Open a new session to use the tools.
Claude Desktop / generic MCP config¶
{
"mcpServers": {
"zaungast": { "command": "npx", "args": ["-y", "zaungast"] }
}
}
Add environment variables under an "env" key if needed (see Configuration).
From source¶
git clone https://github.com/mbe24/zaungast && cd zaungast
npm install
npm run build
Then register the built entry point:
claude mcp add zaungast -s user -- node "C:\\path\\to\\zaungast\\dist\\index.js"
(The entry point auto-enables --experimental-sqlite on Node 22, so you don't need to pass
it.) After any code change, re-run npm run build and restart the server (a fresh session
re-spawns it).
Finding the Teams database folder¶
zaungast auto-discovers this, so you normally don't need it — but if discovery fails or you
have multiple profiles, set TEAMS_LEVELDB_DIR to the folder described here.
The new Teams client stores its data under:
%LOCALAPPDATA%\Packages\MSTeams_8wekyb3d8bbwe\LocalCache\Microsoft\MSTeams\EBWebView\<profile>\IndexedDB\
Inside that IndexedDB\ folder you'll see two entries for the Teams origin:
IndexedDB\
├── https_teams.microsoft.com_0.indexeddb.leveldb ← this one (set TEAMS_LEVELDB_DIR to it)
└── https_teams.microsoft.com_0.indexeddb.blob ← sibling blob store (not used)
The folder you want is the one ending .leveldb — it contains CURRENT, MANIFEST-*,
and the *.ldb / *.log files. Set TEAMS_LEVELDB_DIR to that folder, not its parent
IndexedDB\ directory (which holds both). The .blob sibling (images and large binaries) is
a handy landmark that you're in the right place — zaungast doesn't read it.
Find the exact path with PowerShell:
Get-ChildItem "$env:LOCALAPPDATA\Packages\MSTeams_*\LocalCache\Microsoft\MSTeams\EBWebView\*\IndexedDB\https_teams.microsoft.com_0.indexeddb.leveldb" -Directory | Select-Object -ExpandProperty FullName
Multiple Teams profiles / accounts¶
zaungast picks the most-recently-active https_teams.microsoft.com database it finds. If you
have several profiles (multiple <profile> or WV2Profile_* directories) and it picks the
wrong one, pin the right one explicitly with TEAMS_LEVELDB_DIR using the path above.