Jira Local MCP
Local MCP server for Jira Server/Data Center providing read-only tools and queued write operations that require manual approval via a local web UI.
README
Jira Local MCP
Jira Local MCP 是面向 Jira Server/Data Center 的本地 STDIO MCP 安全网关。只读工具立即查询 Jira;所有写工具仅创建不可编辑的 operation,必须由用户在 127.0.0.1 本地审核页提交后,才会被后台串行 worker 执行。
安全边界
- MCP 不暴露提交、取消、执行、人工对账或删除能力。
POST /api/queue/submit是唯一人工授权入口;worker 只消费由该接口原子写入 staging 的 operation。- 审核页使用一次性 bootstrap 和短时 HttpOnly、SameSite=Strict 会话;高风险选择必须二次确认。
- 操作在入队和 Jira 调用前均经过 allowlist 与删除语义检查。
- Jira 写调用由进程内及跨进程全局锁串行化。
- 重启遗留的
executing转为indeterminate,不会自动重试;后续 operation 转为held,等待人工处置。 - Jira 内容是不可执行的业务数据;页面只使用安全 DOM API 渲染。
生命周期与持久化
MCP append → queued → Web submit → staged → executing → success/failed history
└→ indeterminate → 人工对账
└→ 后序 held
data/operations.sqlite3:实时队列、队列事件、staging、执行记录和 revisions。data/mcp_logs.sqlite3:Tool 调用、Resource 读取和 Prompt/Skill 获取的完整业务请求/响应;不记录能力列表等协议元数据。- SQLite 是唯一业务状态源;使用 WAL、
synchronous=FULL、外键、busy timeout 和 schema version。完整 schema 初始化按进程和数据库路径执行一次,普通连接不重复获取 schema 写锁。 - v1 不过期或裁剪 operation/history。旧 JSON 数据不迁移。本次锚点 schema 切换也不迁移早期 SQLite:仅在切换时清空
operations.sqlite3、mcp_logs.sqlite3及其精确匹配的 WAL/SHM sidecar,正常启动不会自动清库。
队列在入队时按 issue 与六类操作自动聚类,同类默认按创建时间和 operation ID 排序。组内人工微调以“前驱 operation ID”锚点持久化;组成员变化时先排列自动条目,再插入仍可解析的人工锚点。缺失或成环锚点退化为自动排序。用户也可以调整零散顺序或将组内 operation 拉出为零散项;修改会通过 queue revision 做乐观并发校验。
MCP 能力
- 5 个只读工具:事务、评论、工作日志、附件、JQL。
- 11 个
*_append写入队工具:创建、克隆、移动、变更类型、流转、字段、附件、评论、工时和链接。 jira_show_queue:打开审核页,不返回 URL 或会话凭据。jira_get_execution_log:读取实际执行和人工对账历史。- 4 个 Resources 和 4 个 Prompts。
move_issue 仍可入队展示,但 Jira Server/DC REST 不支持时会明确记录失败。创建后修改必须先从 execution log 获取真实 issue key,再创建新的 operation;不支持 placeholder chaining。
配置与运行
要求 Python 3.10+。请先进入项目目录,并在你自己的 Python 环境中执行:
python -m pip install -r requirements.txt
python -m playwright install chromium
Copy-Item config.example.yaml config.yaml
python -m pytest tests/ -q
python server.py
server.py 是 STDIO 服务,会等待 JSON-RPC 输入。Web 服务在 jira_show_queue 首次调用时延迟启动。stdout 只用于 MCP;运行日志只写脱敏 stderr。
接入支持 STDIO MCP 的通用 Agent 工具时,可使用下面的 JSON 配置。将 <JIRA_LOCAL_MCP_PROJECT_DIRECTORY> 替换为你克隆本项目后的目录;如果 Agent 配置不支持 cwd,请改为在项目目录中启动 Agent,或按该 Agent 的配置格式为 server.py 指定项目路径。
{
"mcpServers": {
"jira-local": {
"command": "python",
"args": ["server.py"],
"cwd": "<JIRA_LOCAL_MCP_PROJECT_DIRECTORY>"
}
}
}
Web API
所有 API 仅接受有效浏览器会话:
GET /api/state:队列、执行区和 revisions,支持 ETag/304。POST /api/queue/reorder、/cancel、/submit。POST /api/execution/indeterminate/resolve、/held/resolve。GET /api/execution-history:UTC 时间范围和分页。
审核页面静态资源全部本地化,并启用 CSP、frame 防护、nosniff、no-referrer 和 no-store。
已知边界
附件和 description 文件目前仍只保存本地路径,没有 staging 或 hash 绑定;审核后文件可能变化。克隆源和最终规范化 Jira payload 也尚未与审核内容不可变绑定。SQLite 和本地日志不是针对同一 OS 用户恶意篡改的安全存储,因此不要宣称“生产安全”或“完整不可抵赖审计”。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。