EDGlobal中央MCP网关
EDGlobal存储库的中央MCP(模型上下文协议)网关,提供对SharePoint文档的统一访问和文件转换功能。
概述
此网关协调在共享Docker网络上运行的多个MCP服务器(edglobal-mcp-network),使Claude Code和其他MCP客户端能够访问:
- SharePoint文档 -通过Microsoft Graph API对SharePoint的读/写访问
- 文件转换器 -将文档转换为机器可读格式(PDF、Word、Excel、带OCR的图像)
快速开始
先决条件
- Docker和Docker Compose
- Azure AD应用程序注册(用于SharePoint访问)
- 您要访问的SharePoint网站URL
设置
- 克隆和配置:
cd docker
cp .env.example .env
# Edit .env with your Azure AD and SharePoint configuration- 运行安装脚本:
./setup.sh- 配置Claude代码 -添加到您的
.claude/settings.json:
{
"mcpServers": {
"edglobal-mcp-gateway": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"--network", "edglobal-mcp-network",
"edglobal-mcp-gateway:latest"
]
}
}
}建筑
┌─────────────────────────────────────────────────────────────┐
│ Claude Code / MCP Client │
└─────────────────────────────┬───────────────────────────────┘
│ stdio
▼
┌─────────────────────────────────────────────────────────────┐
│ edglobal-mcp-gateway │
│ (Tool Discovery & Routing) │
└──────────────┬─────────────────────────────┬────────────────┘
│ │
┌──────────▼──────────┐ ┌─────────▼──────────┐
│ ms-graph-sharepoint │ │ file-transformers │
│ (Node.js/TS) │ │ (Python) │
└──────────────────────┘ └─────────────────────┘
│
▼
┌──────────────────────┐
│ Microsoft Graph │
│ (SharePoint API) │
└──────────────────────┘可用工具
SharePoint工具
| 工具 | 说明 |
|---|---|
list_sites | 列出具有访问级别的已配置SharePoint网站 |
list_libraries | 列出网站中的文档库 |
list_files | 列出库中的文件/文件夹 |
read_file | 从源站点读取文件内容 |
search_files | 跨已配置的源站点搜索 |
upload_file | 将文件上传到输出站点(如果已配置) |
create_folder | 在输出站点中创建文件夹(如果已配置) |
文件转换器工具
| 工具 | 说明 |
|---|---|
transform_file | 将文件转换为机器可读格式 |
transform_batch | 一次转换多个文件 |
check_tools | 检查可用的转换工具 |
list_formats | 列出支持的文件格式 |
配置
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
AZURE_TENANT_ID | 是 | Azure AD租户ID |
AZURE_CLIENT_ID | 是 | Azure AD应用程序ID |
AZURE_CLIENT_SECRET | 是 | Azure AD客户端机密 |
TOKEN_ENCRYPTION_KEY | 是 | 64个十六进制字符用于AES-256加密 |
SHAREPOINT_SOURCE_SITES | 是 | 逗号分隔的SharePoint URL(只读) |
SHAREPOINT_OUTPUT_SITE | 否 | 单个SharePoint URL(读写) |
RATE_LIMIT_RPM | 否 | 每分钟请求数(默认值:60) |
LOG_LEVEL | 否 | 日志级别:调试、信息、警告、错误 |
Azure AD安装程序
- 在Azure门户中创建应用程序注册
- 注意应用程序(客户端)ID和目录(租户)ID
- 创建客户端密钥
- 授予API权限:
- Sites.Read.All -用于阅读SharePoint网站 - Sites.ReadWrite.All -如果使用输出站点进行上传
- 授予管理员权限同意
生成加密密钥
openssl rand -hex 32安全
- 令牌加密:静态OAuth令牌的AES-256-GCM加密
- OAuth 2.0:客户端凭据通过SOAP流动
- 网站许可列表:仅可访问已配置的站点
- 输入验证:Zod(TypeScript)和Pydantic(Python)模式
- 速率限制:每个操作速率限制
- 审计日志:带有敏感数据编辑的结构化日志
- 集装箱安全:所有容器中的非root用户
发展
构建个性化服务
# MS Graph SharePoint Server
docker build -t ms-graph-sharepoint-mcp:latest servers/ms-graph-sharepoint/
# File Transformers Server
docker build -t file-transformers-mcp:latest servers/file-transformers/
# Gateway
docker build -t edglobal-mcp-gateway:latest docker/运行服务
cd docker
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose down项目结构
edglobal-central-mcp-gateway/
├── docker/
│ ├── Dockerfile # Gateway image
│ ├── gateway.js # Gateway orchestrator
│ ├── docker-compose.yaml # All services
│ ├── .env.example # Configuration template
│ └── setup.sh # Setup script
├── servers/
│ ├── ms-graph-sharepoint/ # SharePoint MCP server
│ │ ├── Dockerfile
│ │ ├── package.json
│ │ ├── tsconfig.json
│ │ └── src/
│ └── file-transformers/ # Transformers MCP server
│ ├── Dockerfile
│ ├── requirements.txt
│ └── src/
├── catalog/
│ ├── catalog.yaml # Server registry
│ └── README.md # Catalog documentation
├── config/
│ └── claude-mcp-config.json # Consumer repo template
├── CLAUDE.md # Claude Code instructions
└── README.md # This file故障排除
常见问题
找不到Docker网络:
docker network create edglobal-mcp-network身份验证失败:
- 在中验证Azure AD凭据
.env - 确保对API权限授予管理员同意
- 检查令牌加密密钥是否为64个十六进制字符
SharePoint访问被拒绝:
- 验证网站URL是否正确且可访问
- 确保应用程序具有网站。读。所有权限
- 检查网站是否在列表中
转换失败:
- 使用
check_tools验证可用的转换工具 - 检查文件大小是否在限制范围内
- 确保支持源格式
查看日志
# All services
docker-compose logs -f
# Specific service
docker-compose logs -f ms-graph-mcp
docker-compose logs -f file-transformers-mcp许可证
版权所有©EDGlobal。保留所有权利。
