Microsoft Graph MCP 服务器

使用说明(Markdown 格式)

  • 项目简介

    • 该仓库实现了一个基于 FastMCP 的 MCP 服务器,聚焦对 Microsoft Graph 的上下文服务能力:资源托管与数据访问、工具注册与执行,以及提示模板的定义与渲染,提供对 LLM 客户端的标准化上下文服务。
  • 主要功能点

    • 提供 Microsoft Graph API 的统一调用入口(工具)。
    • 支持文档读取、文件下载、以及与 SharePoint/OneDrive 的交互能力。
    • 支持 Interactive(OAuth 2.0 授权码流程)和 Client Credentials 两种认证模式。
    • 通过 JSON-RPC 与客户端通信,支持资源、工具、提示等 MCP 概念。
    • 提供 HTTP(my MCP HTTP Stream) 与 stdio 传输,便于在服务器或本地环境中运行。
    • 内置的资源缓存、错误处理、以及对 AI 场景的工具扩展(如 SharePoint 搜索、Azure AI Search 等)。
  • 安装步骤

    • 依赖环境:Node.js(适配 ES 模块)、pnpm/npm。
    • 安装包:通过 npm 或 pnpm 安装本 MCP 服务器包。
    • 运行前置配置:设置 Azure AD 应用、Graph 权限、以及环境变量(见下方配置示例)。
  • 服务器配置(MCP 客户端需要的启动配置示例,json 格式;请将其用于 MCP 客户端的启动脚本或工具配置)

    • 说明:该配置用于描述如何从 MCP 客户端启动并连接到服务器。服务器名称为 microsoft-graph,启动命令为 npx microsoft-mcp-server,环境变量根据实际部署设置。
    • 配置示例(以 json 表示,便于直接拷贝给 MCP 客户端使用;请注意替换占位信息): { "servers": { "microsoft-graph": { "name": "Microsoft Graph MCP Server", "command": "npx", "args": ["microsoft-mcp-server"], "env": { "TRANSPORT_TYPE": "httpStream", "AZURE_AUTH_MODE": "interactive", "AZURE_TENANT_ID": "common", "AZURE_CLIENT_ID": "<your-client-id>", "AZURE_CLIENT_SECRET": "<your-client-secret>", "BASE_URL": "http://localhost:8080", "PORT": "8080", "GRAPH_SCOPES": "openid,profile,email,User.Read,Mail.Read,Calendars.Read,Files.Read,Sites.Read.All", "MCP_API_KEY": "<optional-api-key-for-endpoint-security>" } } } }
  • 基本使用方法

    • 启动服务器:在支持的环境中,执行上述启动配置对应的命令(示例中为 npx microsoft-mcp-server),服务器默认监听 http://localhost:8080,OAuth 回调端点为 /oauth/callback(若启用交互模式)。
    • 客户端集成:将 MCP 客户端(例如 Claude Desktop、Claude Code CLI 等)指向服务器的地址,并按需要配置工具和资源的访问参数。
    • 主要工具和能力:microsoft_graph(执行 Graph API 请求)、microsoft_graph_batch(批量请求)、download_file/read_document、get_upload_config、read_document、以及 SharePoint 搜索等工具;可扩展新增其他 Graph 或自定义工具。
    • 安全性与认证:支持 Interactive 与 Client Credentials 两种模式;可选 API Key 保护端点。若需要,请在环境变量中开启 MCP_API_KEY 并配置相应客户端头部。
  • 额外注意

    • 若使用 Client Credentials 模式,请确保 Azure 租户对应权限配置正确(必须有应用权限、并完成管理员同意),并将 AZURE_TENANT_ID 设置为具体租户。
    • 部署时可结合不同传输类型(httpStream、stdio)及端口配置,以适应不同运行环境与工作流。

服务器信息