io.github.dockndevai/mcp-teams

السجل الرسمي أخرى

Read Microsoft Teams teams, channels, chats and messages, and post/reply/send, safe by default.

التثبيت

أضف هذا إلى إعدادات MCP في عميلك (Claude Desktop: claude_desktop_config.json، وCursor: ‏.cursor/mcp.json، ويستخدم VS Code وغيره الصيغة نفسها «mcpServers»).

NPM package @dockndevai/mcp-teams
Claude Code
claude mcp add mcp-teams -e 'TEAMS_CLIENT_ID=<TEAMS_CLIENT_ID>' -e 'TEAMS_TENANT_ID=<TEAMS_TENANT_ID>' -e 'TEAMS_CLIENT_SECRET=<your teams_client_secret>' -e 'TEAMS_TOKEN=<your teams_token>' -e 'TEAMS_MODE=<TEAMS_MODE>' -e 'TEAMS_ALLOW_SEND=<TEAMS_ALLOW_SEND>' -- npx -y @dockndevai/mcp-teams@0.2.0
إعداد JSON (Claude Desktop وCursor وVS Code)
{
    "mcpServers": {
        "mcp-teams": {
            "command": "npx",
            "args": [
                "-y",
                "@dockndevai/mcp-teams@0.2.0"
            ],
            "env": {
                "TEAMS_CLIENT_ID": "<TEAMS_CLIENT_ID>",
                "TEAMS_TENANT_ID": "<TEAMS_TENANT_ID>",
                "TEAMS_CLIENT_SECRET": "<your teams_client_secret>",
                "TEAMS_TOKEN": "<your teams_token>",
                "TEAMS_MODE": "<TEAMS_MODE>",
                "TEAMS_ALLOW_SEND": "<TEAMS_ALLOW_SEND>"
            }
        }
    }
}

متغيرات البيئة

  • TEAMS_CLIENT_ID Entra (Azure AD) app (client) id. For browser sign-in, register a public client with redirect URI http://localhost.
  • TEAMS_TENANT_ID Directory tenant: a tenant id, or common | organizations | consumers (default common).
  • TEAMS_CLIENT_SECRET سري App secret for app-only (client-credentials) auth. Omit to use interactive browser sign-in.
  • TEAMS_TOKEN سري A pre-obtained Microsoft Graph bearer token (alternative to browser or app-only auth).
  • TEAMS_MODE Access mode: read-only | read-write | admin. Starts read-only; writes need read-write.
  • TEAMS_ALLOW_SEND Set true to permit posting messages (channel/chat send & reply). Off by default.

التوثيق

مأخوذ من ملف README للمشروع على GitHub ويُحدَّث أسبوعيًا. تفتح الروابط على GitHub.

المحتويات
  1. mcp-teams
  2. What it gives an agent
  3. Install
  4. Configure
  5. Authentication
  6. Safe by default
  7. Developing
  8. Licence

mcp-teams

A safe-by-default Model Context Protocol server for Microsoft Teams, over Microsoft Graph. It lets an agent read and operate Teams — list joined teams, channels and members, read channel messages and threaded replies, read 1:1/group chats and their messages, and (in higher modes) post to channels, reply in threads, send chat messages, and soft-delete a message.

Browser sign-in: on first run it opens your browser to the Microsoft sign-in page, then caches the token and refreshes it silently — the server never sees your password.

Part of the dockndevai MCP server suite — one governance model across all of them.

What it gives an agent

The server starts read-only (see Safe by default); higher-capability tools are only registered when you raise the mode.

ToolForNeeds mode
whoamiconfirm which account is in useread-only
list_teamsteams the user has joinedread-only
list_channelschannels in a teamread-only
list_team_membersmembers of a teamread-only
list_channel_messagesrecent messages in a channelread-only
get_channel_messageone channel message + bodyread-only
list_message_repliesa channel message's threadread-only
list_chatsthe user's 1:1 / group chatsread-only
list_chat_messagesmessages in a chatread-only
send_channel_messagepost to a channelread-write + TEAMS_ALLOW_SEND
reply_channel_messagereply in a channel threadread-write + TEAMS_ALLOW_SEND
send_chat_messagesend a chat messageread-write + TEAMS_ALLOW_SEND
delete_channel_messagesoft-delete your own messageadmin + TEAMS_ALLOW_DELETE

Install

npx -y @dockndevai/mcp-teams

