使用说明
MCP Atlassian服务器
这是一个经过维护的叉子 维贾伊·杜克/mcp阿特拉西安
为什么会有这个分叉: 2026年1月,Atlassian删除了
/rest/api/3/search完全破坏了原始包中的所有Jira搜索功能。这个叉子迁移到新的/rest/api/3/search/jql端点,并实现了新的基于光标的分页。A. PR已提交 但截至目前,该回购中有14多个未合并的PR。安装此叉子:
npm install @efithor/mcp-atlassian --registry=https://npm.pkg.github.com
用于与Atlassian产品(Confluence和Jira)集成的模型上下文协议(MCP)服务器。该服务器为AI助手提供了与Atlassian Cloud API交互的工具,实现了文档管理、搜索和导出功能。
特性
汇流集成
- 阅读和搜索:访问页面、空间和内容
- 内容管理:创建、更新页面和评论
- 页面层次结构:导航父/子页面关系
- 出口:将页面导出为HTML或Markdown格式,并嵌入图像
- 附件:列出、下载和上传附件
- 标签:管理页面标签
- 用户:查找和查询用户,跟踪个人活动
- 仪表版:查看最近的页面和提及
Jira集成
- 问题:阅读和搜索问题,获取个人任务
- 项目:列出并探索项目
- 木板和Sprints:列出公告板、查看冲刺、跟踪当前工作
- 评论:为问题添加评论
- 问题创建:使用自定义字段创建新问题
- 用户管理:获取当前用户详细信息
- 仪表版:查看您的未决问题和冲刺任务
安装
选项1:GitHub包(推荐)
首先,将npm配置为使用GitHub Packages @efithor 范围。添加到您的 ~/.npmrc:
@efithor:registry=https://npm.pkg.github.com
然后安装:
# Install globally
npm install -g @efithor/mcp-atlassian
# Or install locally
npm install @efithor/mcp-atlassian
选项2:克隆和构建
# Clone this fork
git clone https://github.com/Efithor/mcp-atlassian.git
cd mcp-atlassian
# Install dependencies
npm install
# Build TypeScript
npm run build
选项3:直接从GitHub安装
# Install directly from this fork
npm install -g github:Efithor/mcp-atlassian
# Or install in your project
npm install github:Efithor/mcp-atlassian
配置
环境变量
创建一个 .env 根目录中的文件:
ATLASSIAN_BASE_URL=https://yourdomain.atlassian.net
ATLASSIAN_EMAIL=your-email@example.com
ATLASSIAN_API_TOKEN=your-api-token
获取API令牌
- 登录 Atlassian帐户设置
- 点击“创建API令牌”
- 给它一个标签并复制令牌
- 在您的
.env文件
MCP设置配置
添加到您的Claude Desktop配置文件中:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 视窗:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
选项1:安装npm后
{
"mcpServers": {
"mcp-atlassian": {
"command": "npx",
"args": ["@efithor/mcp-atlassian"],
"env": {
"ATLASSIAN_BASE_URL": "https://yourdomain.atlassian.net",
"ATLASSIAN_EMAIL": "your-email@example.com",
"ATLASSIAN_API_TOKEN": "YOUR_API_TOKEN"
}
}
}
}
选项2:从本地克隆
{
"mcpServers": {
"mcp-atlassian": {
"command": "node",
"args": ["/path/to/your/mcp-atlassian/dist/index.js"],
"env": {
"ATLASSIAN_BASE_URL": "https://yourdomain.atlassian.net",
"ATLASSIAN_EMAIL": "your-email@example.com",
"ATLASSIAN_API_TOKEN": "YOUR_API_TOKEN"
}
}
}
}
典型路径示例:
{
"mcpServers": {
"mcp-atlassian": {
"command": "node",
"args": ["~/projects/mcp-atlassian/dist/index.js"],
"env": {
"ATLASSIAN_BASE_URL": "https://yourdomain.atlassian.net",
"ATLASSIAN_EMAIL": "your.email@company.com",
"ATLASSIAN_API_TOKEN": "YOUR_API_TOKEN"
}
}
}
}
选项3:使用uvx直接从GitHub(即将推出)
您可以直接从GitHub运行服务器,而无需克隆:
{
"mcpServers": {
"mcp-atlassian": {
"command": "uvx",
"args": ["--from", "git+https://github.com/Efithor/mcp-atlassian.git", "mcp-atlassian"],
"env": {
"ATLASSIAN_BASE_URL": "https://yourdomain.atlassian.net",
"ATLASSIAN_EMAIL": "your-email@example.com",
"ATLASSIAN_API_TOKEN": "YOUR_API_TOKEN"
}
}
}
}
注: uvx方法要求为Python打包正确配置包。这是计划在未来发布的。
可用工具
汇流工具
| 工具 | 说明 |
|---|---|
get_confluence_current_user |
获取已验证用户的详细信息 |
get_confluence_user |
获取特定用户的详细信息 |
search_confluence_pages_by_user |
按用户活动搜索页面 |
list_user_confluence_pages |
列出用户编写的页面 |
list_user_confluence_attachments |
列出用户上传的附件 |
read_confluence_page |
按ID或标题阅读Confluence页面 |
search_confluence_pages |
使用CQL(汇流查询语言)搜索页面 |
list_confluence_spaces |
列出所有可访问的空间 |
get_confluence_space |
获取特定空间的详细信息 |
create_confluence_page |
创建新页面 |
update_confluence_page |
更新现有页面内容 |
list_confluence_page_children |
列出页面的子页面 |
list_confluence_page_ancestors |
获取页面的父层次结构 |
export_confluence_page |
将页面导出为HTML或Markdown格式,并嵌入图像 |
list_confluence_attachments |
列出页面附件 |
download_confluence_attachment |
下载特定附件 |
upload_confluence_attachment |
将文件上传到页面 |
download_confluence_page_complete |
下载包含所有内容的页面 |
add_confluence_comment |
向页面添加评论 |
list_confluence_page_labels |
获取页面标签 |
add_confluence_page_label |
向页面添加标签 |
find_confluence_users |
搜索用户 |
get_my_recent_confluence_pages |
列出您最近的页面 |
get_confluence_pages_mentioning_me |
查找提及您的页面 |
Jira工具
| 工具 | 说明 |
|---|---|
get_jira_current_user |
获取已验证用户的详细信息 |
get_jira_user |
获取特定用户的详细信息 |
search_jira_issues_by_user |
按用户参与度搜索问题 |
list_user_jira_issues |
按用户角色列出问题,并进行日期筛选 |
get_user_jira_activity |
跟踪用户活动,包括评论和转换 |
get_user_jira_worklog |
获取带有格式化总计的时间跟踪条目 |
read_jira_issue |
按密钥读取问题详细信息 |
search_jira_issues |
使用JQL搜索问题 |
list_jira_projects |
列出所有可访问的项目 |
create_jira_issue |
创建新问题 |
add_jira_comment |
向问题添加评论 |
list_jira_boards |
列出可访问的Scrum/看板板 |
list_jira_sprints |
列出板上的冲刺 |
get_jira_sprint |
获取详细的冲刺信息 |
get_my_tasks_in_current_sprint |
让你的任务处于主动冲刺状态 |
get_my_open_issues |
获取所有未解决的问题 |
使用示例
导出汇流页
// Export as HTML (raw content with embedded images)
{
"tool": "export_confluence_page",
"arguments": {
"pageId": "123456789",
"format": "html"
}
}
// Export as Markdown with metadata
{
"tool": "export_confluence_page",
"arguments": {
"pageId": "123456789",
"format": "markdown"
}
}
搜索汇流
{
"tool": "search_confluence_pages",
"arguments": {
"cql": "space=DEV AND text~'architecture'",
"limit": 10
}
}
创建Jira问题
{
"tool": "create_jira_issue",
"arguments": {
"projectKey": "PROJ",
"issueType": "Task",
"summary": "Implement new feature",
"description": "Detailed description here",
"priority": "Medium"
}
}
获取Sprint任务
// Get your tasks in the current sprint
{
"tool": "get_my_tasks_in_current_sprint",
"arguments": {
"projectKey": "PROJ"
}
}
// Get all your open issues
{
"tool": "get_my_open_issues",
"arguments": {
"projectKeys": ["PROJ1", "PROJ2"],
"maxResults": 50
}
}
与板和Sprints一起工作
// List boards for a project
{
"tool": "list_jira_boards",
"arguments": {
"projectKeyOrId": "PROJ",
"type": "scrum"
}
}
// Get active sprints for a board
{
"tool": "list_jira_sprints",
"arguments": {
"boardId": 123,
"state": "active"
}
}
用户特定的Jira操作
// Get user details
{
"tool": "get_jira_user",
"arguments": {
"username": "john.doe"
}
}
// Search issues by user involvement
{
"tool": "search_jira_issues_by_user",
"arguments": {
"username": "john.doe",
"searchType": "assignee",
"status": "In Progress",
"maxResults": 20
}
}
// Get user's work logs
{
"tool": "get_user_jira_worklog",
"arguments": {
"username": "john.doe",
"startDate": "2024-01-01",
"endDate": "2024-01-31",
"projectKeys": ["PROJ1", "PROJ2"]
}
}
// Track user activity
{
"tool": "get_user_jira_activity",
"arguments": {
"username": "john.doe",
"activityType": "all",
"days": 7
}
}
内容格式支持
标记语言↔ 汇流存储格式
服务器会自动在Markdown和Confluence的存储格式之间进行转换:
- 在创建/更新页面时用Markdown写内容
- 读取存储格式或转换为Markdown的页面
- 保留格式、链接和结构
导出格式
- 超文本标记语言:原始Confluence HTML,所有图像都嵌入为base64数据URI
- 标记语言:使用YAML frontmatter清理Markdown,包括元数据和嵌入图像
发展
# Run in development mode with console logging
npm run dev
# Build for production
npm run build
# Run built server in MCP mode (no console output)
npm start
# Run built server in development mode (with console output)
npm run start:dev
# Run tests
npm test
日志记录行为
服务器默认为MCP模式,禁用控制台输出以防止干扰JSON-RPC协议。控制台日志记录仅在以下情况下启用 MCP_SERVER_MODE=false 已设置,由自动完成 dev 和 start:dev 脚本。
项目结构
mcp-atlassian/
├── src/
│ ├── index.ts # Main server entry point
│ ├── types/ # TypeScript type definitions
│ ├── confluence/
│ │ ├── handlers.ts # Confluence API handlers
│ │ └── tools.ts # Tool definitions
│ ├── jira/
│ │ ├── handlers.ts # Jira API handlers
│ │ └── tools.ts # Tool definitions
│ └── utils/
│ ├── http-client.ts # Axios HTTP client setup
│ ├── content-converter.ts # Markdown ↔ Storage conversion
│ └── export-converter.ts # HTML/Markdown export utilities
├── dist/ # Compiled JavaScript
├── .env # Environment variables (not in git)
├── package.json
└── tsconfig.json
安全说明
- API令牌存储在环境变量中,而不是存储在代码中
- 使用API令牌(而不是密码)进行基本身份验证
- 所有请求都是通过HTTPS发出的
- 仅支持Atlassian Cloud(不支持服务器/数据中心)
局限性
- 未执行删除操作(出于安全考虑)
- 导出为PDF需要浏览器转换(HTML→ 打印→ PDF)
- 某些Confluence宏可能无法完全转换为Markdown
- 基于Atlassian Cloud API限制适用的费率限制
CI/CD管道
该项目使用GitHub Actions进行持续集成和部署。
工作流
🔄 持续集成(ci.yml)
- 触发器:推送到主/开发,拉取请求
- 工作:
- 测试:在Node.js 18.x、20.x和22.x上运行测试
- 构建:编译TypeScript并验证构建
- 棉绒:类型检查和安全审计
- 验证包:确保包装尺寸和结构
📦 发布到npm(publish.yml)
- 触发器:GitHub发布,手动调度
- 特性:
- 自动版本碰撞
- 带出处的npm发布
- GitHub发布创建
- 变更日志更新
🔒 安全扫描(security.yml)
- 触发器:推送到主、PR、每周时间表
- 扫描:
- npm漏洞审计
- CodeQL分析
- OWASP依赖性检查
- Snyk安全扫描(可选)
🏷️ 发布管理(release.yml)
- 触发器:版本标签,手动调度
- 特性:
- 自动生成变更日志
- GitHub发布创建
- 构建工件附件
- 发行说明格式
✅ PR验证(pr-validation.yml)
- 触发器:拉取请求事件
- 检查:
- 语义PR标题验证
- PR尺寸标签
- 根据更改的文件自动标记
🤖 自动依赖关系更新
Dependabot配置为:
- 每周检查npm依赖更新
- 每周查看GitHub操作更新
- 将非主要更新分组在一起
- 创建带有适当标签的PR
设置CI/CD
必需的GitHub机密
-
NPM令牌:用于发布的npm身份验证令牌
- 生成时间:https://www.npmjs.com/settings/YOUR_USERNAME/tokens
- 所需范围:
publish
-
SNYK_TOKEN (可选):用于Snyk安全扫描
- 来自:https://app.snyk.io/account
分支保护
推荐的分支保护规则 main:
- 合并前需要公关审查
- 要求状态检查通过(CI测试)
- 要求分支机构保持最新状态
- 将管理员纳入限制范围
本地开发
在推动更改之前:
# Run tests locally
npm test
# Build the project
npm run build
# Check for security vulnerabilities
npm audit
# Type check
npx tsc --noEmit
贡献
欢迎投稿!请随时提交拉取请求。
许可证
MIT许可证-有关详细信息,请参阅许可证文件
支持
对于问题和疑问:
- 在中创建问题 此分支的GitHub存储库
- 检查 Atlassian API文档 针对特定于API的问题
- 审查 MCP文件 与协议相关的主题
致谢
内置:
- 模型上下文协议(MCP)
- Atlassian REST API
- TypeScript、Node.js、Axios
贡献者
感谢这些了不起的人(表情符号键):
Vijay Iyengar 💻 📖 🚧 👀 ⚠️ 🚇 |
该项目遵循 所有贡献者 规范。欢迎任何形式的贡献!
