使用说明
Atlassian MCP服务器
现代MCP服务器向MCP兼容客户端公开Atlassian Jira和Confluence功能。此存储库包括服务器实现、Docker打包和测试。
概述
- 目的: 为Jira/Confluence操作(问题、页面、评论、搜索)提供安全、一致的MCP接口,并提供规范化的JSON响应。
- 运输: MCP客户端的服务器发送事件端点。
- 运行时间: 带有Docker部署选项的Python服务器。
建筑
graph TD
U[User / Tools] -->|MCP Client| C[Client App]
C -->|SSE / HTTP + X-API-Key| M[Auth Middleware]
subgraph "Atlassian MCP Server"
M -->|Authorized| S[Server Logic]
S -->|Get Client| RM[Resource Manager]
RM -->|TTL Cache| CP[Credential Providers]
S --> H[Health + Liveness]
end
S -->|REST APIs| J[Jira]
S -->|REST APIs| F[Confluence]
端点
当服务器运行时,它会公开:
/(GET):生存信息和端点提示。/health(GET):简单的健康检查(返回{ "status": "ok" })./mcp/sse(GET/POST):客户端使用的MCP服务器发送事件传输。
快速入门(Docker)
先决条件
- Docker已安装在您的计算机上。
- 使用API令牌的Atlassian帐户(Jira/Confluence)。
塑造形象
docker build -t atlassian-mcp-server .
运行容器
提供Atlassian凭据作为环境变量:
docker run -d \
-p 8080:8080 \
-e MCP_API_KEY="your-secure-api-key" \
-e JIRA_SITE="https://your-domain.atlassian.net" \
-e JIRA_EMAIL="your-email@example.com" \
-e JIRA_TOKEN="your-jira-token" \
-e CONFLUENCE_URL="https://your-domain.atlassian.net/wiki" \
-e CONFLUENCE_USERNAME="your-email@example.com" \
-e CONFLUENCE_API_TOKEN="your-confluence-token" \
--name atlassian-mcp-server \
atlassian-mcp-server
注:
MCP_API_KEY是可选的,但强烈建议用于保护MCP端点。如果设置,客户端必须提供X-API-Key标题为/mcp/sse终点。
示例(无身份验证):
curl -s http://localhost:8080/ | jq
curl -s http://localhost:8080/health | jq
示例(含 MCP_API_KEY 设置):
# Public endpoints (no auth required)
curl -s http://localhost:8080/ | jq
curl -s http://localhost:8080/health | jq
# Protected MCP endpoint (requires X-API-Key header)
curl -H "X-API-Key: your-secure-api-key" -s http://localhost:8080/mcp/sse
配置
服务器是通过环境变量配置的。
| 变量 | 描述 | 默认值 |
|---|---|---|
MCP_API_KEY |
的API密钥 X-API-Key 身份验证。 |
无(已禁用身份验证) |
CREDENTIALS_PROVIDER |
凭据来源: env, aws, azure, gcp. |
env |
LOG_LEVEL |
记录冗长(DEBUG, INFO, WARNING, ERROR). |
INFO |
凭据提供程序
- 环境:阅读
JIRA_*和CONFLUENCE_*变量直接。 - 亚马逊网络服务:从AWS Secrets Manager读取JSON机密(
AWS_SECRETS_MANAGER_SECRET_ID). - 蔚蓝:从Azure密钥库读取JSON密钥(
AZURE_KEY_VAULT_URL,AZURE_KV_JSON_SECRET_NAME). - 谷歌云平台:从GCP密钥管理器读取JSON密钥(
GCP_PROJECT_ID,GCP_SECRET_NAME).
响应形状(示例)
工具响应被标准化为JSON。典型形状:
-
Jira搜索
{ "result": "ok", "issues": [ { "key": "ABC-1", "summary": "...", "status": "Open" } ] } -
Jira过渡(成功)
{ "result": "transitioned", "issue_key": "ABC-1", "status": "Done" } -
错误示例(未找到状态)
{ "error": { "code": "STATUS_NOT_FOUND", "message": "Status 'In Progress' not found" } }
健康检查(Docker)
Dockerfile包含一个 HEALTHCHECK 定期呼叫 http://localhost:8080/health 如果服务器没有响应或返回非响应,则将容器标记为不健康-ok 状态。这与Docker/编排器集成,用于自动重启和监控。
安全须知
- 身份验证: 支持
X-API-Key通过以下方式进行标头身份验证MCP_API_KEY环境变量。 - 输入消毒: HTML内容(例如Confluence注释)会自动转义以防止注入攻击。
- 资源限制:
- 所有上游API调用的全局超时为30秒。
- 搜索操作的最大结果限制(50)。
- 带TTL缓存的线程安全凭据管理(1小时)。
- 集装箱安全:
- 以非root身份运行
app用户。 - 基础图像由SHA256摘要固定。
- 拥有的文件
app:app.
- 以非root身份运行
- CI/CD安全:
- 自动秘密扫描(Gitleaks)。
- 静态应用程序安全测试(Bandit)。
- 政策: 看 安全.md 用于漏洞披露。
发布图片
Docker Hub
docker login
docker tag atlassian-mcp-server yourusername/atlassian-mcp-server:latest
docker push yourusername/atlassian-mcp-server:latest
GitHub容器注册表(GHCR)
echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin
docker tag atlassian-mcp-server ghcr.io/OWNER/IMAGE_NAME:latest
docker push ghcr.io/OWNER/IMAGE_NAME:latest
从GHCR中拉出并运行
发布后,您可以直接拉取并运行图像:
docker pull ghcr.io/mani0070/atlassian-mcp-server:latest
docker run -d \
-p 8080:8080 \
--name atlassian-mcp-server \
ghcr.io/mani0070/atlassian-mcp-server:latest
试试看
验证服务器是否已启动并响应:
curl -s http://localhost:8080/ | jq
curl -s http://localhost:8080/health | jq
项目工作流程
有关贡献过程、分支策略、CI/CD、版本和安全实践,请参阅:
- docs/WORKFLOW.md
发布
- GitHub最新发布:https://github.com/mani0070/atlassian-mcp-server/releases
- 容器映像:ghcr.io/mani0070/atlasian-mcp-server(标签:最新,v0.1.0)
需要更多详细信息或自定义图表?打开一个问题或PR。