TeamDesk MCP服务器
MCP(模型上下文协议)服务器 TeamDesk 数据库。连接 克劳德 (网络、桌面和移动), 克劳德代码,或任何MCP-兼容客户端到TeamDesk REST API v2。
特性
- 11工具 涵盖所有TeamDesk CRUD操作+搜索+文档生成
- 使用 任何TeamDesk数据库 --只需提供您的令牌和数据库ID
- 两种部署模式:
- 本地 (server.py)--通过stdio在用户的计算机上运行 - 远程 (deploy/server_sse.py)--具有OAuth 2.0、流式HTTP、速率限制和缓存的多用户服务器
- 带重音的表/列名的正确URL编码(葡萄牙语、西班牙语等)
- 超时处理,自动重试(55秒超时,2次回退重试)
- 通过输入消毒防止过滤器注射
- 用于请求计时和调试的Stderr日志记录
需求
- Python 3.10+
- A. TeamDesk REST API令牌 (生成位置:TeamDesk>设置>集成>REST API>令牌)
- 你的 TeamDesk数据库ID (在TeamDesk URL中可见:
teamdesk.net/secure/db/XXXXX)
安装
选项1:远程连接器(推荐)
无需本地安装。 直接从claude.ai连接-自动在网络、桌面和移动设备上工作。
当您在claude.ai上添加自定义连接器时,它会自动同步到claude Desktop和移动设备。一个设置涵盖所有平台。
- 让管理员创建访问密钥(请参阅 远程部署)
- 首选 claude.ai > 设置 > 集成 > 添加自定义连接器
- 输入名称(例如。,
TeamDesk)以及服务器URL:https://your-server.com/m/{your_key}/sse - 点击 配置 >批准访问
- 完成--适用于网络、桌面和移动设备
选项2:本地安装程序(Windows)
- 下载
install.bat,server.py,以及requirements.txt来自此repo - 将它们放在同一个文件夹中
- 跑
install.bat - 按照提示操作(它将询问您的令牌和数据库ID)
- 重新启动克劳德桌面
选项3:本地安装程序(Linux/Mac)
- 克隆并运行:
git clone https://github.com/Danielbluz/teamdesk-mcp-v2.git
cd teamdesk-mcp-v2
bash install.sh- 按照提示操作
- 重新启动克劳德桌面
选项4:手动设置
git clone https://github.com/Danielbluz/teamdesk-mcp-v2.git
cd teamdesk-mcp-v2
pip install -r requirements.txt然后添加到您的客户端配置中(请参阅下一节)。
配置
克劳德桌面(本地模式)
编辑 claude_desktop_config.json:
- 窗户:
%APPDATA%\Claude\claude_desktop_config.json - 雨衣:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"teamdesk": {
"command": "python",
"args": ["C:\\path\\to\\server.py"],
"env": {
"TEAMDESK_API_TOKEN": "your_token_here",
"TEAMDESK_DATABASE_ID": "your_database_id"
}
}
}
}克劳德代码
增添 .claude/.mcp.json 在您的项目或 ~/.claude/.mcp.json 全球地:
{
"mcpServers": {
"teamdesk": {
"command": "python",
"args": ["C:\\path\\to\\server.py"],
"env": {
"TEAMDESK_API_TOKEN": "your_token_here",
"TEAMDESK_DATABASE_ID": "your_database_id"
}
}
}
}备选方案: .env 文件
您可以创建一个 .env 文件旁边 server.py:
cp .env.example .env
# Edit .env with your credentials工具
| 工具 | 说明 |
|---|---|
list_tables | 列出数据库中的所有表 |
describe_table | 获取表结构(列、类型、属性) |
get_records | 使用过滤器、排序和分页查询记录 |
get_record | 按ID检索单个记录 |
select_view | 从预配置的视图查询记录 |
create_record | 创建新记录 |
update_record | 按ID更新现有记录 |
delete_record | 按ID删除记录 |
search_records | 跨文本列的全文搜索(自动检测) |
upsert_records | 插入或更新记录(匹配列必须是唯一的) |
gerar_documento | 从TeamDesk文档模板生成DOCX |
筛选器示例
[Status] = 'Ativo'
[Amount] > 1000
Contains([Name], 'Solar')
[Date] >= ToDate('2026-01-01')排序语法
Column -- ascending (default)
Column//DESC -- descendingTeamDesk API测验
这些是此服务器正确处理的未记录行为:
| Quirk | 详细信息 |
|---|---|
| DELETE使用GET | {table}/delete.json?id={id} 是GET请求 |
| UPDATE使用POST | Not PUT。正文必须包括 @row.id |
| 正文必须是数组 | 所有写入操作都需要 [{...}],不 {...} |
| 上游匹配必须是唯一的 | 表设置中的匹配列必须标记为唯一,否则出现错误3106 |
文档终结点没有 .json | 使用 /document?id=X,不 /document.json?id=X |
排序用途 // | Column//DESC,不 -Column 或 Column DESC |
| 重音名称有效 | Geração, Irradiação --必须进行URL编码,而不是剥离 |
| 无LIKE运算符 | 使用 Contains([field], 'value') 不区分大小写 |
日期文字使用 # | [Date] >= #2026-01-01# 或 ToDate('2026-01-01') |
| 按ID检索 | 使用 retrieve.json?id=X,不 {id}.json |
故障排除
MCP未出现在Claude Desktop中
- 确保您完全重新启动了Claude Desktop(检查系统托盘)
- 验证
python在您的路径中:python --version - 检查配置JSON语法(无尾随逗号)
反应缓慢
- TeamDesk服务器在美国工作时间(15:00–18:00 UTC)可能会变慢
- 服务器在超时时自动重试(最多2次)
- 检查日志:克劳德桌面>Ctrl+Shift+I>控制台>过滤器
[TeamDesk MCP]
代币问题
- 在以下位置生成新令牌:TeamDesk>设置>集成>REST API>令牌
- 令牌应该是一个32个字符的十六进制字符串
- 两者
TEAMDESK_API_TOKEN和TEAMDESK_TOKEN(遗产)被接受
远程部署
这 deploy/ 文件夹包含 server_sse.py --一个多用户远程MCP服务器,设计用于部署在Nginx/TLS后面的VPS上。它支持:
- OAuth 2.0 具有自动批准功能(PKCE S256)——claude.ai自定义连接器要求
- 可流式传输的HTTP 传输(MCP SDK 1.26.0+)——claude.ai使用的协议
- 上海证券交易所 传输——用于通过URL进行Claude Desktop本地配置
- 多用户身份验证 通过存储在TeamDesk表中的API密钥
- 速率限制 和 响应缓存
- 每用户令牌 -每个用户的API密钥映射到他们自己的TeamDesk令牌
运作原理
- 管理员在中创建记录
Acesso桌子(TeamDesk)上有:
- Chave_MCP:用户的唯一密钥(例如。, john_company_2026) - Token:用户的TeamDesk API令牌 - Ativo_MCP: Sim (启用访问)
- 每个用户都有一个个人端点:
https://your-server.com/m/{chave}/sse
- 服务器验证密钥,检索用户的令牌,并使用该令牌将所有MCP工具调用代理到TeamDesk API。
OAuth 2.0端点
claude.ai需要这些OAuth端点用于自定义连接器:
| 终点 | 目的 |
|---|---|
/.well-known/oauth-protected-resource | RFC 9728——资源元数据 |
/.well-known/oauth-authorization-server | RFC 8414——身份验证服务器元数据 |
/register | RFC 7591——动态客户端注册 |
/authorize | 授权端点(自动批准) |
/token | 令牌交换(PKCE S256验证) |
技术说明
- claude.ai使用 发布 (流式HTTP),而不是GET(SSE)——服务器处理这两者
- 服务器注入
Accept: application/json, text/event-stream如果缺少标头(claude.ai有时会省略它,导致MCP SDK中出现406) - 会议是 有状态的 (
stateless=False)--持久性所需Mcp-Session-Id - 通过环境变量进行配置(请参见
deploy/docker-compose.yml)
Docker部署
cd deploy
cp .env.example .env
# Edit .env with your TEAMDESK_DATABASE_ID, TEAMDESK_MASTER_TOKEN, MCP_PUBLIC_URL
docker compose up -d密钥发现:网络=桌面=移动
当用户在上配置自定义连接器时 claude.ai (网络),它会自动在 克劳德桌面版 和 克劳德移动 --不需要单独的配置。连接器链接到用户的Anthropic 账户,而不是特定的应用程序。
这意味着: 网络上的一个设置涵盖了所有平台。
安全
- 令牌是从环境变量中读取的,从不进行硬编码
- 通过转义单引号防止过滤器注入
- 表名采用URL编码,以保留重音字符
- 根据TeamDesk表验证API密钥(非硬编码)
- OAuth自动批准使用PKCE S256进行安全保护
- 速率限制可防止滥用(可配置每分钟限制)
- 看 安全.md 负责披露
许可证
麻省理工学院
