Atlassian代理服务

为Jira和Confluence提供稳定的搜索和获取工具接口,作为与上游Atlassian MCP实现的兼容层。

  • by CRACKISH
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 CRACKISH/mcp-openai-atlassian-proxy

使用说明

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 保留以保持传统兼容性
  1. 本地MCP服务器(每个产品)注册 search 和 fetch.
  2. 当被调用时,它通过小型委托映射器构造参数,并通过SSE上的MCP客户端调用上游工具。
  3. 结果被映射到一个紧凑的JSON对象(id、title、url、文本、元数据),并作为单个文本内容项返回。
  4. 除了内存之外,没有会话持久性;一个本地会话与共享的上游客户端实例进行对话。

当前状态

版本: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 --强制SSE
  • http://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

行为

  1. 客户端连接: POST /mcp (推荐的、可流式传输的HTTP)或 GET /sse (遗留)在相关端口上。
  2. Shim创建(或重用)上游MCP客户端和本地MCP服务器。
  3. 代理自动确定连接到上游的协议:
    • /mcp 或 .mcp --流式HTTP(上游)
    • /sse 或 .sse — SSE(上游)
    • 回退:尝试两个选项
  4. 仅 search 和 fetch 已列出;没有对上游工具列表进行动态过滤。
  5. 工具调用->委托构建上游参数->上游调用->委托映射结果->返回压缩JSON。

与OpenAI ChatGPT(模型上下文协议)集成

如果您希望ChatGPT(或任何兼容MCP的客户端)使用Jira/Confluence上下文,请将ChatGPT指向此填充程序,而不是整个上游。垫片使刀具表面保持微小和稳定。

  1. 运行上游Atlassian MCP(例如。 sooperset/mcp-atlassian).注意其SSE端点(例如。 https://upstream-host:7000/sse).
  2. 配置此代理 .env 随着 UPSTREAM_MCP_URL 指向该SSE端点。
  3. 启动代理(此仓库)。它将在本地公开两个MCP服务器:
    • Jira:默认值 http://localhost:7100/mcp (推荐)
    • 汇流:默认 http://localhost:7200/mcp (推荐)
    • SSE 终端/sse)也可用于传统客户端
  4. 在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": [...], "<otherRawField>": ... } }

汇流类似(搜索限制20)。Fetch返回markdown正文 text 加上丰富的元数据: { source: "confluence", pageMeta: {...}, <otherRawField>: ... }.

为什么不公开整个上游工具列表?更小的表面=>更低的令牌噪声,更简单的提示和更少的意外大呼叫。

不再包括在内

已删除 原因
嵌入式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.1

Docker 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=早期实验结构。


许可证

麻省理工学院