MCP Atlassian
一个模型上下文协议(MCP)服务器,为与Atlassian产品(Confluence和Jira)交互提供了全面的工具。
概述
此MCP服务器允许AI代理通过标准化接口与Atlassian产品进行交互。它为以下方面提供了广泛的工具:
- 汇流:使用v2 REST API进行完整的CRUD操作、内容搜索、空间管理、页面管理、注释、标签等
- Jira:问题管理、项目运营、过渡、评论和全面的工作流程支持
主要特点
- 现代API支持:使用Confluence v2 REST API并回退到v1以实现搜索功能
- 综合工具集:18+Confluence工具和8+Jira工具,涵盖所有主要业务
- 安全与隐私:内置PII过滤和SSL验证控制
- 灵活的配置:支持单独的服务URL、身份验证方法和工具过滤
- 分页支持:v2 API的基于光标的分页和v1 API的偏移/限制
- 错误处理:具有详细错误消息的全面错误处理
- 类型安全:具有正确类型定义的完整TypeScript实现
先决条件
- Node.js(v16或更高版本)
- npm或纱线
- 带有API令牌的Atlassian帐户
- Docker(可选,用于容器化部署)
安装
标准安装
- 克隆存储库:
git clone https://github.com/yourusername/mcp-atlassian.git
cd mcp-atlassian- 安装依赖项:
npm install
# or using make
make install- 创建一个
.env根目录中的文件,其中包含您的Atlassian凭据:
ATLASSIAN_HOST=https://your-domain.atlassian.net
ATLASSIAN_EMAIL=your-email@example.com
ATLASSIAN_API_TOKEN=your-api-tokenDocker安装
- 克隆存储库:
git clone https://github.com/yourusername/mcp-atlassian.git
cd mcp-atlassian- 创建一个
.env如上所述的文件。
- 构建并运行Docker容器:
# Build the Docker image
make docker-build
# Run the Docker container
make docker-run
# Or use Docker Compose
make docker-compose用法
启动服务器
# Using npm
npm start
# Using make
make start
# Using Docker
make docker-run这将启动MCP服务器,它将在可流式传输的HTTP上进行监听和响应。
MCP配置
"mcp-searchapi": {
"name": "mcp-searchapi",
"type": "streamable-http",
"streamable": true,
"url": "http://localhost:3007/mcp"
}可用工具
汇流工具
搜索与发现:
- 搜索影响:使用带CQL的v1 API搜索Confluence中的内容
- 参数: searchText (字符串), spaceKey (字符串,可选), limit (数字), start (编号)
- 搜索_影响_页面_标题:使用v2 API按标题搜索页面
- 参数: title (字符串,可选), spaceId (字符串,可选), limit (数字), cursor (字符串,可选)
空间管理:
- get_conference_space_by_id_or_key:获取特定Confluence空间的信息
- 参数: spaceIdOrKey (字符串)
- get_conference_spaces:获取所有可用空间
- 参数: limit (数字,可选), cursor (字符串,可选)
页面管理:
- 获取影响内容:按ID获取特定页面内容
- 参数: pageId (字符串), bodyFormat (枚举:存储/atlas_doc_format/wiki,可选)
- get_conference_pages:获取空间中的所有页面
- 参数: spaceId (字符串), limit (数字,可选), cursor (字符串,可选)
- get_conference_child_pages:获取特定页面的子页面
- 参数: pageId (字符串), limit (数字,可选), cursor (字符串,可选)
- conference_create_page:创建新的Confluence页面
- 参数: spaceId (字符串), title (字符串), content (字符串), status (枚举,可选), representation (枚举,可选), parentId (字符串,可选)
- conference_update_page:更新现有页面
- 参数: pageId (字符串), title (字符串), content (字符串), version (数字), status (枚举,可选), representation (枚举,可选), versionMessage (字符串,可选)
- update_confluence_page_title:仅更新页面标题
- 参数: pageId (字符串), title (字符串), status (枚举,可选)
- conference_delete_page:删除Confluence页面
- 参数: pageId (字符串)
标签管理:
- get_confluence_pages_by_label:查找具有特定标签的页面
- 参数: label (字符串), spaceId (字符串,可选), limit (数字,可选), cursor (字符串,可选)
- get_conference_page_labels:获取特定页面的标签
- 参数: pageId (字符串), limit (数字,可选), cursor (字符串,可选)
- add_confluence_page_labels:向页面添加标签
- 参数: pageId (字符串), labels (字符串数组)
评论:
- get_conference_page_comments:在页面上获得定期评论
- 参数: pageId (字符串), limit (数字,可选), cursor (字符串,可选)
- add_confluence_page_comment:向页面添加评论
- 参数: pageId (字符串), content (字符串), representation (枚举,可选)
- get_conference_page_inline_comments:获取页面上的内联评论
- 参数: pageId (字符串), limit (数字,可选), cursor (字符串,可选)
- create_confluence_footer_comment:创建页脚注释
- 参数: pageId (字符串,可选), blogPostId (字符串,可选), parentCommentId (字符串,可选), attachmentId (字符串,可选), customContentId (字符串,可选), content (字符串), representation (枚举,可选)
Jira工具
- search_jira_issues:使用JQL(Jira查询语言)搜索问题
- 参数: jql (字符串), maxResults (数字,可选)
- get_jira_issue:获取有关特定问题的详细信息
- 参数: issueKey (字符串)
- jira_get_all_项目:获取所有可访问的项目
- 参数:无
- jira_create_issue:创建新的Jira问题
- 参数: projectKey (字符串), issueType (字符串), summary (字符串), description (字符串,可选),其他字段
- jira_update_issue:更新现有问题
- 参数: issueKey (字符串), fields (具有更新数据的对象)
- jira_add_注释:向问题添加评论
- 参数: issueKey (字符串), comment (字符串)
- jira_get_转换:获取问题的可用转换
- 参数: issueKey (字符串)
- jira_transition问题:将问题转变为另一种状态
- 参数: issueKey (字符串), transitionId (字符串), comment (字符串,可选)
架构说明
汇流API迁移
此服务器主要使用 Confluence v2 REST API 对于大多数操作,必要时可战略性回退到v1 API:
- v2 API:用于空格、页面、注释、标签-提供更好的性能和现代的基于光标的分页
- v1 API:用于通过CQL进行内容搜索-提供更强大的搜索功能
- SSL支持:自托管实例的可配置SSL验证旁路
- 认证:支持基本身份验证、OAuth 2.0(计划中)和PAT令牌
工具过滤和安全
- 只读模式:禁用所有写入操作以进行安全探索
- 工具白名单:仅通过启用特定工具
ENABLED_TOOLS环境变量 - PII过滤:自动检测和屏蔽响应中的敏感信息
- 错误上下文:详细的错误消息,不暴露敏感配置
发展
项目结构
src/
├── config/ # Configuration files
│ └── env.ts # Environment configuration with validation
├── services/ # Service classes for Atlassian APIs
│ ├── confluencev2.ts # Confluence v2 REST API service (primary)
│ ├── confluence.ts # Legacy Confluence service (deprecated)
│ └── jira.ts # Jira REST API service
├── tools/ # MCP tool implementations
│ ├── search-confluence.ts # Content search (v1 API)
│ ├── search-confluence-pages-by-title.ts # Title search (v2 API)
│ ├── get-confluence-space.ts # Single space info
│ ├── get-confluence-spaces.ts # All spaces list
│ ├── get-confluence-content.ts # Page content by ID
│ ├── get-confluence-pages.ts # Pages in space
│ ├── get-confluence-child-pages.ts # Child pages
│ ├── get-confluence-pages-by-label.ts # Pages by label
│ ├── get-confluence-page-labels.ts # Page labels
│ ├── add-confluence-page-labels.ts # Add labels
│ ├── get-confluence-page-comments.ts # Page comments
│ ├── add-confluence-page-comment.ts # Add comment
│ ├── get-confluence-page-inline-comments.ts # Inline comments
│ ├── confluence-create-page.ts # Create page
│ ├── confluence-update-page.ts # Update page
│ ├── update-confluence-page-title.ts # Update title only
│ ├── confluence-delete-page.ts # Delete page
│ ├── create-confluence-footer-comment.ts # Footer comments
│ ├── search-jira-issues.ts # Jira search
│ ├── get-jira-issue.ts # Single issue
│ ├── jira-create-issue.ts # Create issue
│ ├── jira-update-issue.ts # Update issue
│ ├── jira-add-comment.ts # Add comment
│ ├── jira-get-transitions.ts # Get transitions
│ ├── jira-transition-issue.ts # Transition issue
│ ├── jira-get-all-projects.ts # All projects
│ ├── utils.ts # Utility functions & PII filtering
│ └── index.ts # Tool exports
├── utils/ # Utility modules
│ └── tool-filter.ts # Tool filtering and access control
└── index.ts # Main entry point and server setup建筑
# Using npm
npm run build
# Using make
make build测试
# Using npm
npm test
# Using make
make testMakefile命令
该项目包括一个Makefile来简化常见操作:
# Display available commands
make help许可证
麻省理工学院
贡献
- 分叉存储库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
