微软365模型上下文协议服务器

一个基于Docker和Kubernetes部署的微软365模型上下文协议(MCP)服务器,通过Microsoft Graph API提供90多种微软365工具和服务的集成。

  • by lharillo
  • Dockerfile
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 lharillo/ms365-mcp

使用说明

ms365 mcp

Docker化部署 ms-365-mcp服务器 -用于通过Microsoft Graph API的Microsoft 365服务的模型上下文协议(MCP)服务器。

Docker 中心: lharillo/ms365-mcp

该项目提供了一个生产就绪的Docker镜像和Kubernetes清单,用于通过Streamable HTTP传输、OAuth 2.1身份验证和持久令牌缓存自托管MCP服务器。

特性

  • 90+工具 适用于Microsoft 365:Outlook、日历、OneDrive、Excel、OneNote、待办事项、联系人、搜索
  • 组织模式:团队、SharePoint、共享邮箱、用户管理
  • OAuth 2.1 使用PKCE(代码交换证明密钥)进行身份验证
  • 可流式传输的HTTP 3000港运输
  • 持久令牌缓存 --容器重启后幸存
  • Kubernetes就绪 具有部署、服务和PVC清单

快速开始

Docker运行

docker run -d -p 3000:3000 lharillo/ms365-mcp:latest

具有组织模式和持久令牌

docker run -d \
  -p 3000:3000 \
  -e MS365_MCP_ORG_MODE=true \
  -v ms365-data:/app/data \
  lharillo/ms365-mcp:latest

Docker Compose

docker compose up -d

看 docker-compose.yml 对于完整配置。

Kubernetes部署

将清单应用于Kubernetes集群上的部署:

kubectl apply -f k8s/

这将创建:

  • 持久卷声明 --100Mi用于令牌缓存持久化
  • 部署 --具有健康检查和资源限制的单个副本
  • 服务 --端口3000上的群集IP

看 k8s/ 完整的清单。

通过Cloudflare隧道进行曝光

要在外部公开服务,请在您的 cloudflared 配置:

- hostname: ms365-mcp.example.com
  service: http://<cluster-ip>:3000
  originRequest:
    noTLSVerify: true
    http2Origin: true
    disableChunkedEncoding: true

然后创建DNS记录:

cloudflared tunnel route dns <tunnel-id> ms365-mcp.example.com

环境变量

变量 描述 默认值
MS365_MCP_ORG_MODE 启用组织模式(团队、SharePoint等) false
MS365_MCP_TOKEN_CACHE_PATH STRATtoken缓存文件的路径 /app/data/msal-cache.json
MS365_MCP_SELECTED_ACCOUNT_PATH 所选帐户元数据的路径 /app/data/selected-account.json
MS365_MCP_CLIENT_ID 自定义Azure AD应用程序客户端ID 内置
MS365_MCP_CLIENT_SECRET Azure AD客户端机密 --
MS365_MCP_TENANT_ID Azure AD租户ID common
MS365_MCP_OAUTH_TOKEN 预先存在的OAuth令牌(BYOT模式) --
MS365_MCP_CLOUD_TYPE 云环境(global 或 china) global
MS365_MCP_OUTPUT_FORMAT 输出格式(toon 减少30-60%的代币) --
READ_ONLY 禁用写入操作 false
ENABLED_TOOLS 用于筛选可用工具的正则表达式模式 --
LOG_LEVEL 日志记录级别 info
SILENT 禁用控制台输出 false

API终点

方法 路径 描述
GET / 健康检查--返回服务器状态
POST /mcp MCP协议端点(需要OAuth令牌)
GET /.well-known/oauth-authorization-server OAuth 2.1服务器元数据
GET /authorize OAuth授权流(重定向到Microsoft登录)
POST /token OAuth令牌交换

认证

服务器使用 OAuth 2.1与PKCE 用于身份验证。当MCP客户端连接时:

  1. 客户端在以下位置发现OAuth元数据 /.well-known/oauth-authorization-server
  2. 客户端在以下位置启动授权流 /authorize
  3. 用户被重定向到Microsoft登录
  4. 登录后,客户端在以下位置交换访问令牌的授权码 /token
  5. 客户端在后续操作中包含令牌 POST /mcp 请求:

令牌缓存在持久卷中 /app/data/,因此只有在令牌过期且无法刷新时才需要重新身份验证。

支持的范围

个人: Mail.Read, Mail.ReadWrite, Mail.Send, Calendars.ReadWrite, Files.ReadWrite, Notes.Read, Notes.Create, Tasks.ReadWrite, Contacts.ReadWrite, User.Read

组织 (与 --org-mode): Chat.Read, ChatMessage.Read, ChatMessage.Send, Team.ReadBasic.All, Channel.ReadBasic.All, ChannelMessage.Read.All, ChannelMessage.Send, Sites.Read.All, User.Read.All, Group.Read.All, Group.ReadWrite.All

MCP客户端配置

将您的MCP客户端指向服务器URL:

https://your-host/mcp

客户端必须支持OAuth 2.1和PKCE进行身份验证。

建筑

docker build -t lharillo/ms365-mcp:latest .
docker push lharillo/ms365-mcp:latest

许可证

麻省理工学院

链接

学分