内容
mcp-confluence

Hub Container Registry](https.shields.io/badge/gh11tech%2Fmcp--confluence-blue?logo=github&logoColor=white)](https://github.com/n11tech/mcp-confluence/pkgscp-confluence)
Build](https://img.shields.io/github/actions/workflow11tech/mcp-con-publish.yml?branch=label=Docker%&logo=docker&logoColor://github.com/n/mcp-confluence/actions/workflows/docker-publish.yml)
**适用于 Atlassian Confluence Center 的 Node.js/TypeScript 模型上下文协议(MCP)服务器**
本服务器使 AI 系统(例如 LLMs、助手)能够通过标准 stdio 和 HTTP传输与您的 Confluence 页面、空间、评论、标签、附件和分析实时安全交互。
---
## 目录
- [功能)
- [什么是 MCP?](#什么是MCP)
-条件](#前提- [安装](#安装 - [Docker(推荐)](#docker推荐)
本地开发](#本地开发)
- [配置](#配置)
[环境变量](#)
- [MCP 客户端设置](#MCP客户端设置)
- [传输传输选项)
- [标准 I/O 传输(标准IO传输默认)
- [HTTP 流](#HTTP流式传输 [安全性](#安全性 - [API 密钥身份验证](#API密钥身份验证)
- [LLM 兼容性:模式清理器](#LLM兼容性模式清理器)
- [可用工具](#可用工具)
- [使用示例](#使用示例)
- [开发](#开发)
- [贡献](#贡献)
- [许可证](#许可证)
---
## 功能
- **双重传输支持**:在 stdio 流式传输之间- **安全**:HTTP API 密钥身份验证(可选)
- **全面的 Confluence 集成**访问 Confluence Server API - 页面、空间、标签、附件、分析和用户搜索
- **兼容**:模式清理器使工具模式与 Gemini、Claude 和 OpenAI
- **面向**:帮助 AI 理解和与您的 Con交互
- **绪**:使用 Type干净的架构、(InversifyJS错误处理和安全最佳
- **容器:Docker 支持轻松部署和扩展
---
## 什么是 MCP?
模型上下文协议(MCP)是一种开放标准地将 AI 系统连接到外部工具和数据源。本服务器为 Confluence Server/Data Center 实现 AI 助手能够通过标准化接口以编程方式与您的 内容交互。
---
## 前提条件
- **Node.js**:版本 19.0 或更高
- **Confluence Server/Data Center**:具有个人牌(PAT)的访问- **Docker**:(推荐)用于容器化部署 **Git**:用于克隆存储库
---
## 安装
### Docker(
#### 使用 GHCR 预构建镜像
```bash
# 从 GitHub 容器拉取最新镜像
docker pull ghcr.io/n11tech/mcp-confluence:latest
# 使用 stdio(默认)运行
-i --rm -e CONFLUENCEhttps://your-confluence-server.com" \
-e CONFLUENCE_TOKEN="al_access_token" \
cr.io/n11cp-confluence:latest
从源代码构建
1. **克隆存储库 ```bash
clone https://github11tech/mcp.git
cd mfluence
```
2. **构建 Docker **
```bash
-t mfluence:latest .
```
**使用 Docker 运行 ```bash
-i --rm -e CONFLU="https://your-confluence-server.com" \
-e CONFLUENCE_TOKEN="your_personal_access_token"cp-confluence ```
### 通过 n无需安装)
CONFLUENCE_URL://your-confluence-server.com" \
CONFLUENCE_TOKEN="your_personal_access_token" \
npx mcp-confluence
```
### 本地开发
1. **克隆和安装:**
```bash
git clone https://github.com/n11tech/mcp-confluence.git
cd mcp-confluence
npm install
```
2. **配置**
```bash cp config.templateenv
# 使用您的 Confluence 凭证编辑 .env
. **构建: ```bash
npm run build
```
**启动:**
bash
npm start
## 配置
### 环境变量
| 描述 | 默认值需 |
|----------|-------------|---------|----------|
| `CONFLUENCE_URL` | 您的 Confluence Server/Data Center URL ✅ |
CONFLUENCE_TOKEN` | Confluence 身份验证访问令牌 | |
| `CONFLU` | Con身份验证的用户名 | ❌ |
| `CONFLUENCE_PASSWORD` | Confluence 基本身份验证的密码 | - | ❌ `CONFLUENCE` | 操作的密钥 | - | |
| `ENABLE_HTTP` | 启用 HTTP 流式传输 | ` ❌ |
| `MCP_HTTP_PORT` 服务器端口 | `` | ❌ `MCP_HTTP_ENDPOINT HTTP 端点路径stream` | ❌ |
| `MCP_API | HTTP 身份验证的 API 密钥 | ❌ |
| `LOG_LEVEL` | 日:`error`、`、`info`、`debug` | `info` | |
| `LOG | 日志文件路径(如果未设置,则控制台) | - | ❌ |
### MCP 客户端设置
配置您的 MCP 以连接到此配置取决于您选择的传输---
## 传输### 标准 I/O 传输(默认)
方法使用标准输入/输出进行通信。这适用于直接为子进程 系统集成。
**MCP 配置示例:**
```json
{
"mcp {
"mfluence": {
": "docker",
"args": [
"run", "-i", "--rm", "--network=host",
"-e", "CONFLUENCE_URL",
", "CONFLUENCE_TOKEN",
"gh/n11tech/mcp:latest"
],
env": {
"CONFLUENCE_URL": "https://your-confluence-server.com",
"CONFLUENCE_TOKEN": "your_personal_access_token"
}
}
}
}
```
### HTTP 流式传输
对于需要远程连接或基于 Web 的集成,服务器支持带有服务器发送事件(SSE)的 HTTP 流式传输。
**启用 HTTP 传输:**
```bash
# 使用 GHCR 镜像
docker run -i --rm \
-p 3003:3003 \
-e CONFLUENCE_URL="https://your-confluence-server.com" \
e CONFLUENCEyour_personal_access_token" -e ENABLE_HTTP_TRANSPORT="true" \
-e MCP_HTTP3003" \
e MCP_HTTP_ENDPOINT" \
ghcr.io/n11tech/mcp-confluence:latest
# 使用本
npm run
```
**HTTP的 MCP 配置示例:**
```json
{
mcpServers": {
cp-confluence "command": "docker",
"args": [
"run", "-i", "--rm",
"-p", "3003003",
"- "CONFLUENCE_URL",
"-e",FLUENCE_TOKEN",
e", "ENABLE_HTTP_TRANSPORT",
"-e", "MCP_HTTP_PORT",
"-e", "MCP_HTTP_ENDPOINT",
"ghcr.io/n11cp-confluence:latest"
],
"env": {
CONFLUENCE_URL": "https://your-server.com",
"ENCE_TOKEN": "your_personal_access "ENABLE_HTTP_TRANSPORTtrue",
"MCP_HTTP_PORT":3",
"MCP_HTTP_ENDPOINT": "/ }
}
}
}
```
**HTTP:**
- **POST** `http://localhost3/stream` - 发送 MCP 请求
- **GET** `http://localhost:3003/stream` - 服务器发送事件流
- ** `http://localhost:3003/health` -端点
---
## 安全性
### API 密钥身份验证
对于传输,您可以启用密钥身份验证来保护您的服务器:
```bash
# 生成一个安全的 API(推荐:字符以上)
export MCP_API_KEY=$(openssl rand -hex 32)
# 启用身份验证并运行
docker run -i --rm \
-p :3003 \
-e CONFLUENCEhttps://your-confluence-server.com" \
-e CONFLUENCE_TOKEN="your_personal_access_token" \
-e ENABLE_HTTP_TRANSPORT="true" \
-e MCP_API_KEY="your-secure-api-key-here" \
mcp-confluence:latest
```
**带有 API 密钥的配置:**
```json
{
"mcpServers": {
"mcp-confluence": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-p", "3003:3003",
"-e", "CONFLUENCE_URL",
"-e", "CONFLUENCE_TOKEN",
", "ENABLE_HTTP_TRANSPORT",
"-e", "MCP_API_KEY",
"mcp-confluence:latest"
],
"env": {
"CONFLUENCE_URL": "https://your-confluence-server.com",
"CONFLUENCE_TOKEN": "your_personal_access_token",
"ENABLE_HTTP_TRANSPORT": "true",
"MCP_API_KEY": "your-secure-api-key-here"
}
}
}
}
```
启用 API 密钥身份验证后,所有 HTTP 请求都必须在请求头中包含 API 密钥。
兼容性:模式清理器
工具 `inputSchema` 有效载荷在服务器端规范化,以与 Google Gemini 等 LLM 客户端使用的更严格的 JSON 模式子集兼容:
- JSON 模式为 `type: ["string", "null"]` 自动重写为 `anyOf: [{typestring"}, {type: "null"}]`
- Anthropic Claude 和 OpenAI ChatGPT 客户端不受影响(重写形式在语义上等价且原生- **原型污染防御**:清理器跳过 `__proto__`、`prototype` 和 `constructor` 密钥
- **递归深度上限**:在深度 64 处限定,以防止对恶意输入发生堆栈溢出
- **纯转换清理器从不改变调用者输入,并且不执行任何 I/O 操作
---
## 可用工具
本服务器为与 Confluence Server/Data Center 交互提供了一套全面的工具:
### 页面管理
-_get_page` - 通过 ID、标题和空间密钥获取特定 Confluence 页面的内容
-fluence_search` - 使用简单术语或 CQL(Confluence 查询语言) 内容
- `_get_page_children` - 获取特定 Con面的子页面和文件夹
- `confluence_history` - 获取 Confluence 页面的版本历史
- `confluence_create_page` - 创建新的 Confluence 页面
- `_update_page` - 更新 Confluence 页面
- `confluence` - 删除现有的 Confluence 页面
- `confluence_move_page` - 将 Confluence 页面移动到不同的父页面下
### 评论
- `confluence_get_comments` - 获取特定 Confluence 页面的评论
- `confluence_add_comment` - 向 Confluence 页面添加评论
- `confluence_reply_to_comment` - 回复 Confluence 页面上的现有评论
### 标签
- `confluence_get_labels` - Confluence 页面的标签
- `confluence_add_label` - 向 Confluence 页面添加标签
### 附件
- `confluence_get_attachments` - 获取 Confluence 页面的附件
- `confluence_download_attachment` - 获取 Confluence 页面上特定元数据
- `confluence_upload_attachment` - 上传单个附件到 Confluence 页面
- `confluence_upload_attachments` - 上传多个附件到 Confluence 页面
- `confluence_delete_attachment` - 从 Confluence 页面删除附件
- `confluence_download_content_attachments` - 获取 Confluence 页面的所有附件
confluence_get` - 获取 页面的图像附件
### 用户和 Analytics `confluence_search_user` - 使用 CQL fluence 用户
confluence_get` - 获取 Confluence 页面的分析/视图
---
## 使用示例
### 页面操作
```javascript
// 通过 ID 获取特定页面
await callTool('confluence_get_page', {
page '123456789'
});
// 使用 CQL
await callToolfluence_search', {
query: 'type= space=DEV ~ "important concept limit: });
// 创建新页面
Tool('confluence_create_page', {
space_key: ' title: '架构决策记录',
content: '我们决定使用 MCP 协议...'
});
// 更新页面
await callTool('_update_page', {
page_id: '123456789',
title更新的架构决策记录',
content:新要求修改了});
```
### 评论和标签操作
```javascript 添加评论
Tool('confluence_add_comment', {
: '123456789',
content: '看起来很棒!批准发布。'
});
// 获取页面标签
await callTool('confluence_get_labels', {
page_id: '123456789'
});
// 添加标签
await callTool('confluence_add_label', {
page_id: '123456789',
name: 'documentation'
});
```
### 附件操作
```javascript
// 获取页面附件
await callTool('confluence_get_attachments', {
page_id: '123456789'
});
// 上传附件
await callTool('confluence_upload_attachment', {
page_id: '123456789',
file_path: '/path/to/diagram.png'
});
```
---
## 开发
### 可用脚本
| 脚本 | 描述 |
|--------|-------------|
| `npm run build` | 将 TypeScript 编译为 JavaScript |
| `npm start` | 使用 stdio 传输运行服务器 |
| `npm run start:http` | 使用 HTTP 流式传输运行 |
| `npm run dev` | 适用于开发的监视模式 |
| `npm run lint` | 代码质量检查 |
| `npm run test` | 运行测试套件 |
| `npm run inspector` | 调试 MCP 服务器交互 |
### 架构
代码库遵循具有 InversifyJS 依赖注入的干净架构原则:
```
src/
├── application/ # 应用层
│ ├── facade/ # Confluence 客户端外观
│ ├── factory/ # MCP 服务器工厂接口
│ ├── use-case/ # 业务逻辑(ConfluenceUseCase)
│ └── util/ # 模式清理器、验证器
├── domain/ # 领域层
│ ├── contracts/
│ │ ├── input/ # 所有用例的输入 DTO
│ │ └── schemas/ # Zod 验证模式
│ └── gateway/ # Confluence 客户端接口
│ # (页面、评论、标签、附件、用户、分析)
└── infrastructure/ # 基础设施层
├── client/ # 具体的 Confluence API 基于 Axios)
├── configuration/ # ConfluenceConfiguration、DI 容器、日志记录器
├── factory/ # McpServerFactory
└── http-streaming/ # HTTP/SSE 传输实现
```
**关键设计决策:**
- **干净的架构**:严格的层分离 - 领域层没有基础设施依赖
- **依赖注入**:InversifyJS 容器在启动时连接所有依赖
- **模式验证**:所有工具输入在使用案例执行前都使用 Zod 验证
- **双重传输**:支持 stdio(默认)和 HTTP 流式传输(SSE)
- **LLM 兼容性**:模式清理工具模式与 Gemini/Claude/G兼容
---
##
欢迎贡献阅读 [CONTRIBUTING.md](CONTRIBUTING.md) 以获取有关如何开始、编码标准和拉取请求流程的指南。
有关安全漏洞,请遵循 [SECURITY.md](SECURITY.md) 中描述的负责任的披露流程。
---
## 许可证
该项目在 Apache License, Version 2.0 下获得许可。有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
---
使用 [模型上下文协议](https://modelcontextprotocol.io) 构建