Atlassian多工具协议服务器

Atlassian MCP服务器为Jira、Confluence、Bitbucket和Bamboo提供统一交互接口的开发效率工具。

  • by juicemix
  • Go
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 juicemix/atlassian-mcp-server

使用说明

Atlassian MCP服务器

一个模型上下文协议(MCP)服务器,提供与Atlassian工具交互的统一接口:Jira server 9.12、Confluence server 8.15、Bitbucket 8.9和Bamboo 9.2.7。

特性

  • 多工具支持:通过单个MCP服务器与Jira、Confluence、Bitbucket和Bamboo集成
  • 柔性运输:支持stdio和HTTP传输机制
  • 整洁架构:遵循干净架构原则的结构良好的代码库
  • 类型安全:利用Go的类型系统进行编译时保证
  • 全面的错误处理:Atlassian API和MCP协议之间的详细错误映射

先决条件

  • 转到1.24.1或更高版本
  • 访问一个或多个Atlassian工具(Jira、Confluence、Bitbucket、Bamboo)
  • 每个工具的有效凭据(用户名/密码或个人访问令牌)

安装

  1. 克隆存储库:
git clone <repository-url>
cd atlassian-mcp-server
  1. 安装依赖项:
go mod download
  1. 构建服务器:
go build -o atlassian-mcp-server main.go

Docker安装

  1. 构建Docker镜像:
docker build -t atlassian-mcp-server .
  1. 使用您的配置运行:
docker run -v $(pwd)/config.yaml:/app/config.yaml atlassian-mcp-server

对于HTTP传输模式,暴露端口:

docker run -p 8080:8080 -v $(pwd)/config.yaml:/app/config.yaml atlassian-mcp-server

配置

  1. 复制示例配置文件:
cp config.yaml.example config.yaml
  1. 编辑 config.yaml 使用Atlassian工具详细信息:
    • 设置 base_url 对于您要使用的每个工具
    • 配置身份验证(基本或基于令牌)
    • 选择传输类型(stdio或http)

配置结构

transport:
  type: stdio  # or "http"
  # http:      # Only required for HTTP transport
  #   host: localhost
  #   port: 8080

tools:
  jira:
    base_url: https://jira.example.com
    auth:
      type: basic  # or "token"
      username: your-username
      password: your-password
      # token: your-token  # For token auth
  
  # Configure other tools similarly...

运输选项

标准运输 (默认):

  • 从stdin读取JSON-RPC消息
  • 将响应写入stdout
  • 非常适合基于流程的集成

HTTP传输:

  • 为JSON-RPC消息公开HTTP端点
  • 适用于远程集成
  • 需要主机和端口配置

身份验证方法

基本认证:

auth:
  type: basic
  username: your-username
  password: your-password

令牌身份验证:

auth:
  type: token
  token: your-personal-access-token

用法

使用默认配置运行

./atlassian-mcp-server

这将从加载配置 config.yaml 在当前目录中。

使用自定义配置运行

./atlassian-mcp-server -config /path/to/config.yaml

命令行标志

  • -config:配置文件的路径(默认值: config.yaml)

可用工具

Jira运营

  • jira_get_issue:按密钥检索Jira问题
  • jira_create_issue:创建新的Jira问题
  • jira_update_issue:更新现有问题
  • jira_delete_issue:删除问题
  • jira_search_jql:使用JQL搜索问题
  • jira_transition_issue:将问题转变为新的状态
  • jira_add_comment:向问题添加评论
  • jira_list_projects:列出所有可访问的项目

汇流操作

  • confluence_get_page:按ID检索页面
  • confluence_create_page:创建新页面
  • confluence_update_page:更新现有页面
  • confluence_delete_page:删除页面
  • confluence_search_cql:使用CQL搜索内容
  • confluence_get_spaces:列出所有可访问的空间
  • confluence_get_page_history:获取页面版本历史记录

Bitbucket操作

  • bitbucket_get_repositories:列出项目中的存储库
  • bitbucket_get_branches:列出存储库中的分支
  • bitbucket_create_branch:创建新分支
  • bitbucket_get_pull_request:获取拉取请求详细信息
  • bitbucket_create_pull_request:创建新的pull请求
  • bitbucket_merge_pull_request:合并拉取请求
  • bitbucket_get_commits:获取提交历史记录
  • bitbucket_get_file_content:检索文件内容

竹子作业

  • bamboo_get_plans:列出所有构建计划
  • bamboo_get_plan:获取具体的构建计划
  • bamboo_trigger_build:触发构建
  • bamboo_get_build_result:获取构建结果详细信息
  • bamboo_get_build_log:检索生成日志
  • bamboo_get_deployment_projects:列出部署项目
  • bamboo_trigger_deployment:触发部署

MCP协议

服务器使用JSON-RPC 2.0消息传递实现模型上下文协议(MCP)。它支持以下MCP方法:

  • initialize:客户端和服务器之间的初始握手
  • tools/list:发现可用工具
  • tools/call:执行工具操作

示例工具调用

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "jira_get_issue",
    "arguments": {
      "issueKey": "TEST-123"
    }
  }
}

优雅地关闭

服务器在收到以下信息时处理优雅关机:

  • SIGINT (Ctrl+C)
  • SIGTERM

所有飞行中的请求都将在关机前完成。

错误处理

服务器通过适当的JSON-RPC错误代码提供全面的错误处理:

  • -32700:分析错误
  • -32600:无效请求
  • -32601:未找到方法
  • -32602:无效参数
  • -32603:内部错误
  • -32001:配置错误
  • -32002:身份验证错误
  • -32003:API错误
  • -32004:网络错误
  • -32005:速率限制错误

日志记录

服务器将重要事件记录到stdout:

  • 配置加载
  • 组件初始化
  • 服务器启动/关闭
  • 请求处理(通过结构化记录器)
  • 错误和警告

发展

项目结构

atlassian-mcp-server/
├── main.go                          # Entry point with dependency injection
├── internal/
│   ├── domain/                      # Domain layer (core business logic)
│   │   ├── config.go               # Configuration management
│   │   ├── auth.go                 # Authentication manager
│   │   ├── transport.go            # Transport interfaces and implementations
│   │   ├── response_mapper.go      # Response transformation
│   │   └── models.go               # Domain models
│   ├── application/                 # Application layer (use cases)
│   │   ├── server.go               # MCP server core
│   │   ├── router.go               # Request router
│   │   ├── jira_handler.go         # Jira operations handler
│   │   ├── confluence_handler.go   # Confluence operations handler
│   │   ├── bitbucket_handler.go    # Bitbucket operations handler
│   │   └── bamboo_handler.go       # Bamboo operations handler
│   └── infrastructure/              # Infrastructure layer (external dependencies)
│       ├── jira_client.go          # Jira API client
│       ├── confluence_client.go    # Confluence API client
│       ├── bitbucket_client.go     # Bitbucket API client
│       └── bamboo_client.go        # Bamboo API client
└── config.yaml                      # Configuration file

运行测试

# Run all tests
go test ./...

# Run tests with coverage
go test -cover ./...

# Run property-based tests
go test -v ./internal/...

许可证

[在此处添加您的许可证信息]

贡献

[在此处添加贡献指南]

支持

有关问题和疑问,请[在此处添加支持信息]。