Atlassian MCP OpenAI代理(Jira+Confluence)
双端口垫片,露出最少、稳定的一对工具(search, fetch)为Jira和Confluence提供服务,同时将实际工作委托给上游Atlassian MCP实现。
专门设计为薄兼容层,因此OpenAI ChatGPT/Claude或任何支持MCP的客户端都可以安全地使用来自上游的Atlassian数据,例如:
上游参考实施:https://github.com/sooperset/mcp-atlassian
每个产品都会启动自己的MCP服务器(使用 @modelcontextprotocol/sdk):
| 本地工具 | 上游工具 |
|---|---|
| 吉拉:搜索 | jira_search |
| 吉拉:取 | jira_get_issue |
| 汇流:搜索 | confluence_search |
| 汇流:取 | confluence_get_page |
垫片仅记录这两个工具;它不会转发或重新标记任意上游工具,使代理的表面积保持可预测性。
工作原理(0.5.0)
现在支持mcp协议的流式HTTP(默认为/mcp)和SSE(传统为/SSE)。
违约:
/mcp--流式HTTP(建议用于新客户端,延迟更低,不需要会话)/sse--SSE(传统、基于会话、兼容)
切换:
- 使用
?transport=sse强制开启SSE模式/mcp端点 - 使用
?transport=http强制开启HTTP模式/sse端点(不推荐)
摘要:
- 默认情况下,
/mcp首选,适用于任何MCP本地客户端(Claude、OpenAI等) /sse保留以保持传统兼容性
- 本地MCP服务器(每个产品)注册
search和fetch. - 当被调用时,它通过小型委托映射器构造参数,并通过SSE上的MCP客户端调用上游工具。
- 结果被映射到一个紧凑的JSON对象(id、title、url、文本、元数据),并作为单个文本内容项返回。
- 除了内存之外,没有会话持久性;一个本地会话与共享的上游客户端实例进行对话。
当前状态
版本:0.4.1(延迟+空闲上游连接;重构的实用程序;没有破坏性的表面变化)。
依据
为人工智能代理保留一个有意的微小稳定合同(每个产品恰好有两个工具),同时允许上游进化;尽量减少代币噪音和流失。
______________________________________________________________________
快速开始
npm install
cp .env .env
# edit .env (UPSTREAM_MCP_URL=https://your-upstream-host:7000/sse)
npm run build
npm start # :7100 jira shim, :7200 confluence shim上游自动选择协议:
- 如果
UPSTREAM_MCP_URL以...结束/mcp或.mcp--流式HTTP(MCP原生)用于上游。 - 如果它以
/sse或.sse--SSE用于上游。 - 如果没有指定,垫片将按顺序尝试这两个选项。
本地端点:
http://localhost:7100/mcp(Jira,可流式传输HTTP)http://localhost:7100/sse(Jira,苏格兰和南方能源公司)http://localhost:7200/mcp(汇流、流式HTTP)http://localhost:7200/sse(汇流处,苏格兰和南方能源公司)
切换协议:
http://localhost:7100/mcp?transport=sse--强制SSEhttp://localhost:7100/sse?transport=http--强制HTTP(不推荐)
所需Env
| 变量 | 描述 |
|---|---|
UPSTREAM_MCP_URL | 上游MCP的完整SSE端点(接受有/没有尾随/SSE) |
可选:
| 变量 | 默认值 | 描述 |
|---|---|---|
JIRA_SHIM_PORT | 7100 | Jira垫片端口 |
CONFLUENCE_SHIM_PORT | 7200 | 汇流垫片端口 |
示例 .env:
UPSTREAM_MCP_URL=https://mcp-atlassian.internal:7000/sse
JIRA_SHIM_PORT=7100
CONFLUENCE_SHIM_PORT=7200______________________________________________________________________
行为
- 客户端连接:
POST /mcp(推荐的、可流式传输的HTTP)或GET /sse(遗留)在相关端口上。 - Shim创建(或重用)上游MCP客户端和本地MCP服务器。
- 代理自动确定连接到上游的协议:
- /mcp 或 .mcp --流式HTTP(上游) - /sse 或 .sse — SSE(上游) - 回退:尝试两个选项
- 仅
search和fetch已列出;没有对上游工具列表进行动态过滤。 - 工具调用->委托构建上游参数->上游调用->委托映射结果->返回压缩JSON。
______________________________________________________________________
与OpenAI ChatGPT(模型上下文协议)集成
如果您希望ChatGPT(或任何兼容MCP的客户端)使用Jira/Confluence上下文,请将ChatGPT指向此填充程序,而不是整个上游。垫片使刀具表面保持微小和稳定。
- 运行上游Atlassian MCP(例如。
sooperset/mcp-atlassian).注意其SSE端点(例如。https://upstream-host:7000/sse). - 配置此代理
.env随着UPSTREAM_MCP_URL指向该SSE端点。 - 启动代理(此仓库)。它将在本地公开两个MCP服务器:
- Jira:默认值 http://localhost:7100/mcp (推荐) - 汇流:默认 http://localhost:7200/mcp (推荐) - SSE 终端/sse)也可用于传统客户端
- 在ChatGPT MCP配置(自定义工具/自托管MCP)中注册您需要的端点。每个都暴露了两个工具:
- search - fetch
示例ChatGPT(概念JSON代码段):
{
"mcpServers": {
"jira": { "url": "http://localhost:7100/mcp" },
"confluence": { "url": "http://localhost:7200/mcp" },
},
}返回的有效载荷(content\[0\].text)是紧凑的JSON字符串:
搜索(jira,限制20): { "results": [{ "id": "RND-123", "title": "Summary", "url": "https://your.atlassian.net/browse/RND-123" }] }
获取(jira富集): { "id": "RND-123", "title": "Summary", "text": "Summary: ...", "url": "https://your.atlassian.net/browse/RND-123", "metadata": { "source": "jira", "statusObject": {...}, "commentsExcerpt": [...], "": ... } }
汇流类似(搜索限制20)。Fetch返回markdown正文 text 加上丰富的元数据: { source: "confluence", pageMeta: {...}, : ... }.
为什么不公开整个上游工具列表?更小的表面=>更低的令牌噪声,更简单的提示和更少的意外大呼叫。
不再包括在内
| 已删除 | 原因 |
|---|---|
| 嵌入式MCPServer/SDK层 | 代理不需要重新实现MCP |
| 自定义挂起映射JSON-RPC客户端 | 直接中继;上游已经处理了 |
| 工具描述净化和截断 | 保留原始上游措辞 |
| 会话限制标志 | 简化(每个客户端会话一个上游标志) |
______________________________________________________________________
nginx配置示例
下面提供了一个匿名的nginx配置示例 examples/nginx.conf。将此用作您自己部署的模板。请参阅 examples/README.md 了解更多详情。
码头工人
docker build -t mcp-atlassian-proxy:0.4.1 .
docker run --rm -e UPSTREAM_MCP_URL="https://your-upstream:7000/sse" -p 7100:7100 -p 7200:7200 mcp-atlassian-proxy:0.4.1Docker Hub
预构建的图像发布在 crackish/mcp-openai-atlassian-proxy:
- 存储库:https://hub.docker.com/repositories/crackish
- 图片:
crackish/mcp-openai-atlassian-proxy
常见标签:
latest–跟踪主分支vX.Y.Z–版本化版本
例子:
docker pull crackish/mcp-openai-atlassian-proxy:latest
docker run --rm -e UPSTREAM_MCP_URL="https://your-upstream:7000/sse" -p 7100:7100 -p 7200:7200 crackish/mcp-openai-atlassian-proxy:latest______________________________________________________________________
发展
| 脚本 | 目的 |
|---|---|
npm run dev | ts节点开发模式 |
npm run build | 构建到 dist/ |
npm start | 运行已编译的垫片 |
npm run lint | 棉绒 |
npm run typecheck | 仅类型检查 |
______________________________________________________________________
版本控制
0.4.1=懒惰+空闲上游客户端(减少空闲资源使用),内部重构(utils拆分)。\ 0.4.0=重新嵌入MCP服务器(显式工具注册)。已删除健康终结点。清洁代表。\ 0.3.0=纯传递代理变体(现已被取代)。\ 0.2.x=早期实验结构。
______________________________________________________________________
许可证
麻省理工学院
