Skip to content

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-sqlite flag is enabled automatically (the CLI re-execs itself with it); on Node ≥ 24 node:sqlite is stable and no flag is involved.

Claude Code

claude mcp add zaungast -s user -- npx -y zaungast
  • -s user registers 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 list should show zaungast … ✓ 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.