Eva MCP服务器
   
用于Eva-project API集成的MCP(模型上下文协议)服务器。该服务器允许Claude和Cursor等AI助手与Eva项目任务、项目、文档等进行交互。
快速入门: 看 GETTING_STARTED.md 有关分步设置说明。
特性
- 任务管理:搜索、查看、创建和更新任务
- 项目管理:列出并查看项目详细信息
- 用户管理:列出并查看用户信息
- 文档管理:搜索和查看文档
- 评论:查看任务/文档并添加注释
- Sprint管理:列出和查看冲刺/列表
- 审计日志:查看审核历史记录
- 只读模式:防止写入操作的可选安全模式(为方便起见,默认禁用)
- JSON-RPC 2.0:全面支持Eva API协议
安装
先决条件
- Python 3.10或更高版本
- Eva API访问令牌
从源代码安装
# Clone the repository
git clone https://github.com/knrerikh/eva-mcp-server.git
cd eva-mcp-server
# Install dependencies
pip install -r requirements.txt
# Or install in development mode
pip install -e .配置
环境变量
创建 .env 项目根目录中的文件(使用 .env.example 作为模板):
# Eva API Configuration
EVA_API_URL=https://your-eva-instance.com/api
EVA_API_TOKEN=your_token_here
# Optional: Enable read-only mode (default: false - write operations allowed)
# Set to "true" to prevent write operations
EVA_READ_ONLY=false
# Optional: Request timeout in seconds (default: 30)
EVA_TIMEOUT=30获取API令牌
- 登录到您的Eva项目实例
- 导航到您的个人资料设置
- 生成API令牌
- 将令牌复制到您的
.env文件
用法
运行服务器
# Using Python
python -m eva_mcp_server.server
# Or if installed as package
eva-mcp-server与Cursor集成
- 打开光标设置
- 导航到MCP服务器配置
- 添加以下配置:
{
"Eva": {
"command": "python",
"args": ["/path/to/eva-mcp-server/src/server.py"],
"env": {
"EVA_API_URL": "https://your-eva-instance.com/api",
"EVA_API_TOKEN": "your_token_here"
}
}
}- 重新启动游标
- Eva MCP服务器现在应该可用
可选:启用只读模式以确保安全
默认情况下,写入操作为 允许。如果您想保护您的Eva实例免受意外修改(例如,用于生产环境或分析),可以启用只读模式:
- 打开光标设置(Ctrl+Shift+P→ “首选项:打开设置(JSON)”)
- 在中查找Eva MCP服务器配置
mcpServers章节 - 添加
"EVA_READ_ONLY": "true"在env章节:
{
"mcpServers": {
"Eva Project MCP": {
"command": "python",
"args": ["C:\\Users\\YourUser\\Repos\\eva-mcp-server\\src\\server.py"],
"env": {
"EVA_API_URL": "https://your-eva-instance.com/api",
"EVA_API_TOKEN": "your_token",
"EVA_READ_ONLY": "true"
}
}
}
}- 保存配置文件
- 重新启动游标
- Eva MCP服务器现在将阻止所有写入操作
与Claude Desktop集成
添加到您的Claude Desktop配置文件(claude_desktop_config.json):
{
"mcpServers": {
"Eva": {
"command": "python",
"args": ["/path/to/eva-mcp-server/src/server.py"],
"env": {
"EVA_API_URL": "https://your-eva-instance.com/api",
"EVA_API_TOKEN": "your_token_here"
}
}
}
}可用工具
任务工具
- eva_search_tasks:使用筛选器搜索和列出任务
- 参数: query, project, responsible, status, limit
- eval_get_task:获取详细的任务信息
- 参数: task_code
- eva_count_tasks:计数与筛选器匹配的任务
- 参数: project, responsible, status
- eva_create_task:创建新任务(需要
read_only=false)
- 参数: name, project_code (可选), lists (可选), description, responsible, priority - 重要: - 对于项目中的任务:仅指定 project_code - 对于sprint中的任务:指定 两者 project_code (sprint的母项目)和 lists (冲刺代码) - 要是…就好了 lists 如果提供,任务将被创建,但不会正确链接到项目
- eva_update_task:更新现有任务(需要
read_only=false)
- 参数: task_code, name, description, responsible, status, priority
项目工具
- eval_list_项目:列出所有项目
- 参数: limit
- eva_get-project:获取详细的项目信息
- 参数: project_code
用户工具
- eval_list_users:列出所有用户
- 参数: limit
- eva_get_user:获取详细的用户信息
- 参数: user_code
文档工具
- eva_search_文档:搜索和列出文档
- 参数: query, project, limit
- eval_get-document:获取详细的文档信息
- 参数: document_code
评论工具
- eval_get_注释:获取任务或文档的注释
- 参数: parent_code, limit
- eva_add_注释:添加评论(需要
read_only=false)
- 参数: parent_code, text
Sprint/列表工具
- eval_list_sprints:列出所有冲刺/列表
- 参数: limit
- eva_get_sprint:获取详细的冲刺/列表信息
- 参数: list_code
- eva_create_list:创建新列表/冲刺/发布(需要
read_only=false)
- 参数: name, project_code
审计工具
- eval_get_audit_log:获取审核日志条目
- 参数: entity_code, limit
最佳实践
创建任务
对于项目任务(无冲刺):
{
"name": "Task name",
"project_code": "PROJ-123"
}对于冲刺任务(推荐):
{
"name": "Task name",
"project_code": "CmfProject:xxx", // Sprint's parent project
"lists": ["SPR-000929"] // Sprint code
}为什么两个参数?
- 仅使用
lists将把任务添加到sprint中,但它不会链接到项目层次结构 - 两者都使用
project_code和lists确保项目树和sprint板中的正确链接 - 这与Eva web界面的行为相匹配
例子
示例1:搜索任务
# In your AI assistant
"Search for tasks in project PROJ-123 assigned to user@example.com"这将调用 eva_search_tasks 与:
{
"project": "PROJ-123",
"responsible": "user@example.com",
"limit": 20
}示例2:获取任务详细信息
"Show me details of task TASK-456"这将调用 eva_get_task 与:
{
"task_code": "TASK-456"
}示例3:列出项目
"List all projects"这将调用 eva_list_projects 使用默认参数。
示例4:创建任务(需要写入模式)
# First, disable read-only mode in configuration
"Create a new task named 'Implement feature X' in project PROJ-123"这将调用 eva_create_task 与:
{
"name": "Implement feature X",
"project_code": "PROJ-123"
}示例5:在sprint/list中创建任务(推荐方法)
"Create a new task named 'Fix bug in authentication' in sprint SPR-000929"这将调用 eva_create_task 与:
{
"name": "Fix bug in authentication",
"project_code": "CmfProject:xxx",
"lists": ["SPR-000929"]
}备注:建议同时指定两者 project_code (sprint的父项目)和 lists 将任务与项目和冲刺正确地联系起来。如果 lists 如果提供了,任务将被添加到sprint中,但不会链接到项目层次结构。
安全和安保
只读模式
默认情况下,服务器允许写操作(EVA_READ_ONLY=false)为了使用方便。
要启用只读模式以确保安全(例如,用于生产环境):
- 集
EVA_READ_ONLY=true在您的配置中 - 这将防止:
- 创建任务 - 更新任务 - 添加评论 - 任何其他写入操作
推荐:当您只需要分析数据或多个用户共享同一配置时,请使用只读模式。
API代币安全
- 永远不要将API令牌提交到版本控制
- 将令牌存储在
.env文件(被gitignored) - 使用环境变量进行配置
- 定期旋转令牌
生产使用
与生产Eva实例一起使用时:
- 除非绝对必要,否则保持只读模式启用
- 首先对测试实例进行测试写入操作
- 监控API使用情况和日志
- 实施适当的错误处理
发展
运行测试
# Run all tests
pytest
# Run with coverage
pytest --cov=src --cov-report=html
# Run specific test file
pytest tests/test_eva_client.py代码质量
# Format code
black src/ tests/
# Lint code
ruff check src/ tests/项目结构
eva-mcp-server/
├── src/
│ ├── __init__.py
│ ├── server.py # Main MCP server
│ ├── eva_client.py # Eva API client
│ └── tools.py # MCP tool implementations
├── tests/
│ ├── __init__.py
│ ├── test_eva_client.py # Client tests
│ └── test_tools.py # Tools tests
├── .env.example # Example configuration
├── .gitignore # Git ignore rules
├── requirements.txt # Python dependencies
├── pyproject.toml # Project configuration
├── pytest.ini # Pytest configuration
├── README.md # This file
├── API_ANALYSIS.md # API documentation
└── oas_evateam_v1_9_22.json # OpenAPI specification故障排除
服务器无法启动
- 检查是否安装了Python 3.10+:
python --version - 验证是否安装了所有依赖项:
pip install -r requirements.txt - 检查
EVA_API_TOKEN设定在.env - 查看服务器日志中的特定错误
API调用失败
- 验证API令牌是否有效
- 检查与Eva API端点的网络连接
- 确保API URL正确无误
- 检查只读模式是否阻止写入操作
- 查看Eva API文档以了解端点需求
工具未出现在Cursor/Claude中
- 验证MCP服务器配置是否正确
- 重新启动Cursor/Claude桌面
- 检查服务器日志中的初始化错误
- 确保服务器进程正在运行
API 文档
有关详细的API文档,请参阅Eva实例中的Eva-project API文档。
贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支
- 进行更改
- 添加新功能的测试
- 确保所有测试通过
- 提交拉取请求
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
支持
对于问题和疑问:
- 在GitHub上打开一个问题
- 在您的Eva实例中检查Eva项目文档
- 查看中的API规范
oas_evateam_v1_9_22.json
更新日志
版本0.1.0(初始版本)
- Eva MCP服务器的初步实现
- 支持任务、项目、用户、文档、评论、冲刺和审计操作
- 安全操作的只读模式
- 全面的测试套件
- 完整文档
致谢
- API项目团队
- 模型上下文协议(MCP)规范
- Claude和MCP SDK的拟人化
