Pipedrive MCP服务器
用于Pipedrive CRM与Layer55身份验证集成的生产就绪MCP(模型上下文协议)服务器。
概述
此MCP服务器允许通过Layer55平台安全访问Pipedrive CRM数据。它实现了:
- JWT认证:使用JWT令牌验证来自第55层API的请求
- 多租户技术:用户之间严格的数据隔离
- OAuth令牌管理:从第55层API检索用户特定的Pipedrive OAuth令牌
- 综合工具:15多种交易、联系人、公司、活动和用户工具
建筑
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Layer55 API │◄────────┤ Pipedrive MCP │◄────────┤ Pipedrive API │
│ (api.layer55.eu)│ JWT + │ Server │ OAuth │ │
│ │ user_id│ (port 8002) │ Token │ │
└─────────────────┘ └──────────────────┘ └─────────────────┘身份验证流程
- 第55层API使用JWT令牌调用MCP服务器
- MCP服务器验证JWT并提取user_id
- MCP服务器从第55层API获取用户的Pipedrive OAuth令牌
- MCP服务器使用OAuth令牌调用Pipedrive API
- 结果返回到第55层API
数据检索日志记录
此服务器包括用于调试和监控的全面数据检索日志记录。请参阅 DATA_LOGGING.md 有关以下内容的详细信息:
- 记录的内容(API请求、响应、工具执行)
- 如何禁用日志记录(环境变量或代码更改)
- 日志格式和安全注意事项
- 性能影响
可用工具
交易管理
get_deals-列表处理过滤器(状态、阶段、管道)get_deal-获取单笔交易详情create_deal-创建新交易update_deal-更新交易字段get_deal_activities-获取交易活动get_deal_notes-获取交易记录
联系人管理
get_persons-列出联系人get_person-获取联系方式create_person-创建新联系人update_person-更新联系人
公司管理
get_organizations-列出公司get_organization-获取公司详细信息create_organization-创建新公司
活动管理
get_activities-列出活动create_activity-创建新活动
用户管理
get_users-列出团队成员get_user-获取用户详细信息
设置
先决条件
- Python 3.11+
- Docker和Docker Compose(用于部署)
- 访问第55层API
- JWT密钥(与第55层API共享)
地方发展
- 安装依赖项:
pip install -r requirements.txt- 配置环境:
cp .env.example .env
# Edit .env with your configuration- 运行服务器:
cd src
python main.py服务器将于启动 http://localhost:8002
Docker部署
该服务器被设计为与Layer55服务一起作为Docker容器运行。
- 构建图像:
docker build -t pipedrive-mcp:latest .- 运行容器:
docker run -p 8002:8002 \
-e LAYER55_API_URL=http://api:8066 \
-e JWT_SECRET_KEY=your-secret \
pipedrive-mcp:latest与Layer55集成
添加到您的 docker-compose.yml:
pipedrive-mcp:
build:
context: ./mcp/pipedrive
dockerfile: Dockerfile
container_name: pipedrive-mcp
ports:
- "8002:8002"
environment:
- LAYER55_API_URL=http://api:8066
- JWT_SECRET_KEY=${JWT_SECRET_KEY}
networks:
- default
restart: unless-stopped环境变量
| 变量 | 描述 | 必填 | 默认 |
|---|---|---|---|
LAYER55_API_URL | 第55层API的URL | 是 | - |
JWT_SECRET_KEY | JWT验证的共享密钥 | 是 | - |
MCP_SERVER_PORT | 运行服务器的端口 | 否 | 8002 |
LOG_LEVEL | 日志记录级别 | 否 | 信息 |
ENVIRONMENT | 环境(开发/生产) | 否 | 开发 |
API终点
健康检查
GET /health返回服务器健康状态(不需要身份验证)。
察看连接信息
GET /返回服务器信息(无需身份验证)。
MCP初始化
POST /mcp/initialize
Authorization: Bearer 初始化MCP会话。
列出工具
GET /mcp/tools
Authorization: Bearer 列出所有可用的Pipedrive工具。
呼叫工具
POST /mcp/tools/call
Authorization: Bearer
Content-Type: application/json
{
"name": "get_deals",
"arguments": {
"status": "open",
"limit": 50
}
}执行特定工具。
安全
- JWT验证:所有MCP端点都需要有效的JWT令牌
- 多租户技术:使用JWT的User_id严格隔离用户数据
- 令牌安全:OAuth令牌从不缓存,每次请求都会重新获取
- 无令牌记录:敏感令牌从不出现在日志中
- 超文本传输安全协议:建议用于生产部署
发展
项目结构
mcp/pipedrive/
├── src/
│ ├── main.py # FastAPI app entry point
│ ├── auth/
│ │ ├── jwt_validator.py # JWT validation
│ │ └── layer55_client.py # Token retrieval
│ ├── pipedrive/
│ │ ├── client.py # Pipedrive API client
│ │ └── tools.py # MCP tool implementations
│ └── mcp/
│ └── protocol.py # MCP protocol handlers
├── tests/
├── requirements.txt
├── Dockerfile
└── README.md运行测试
pytest tests/代码的风格
- 关注PEP 8
- 没有无声的失败(避免尝试,除非)
- 全面的错误处理
- 使用上下文记录错误(不暴露令牌)
故障排除
JWT验证失败
- 验证
JWT_SECRET_KEY匹配第55层API配置 - 检查令牌过期时间
- 确保
sub声明包含有效的user_id
令牌检索失败
- 验证
LAYER55_API_URL是正确的 - 检查服务之间的网络连接
- 确保用户已为Pipedrive配置OAuth令牌
管道驱动器API错误
- 检查OAuth令牌有效性
- 验证管道驱动API速率限制
- 审查Pipedrive API状态
许可证
专有-55层
支持
有关问题或疑问,请联系Layer55团队。