You need an Entra (Azure AD) app registration. For the default browser sign-in, register a public client and add the redirect URI http://localhost (platform: Mobile and desktop applications), then use its Application (client) ID as TEAMS_CLIENT_ID. Grant delegated Team.ReadBasic.All, Channel.ReadBasic.All, ChannelMessage.Read.All (and ChannelMessage.Send / Chat.ReadWrite to post). No client secret is needed for interactive use.

Configure

{
  "mcpServers": {
    "teams": {
      "command": "npx",
      "args": ["-y", "@dockndevai/mcp-teams"],
      "env": {
        "TEAMS_CLIENT_ID": "00000000-0000-0000-0000-000000000000",
        "TEAMS_TENANT_ID": "common",
        "TEAMS_MODE": "read-only"
      }
    }
  }
}

On first use the server opens your browser to sign in and caches the token at ~/.mcp-teams/token.json (0600); later runs refresh silently.

See docs/CLIENTS.md for Claude Code / Cursor / Codex / VS Code / Windsurf snippets, and .env.example for every supported variable.

Authentication

Auth mode is chosen automatically (override with TEAMS_AUTH):

  • interactive (default) — only TEAMS_CLIENT_ID set. Authorization-code + PKCE with a loopback redirect: the browser opens, you approve once, and the access + refresh token are cached on disk. Most Teams messaging APIs are delegated-only, so this is the primary mode. The server never handles your password.
  • client-credentials (app-only) — TEAMS_CLIENT_SECRET present; the server fetches an app token itself. Note that several Teams message APIs are not available to app-only tokens without protected-API approval from Microsoft.
  • token — TEAMS_TOKEN set to a pre-obtained Graph bearer token. You manage its lifetime.

Safe by default

The access model is enforced by src/security.ts — defence in depth on top of the Graph token's own scopes/roles:

  • TEAMS_MODE — read-only (default) → read-write → admin. A tool is registered only if the mode allows its capability. Read-only exposes the 9 read tools; posting needs read-write; deletes need admin.
  • TEAMS_ALLOW_SEND — posting a message is visible to others and can't be silently un-posted, so on top of read-write it also requires this flag.
  • TEAMS_ALLOW_DELETE — deletes require this flag on top of admin mode. Deletes are soft-deletes (recoverable), and only your own messages.
  • TEAMS_TEAM_ALLOWLIST / TEAMS_PROTECTED_TEAMS — confine which teams can be posted to / moderated; mark teams that may be read but never posted to.
  • Interactive confirmation — when the client supports MCP elicitation, posting and deleting pause and ask the human to approve the exact target before running; clients that can't elicit fall back to the TEAMS_ALLOW_SEND / TEAMS_ALLOW_DELETE gates.
  • TEAMS_DRY_RUN — validate and log writes without executing them.
  • TEAMS_AUDIT_LOG — a JSON audit line per guarded operation, on stderr (default on).

See SECURITY.md.

Developing

npm install
npm run build
# introspect the tool list without signing in (uses a fake token, no network):
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | TEAMS_TOKEN=x node dist/index.js
npm test

Licence

MIT

الأسئلة الشائعة

ما هو io.github.dockndevai/mcp-teams؟

Read Microsoft Teams teams, channels, chats and messages, and post/reply/send, safe by default.

كيف أثبّت io.github.dockndevai/mcp-teams؟

يعمل على جهازك. في Claude Code: claude mcp add mcp-teams -e 'TEAMS_CLIENT_ID=<TEAMS_CLIENT_ID>' -e 'TEAMS_TENANT_ID=<TEAMS_TENANT_ID>' -e 'TEAMS_CLIENT_SECRET=<your teams_client_secret>' -e 'TEAMS_TOKEN=<your teams_token>' -e 'TEAMS_MODE=<TEAMS_MODE>' -e 'TEAMS_ALLOW_SEND=<TEAMS_ALLOW_SEND>' -- npx -y @dockndevai/mcp-teams@0.2.0. وفي العملاء الآخرين، الصق إعداد JSON من هذه الصفحة في إعدادات MCP الخاصة بهم.

هل يحتاج io.github.dockndevai/mcp-teams إلى مفتاح API؟

نعم. يتطلب TEAMS_CLIENT_SECRET, TEAMS_TOKEN، وتضبطها في إعداداته.

هل io.github.dockndevai/mcp-teams مفتوح المصدر؟

نعم. شيفرته متاحة على GitHub بترخيص MIT.

من يصون io.github.dockndevai/mcp-teams؟

ينشره dockndevai. يدرجه AI.tn لكنه لا يصونه ولا يوصي به.

من سجل MCP الرسمي. الإدراج ليس توصية: راجع شيفرة الخادم وصلاحياته قبل منحه الوصول إلى بياناتك.