Skip to main content
Glama
axeams-mcp

axeams-mcp

by flol3622

axeams-mcp

Let Claude read Microsoft Teams for Mac: chats, channels and threads, without Graph, tokens or app registrations

Claude Code plugin MCP Platform Tools Posts License

axeams (Accessibility + Teams) is a local MCP server that reads the Teams app you are already signed in to, through the macOS Accessibility API. It works where tenant policy blocks the official Microsoft 365 connectors. Sibling of axlook-mcp.

Read-only by design: it never posts, replies or reacts.

/plugin marketplace add flol3622/axeams-mcp
/plugin install axeams-mcp@axeams

🧰 Tools

Tool

What it does

teams_status

Teams running, Accessibility granted, current view

teams_list_chats

Chats with kind (chat, group, meeting), section, unread flag, last activity, preview

teams_read_chat

Messages of one chat: author, time, text, attachments, reactions

teams_list_teams

Teams you belong to

teams_list_channels

A team's channels by section

teams_read_channel

Posts with subject, reply count and inline replies

teams_read_thread

One post with every reply

teams_list_files

Names in a channel's Shared tab (no contents)

teams_get_conventions / teams_set_conventions

Your personal rules (see below)

teams_ui_snapshot

Debug dump of the accessibility tree

Read tools take older (scroll back N times) and limit.

teams_list_teams → teams_list_channels → teams_read_channel → teams_read_thread
teams_list_chats → teams_read_chat

Related MCP server: Teams MCP Server

📦 Install

You need: macOS 13+, the new Microsoft Teams for Mac (English UI), Node.js 18+ or Bun.

Claude Code

/plugin marketplace add flol3622/axeams-mcp
/plugin install axeams-mcp@axeams

From a local checkout: /plugin marketplace add /path/to/axeams-mcp.

Grant Accessibility (once)

Enable the app that runs Claude (Terminal, iTerm, VS Code, Cursor or Claude) in System Settings → Privacy & Security → Accessibility, then restart it. teams_status reports trusted: true once it works.

Other MCP clients

{
  "mcpServers": {
    "axeams": { "command": "/bin/sh", "args": ["/Users/YOU/axeams-mcp/scripts/start.sh"] }
  }
}

🧭 Personal conventions

Each user keeps their own rules in ~/.config/axeams/conventions.md (or $AXEAMS_CONFIG_DIR). The server shows them to Claude; the conventions skill sets them up. For example, where channel files can be read:

# Files
- Channel files are synced under `~/Library/CloudStorage/<cloud folder>`; search there yourself
  (channel libraries appear as "<team> - <channel>").

The MCP itself never reads file contents: that stays with Claude's normal file tools, guided by your conventions.


⚠️ Limitations

  • English UI only. Labels such as "Message List", "Posts" and "Back to All teams" are matched.

  • Loaded history only. Teams virtualizes lists; older scrolls back to load more.

  • Navigation is visible. Reading a chat or channel opens it in Teams and marks it read.

  • Not yet: search, chats not in the visible chat list, hidden channels, subfolders in Shared, Activity feed.

  • Locked screen. Nothing works while the Mac is locked.


🛠️ Development

.claude-plugin/       plugin.json (MCP server entry) + marketplace.json
skills/               teams (tool usage) and conventions (personal setup) skills
scripts/start.sh      launcher: picks Node/Bun, checks the helper (rebuilds it from source if needed)
dist/                 shipped build: axeams-mcp.js + axeams-helper (universal, ad-hoc signed)
helper/TeamsAX.swift  generic Accessibility bridge (JSON lines over stdio)
src/                  ax.ts, conventions.ts, teams/{session,parse,chat,channels}.ts, server.ts
assets/               logo.svg, icon.png, hero.svg/png, social-preview.png
test/                 parser and conventions tests (synthetic data)
bun install
bun run build        # dist/axeams-helper and dist/axeams-mcp.js
bun test && bun run typecheck
claude plugin validate . --strict
bun scripts/mcp-call.ts teams_list_chats '{}'   # live call through MCP

Verified on Teams 26289 / macOS 27.

License

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Lets a Claude Code agent read and post in a fixed allowlist of Microsoft Teams group chats using an ordinary user account, with tools for messaging, replying, editing, deleting, and polling.
    1
    Elastic 2.0
  • A
    license
    A
    quality
    B
    maintenance
    Enables Claude Code to read and operate macOS app interfaces through the accessibility tree, pressing buttons, setting text fields, typing with IME support, sending shortcuts, scrolling, dragging, and capturing screenshots. It drives background apps without moving the mouse or stealing focus from the user's current work.
    12
    22 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables Claude to search, read, summarize, and ask about your own Microsoft Teams chats stored locally in SQLite, with tools for listing chats, reading messages, fetching images/links, syncing full history through a logged-in browser session, and suggesting replies. It works with the new Teams macOS cache and does not require Microsoft Graph or admin consent.
    MIT