jira-mcp
Jira MCP 服务器
一个提供与 Jira 交互工具的模型上下文协议 (MCP) 服务器。使 Cursor 和其他 MCP 客户端能够获取工单、管理关联工单并更新工单状态。
快速入门
1. 安装依赖
# Install uv (if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install project dependencies
uv sync2. 配置 Jira 凭据
推荐:个人访问令牌 (PAT)
登录 Jira: https://jira.telekom.de
进入您的个人资料 > 个人访问令牌 (Personal Access Tokens)
点击“创建令牌 (Create token)”
给它起个名字(例如“Cursor MCP”)并设置过期时间
重要: 确保令牌具有 “读取 (Read)” 或 “浏览项目 (Browse Projects)” 权限
立即复制令牌(之后将无法再次查看)
创建 .env 文件:
cp .env.example .env使用您的凭据编辑 .env:
JIRA_URL=https://jira.telekom.de
JIRA_USERNAME=your.username@telekom.de
JIRA_API_TOKEN=your_personal_access_token_here
JIRA_AUTH_TYPE=bearer注意: Kantega SSO API 令牌可能存在 IP 限制或需要管理员配置权限。对于大多数用户,推荐使用个人访问令牌。
3. 在 Cursor 中配置
打开 Cursor
进入 Settings > Tools and MCP
添加此配置:
{
"mcpServers": {
"jira": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/jira-mcp",
"run",
"-m",
"src"
]
}
}
}重要: 请将路径和凭据替换为您实际的值!
完全重启 Cursor
4. 试用
在 Cursor 聊天中,尝试:
"Get details for Jira ticket PROJ-123"
"Show me all linked tickets for PROJ-456"
"Update PROJ-789 status to In Progress"
功能
可用工具
工具 | 描述 | 示例 |
| 获取完整的工单详情 | "Get PROJ-123" |
| 获取相关工单和子任务 | "Show linked tickets for PROJ-123" |
| 更新工单状态 | "Move PROJ-123 to In Progress" |
身份验证支持
Bearer Token: 个人访问令牌 (PAT) - 推荐
Basic Auth: 用户名 + API 令牌 (Atlassian Cloud)
Cookie Auth: 基于会话的身份验证(备选方案)
工具详情
get_ticket
获取完整的工单信息。
参数:
ticket_id(string, 必填): 工单 ID 或键(例如 "PROJ-123")
返回:
{
"key": "PROJ-123",
"summary": "Ticket summary",
"description": "Detailed description",
"status": "In Progress",
"issue_type": "Story",
"priority": "High",
"assignee": "John Doe",
"reporter": "Jane Smith",
"created": "2024-01-15T10:30:00.000+0000",
"updated": "2024-01-20T14:45:00.000+0000",
"comments_count": 3,
"comments": [...],
"custom_fields": {...}
}get_linked_tickets
获取所有相关工单和子任务。
参数:
ticket_id(string, 必填): 工单 ID 或键
返回:
{
"ticket": "PROJ-123",
"linked_tickets": [
{
"link_type": "Blocks",
"direction": "blocks",
"key": "PROJ-124",
"summary": "Related ticket",
"status": "To Do"
}
],
"linked_tickets_count": 1,
"subtasks": [...],
"subtasks_count": 2
}update_ticket_status
通过工作流验证更新工单状态。
参数:
ticket_id(string, 必填): 工单 ID 或键status(string, 必填): 目标状态(例如 "In Progress", "Done")
返回:
Successfully updated ticket PROJ-123 status from 'To Do' to 'In Progress'注意: 该工具会验证转换。如果无效,它将返回可用的转换。
测试
运行测试
# Run all tests
.venv/bin/pytest tests/ -v
# Run with coverage
.venv/bin/pytest tests/ --cov=src -v
# Run specific test file
.venv/bin/pytest tests/test_integration/test_real_tickets.py -v手动测试
直接测试服务器:
uv run --env-file .env -m src按 Ctrl+C 停止。
故障排除
身份验证错误
症状: "401 Unauthorized" 或 "403 Forbidden"
解决方案:
最常见: 个人访问令牌已过期 - 生成一个新的
验证您的 PAT 是否具有“读取”或“浏览项目”权限
检查您的用户名是否与您的 Jira 账户电子邮件匹配
确保
JIRA_URL包含https://确认个人访问令牌的
JIRA_AUTH_TYPE=bearer
未找到工单
症状: "404 Not Found"
解决方案:
验证工单键是否正确(例如 "PROJ-123")
检查您是否有权查看该工单
确保您使用的是正确的 Jira 实例
服务器未出现在 Cursor 中
解决方案:
验证 MCP 设置中的绝对路径
检查是否安装了 Python 3.12+:
python3 --version完全重启 Cursor(退出并重新打开)
检查 Cursor 的开发者控制台以获取错误信息
无法转换工单状态
症状: "Invalid status transition"
解决方案:
错误消息会列出可用的转换
状态名称必须完全匹配(不区分大小写)
检查您的 Jira 工作流权限
验证该转换对于您的工作流是否有效
架构
本项目遵循 SOLID 原则和整洁架构:
src/
├── __init__.py
├── __main__.py # Entry point
├── server.py # MCP server setup
├── config/ # Configuration management
├── client/ # Jira API client
├── tools/ # 3 MCP tools
├── models/ # Domain models
├── mappers/ # Data transformation
└── utils/ # Error handling, JSON utils核心原则:
SOLID: 单一职责,依赖倒置
DRY: 无重复,可重用组件
类型安全: 全程类型提示
可测试: 清晰的关注点分离
详细技术文档请参阅 ARCHITECTURE.md。
开发
项目结构
jira-mcp/
├── src/ # Source code (22 Python files)
├── tests/ # Test suite
├── pyproject.toml # Project config (includes pytest config)
├── .env.example # Config template
├── .gitignore
├── README.md # This file
└── ARCHITECTURE.md # Technical docs添加依赖
uv add package-name使用不同配置运行
uv run --env-file .env.production -m src代码质量
Linting 错误: 0
类型覆盖率: 100%
测试覆盖率: 所有 3 个工具的集成测试
架构: 符合 SOLID + DRY
要求
Python 3.12+
具有 API 访问权限的 Jira 账户
Jira API 令牌 (Kantega SSO Enterprise 或 Atlassian Cloud)
许可证
本项目按原样提供,供 Cursor 和 Jira 使用。
基于 SOLID 和 DRY 原则的最佳实践构建 🚀
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/vaspap1790/jira-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server