Confluence MCP Server
by zhengziha
README.md
# Confluence MCP Server
一个用于 Confluence Server/Data Center 的 Model Context Protocol (MCP) Server,提供完整的知识库读写能力。
## 功能特性
- **搜索页面**: 使用 CQL 查询语言搜索 Confluence 页面
- **读取页面**: 获取页面详情,自动转换为 Markdown 格式
- **创建页面**: 支持 Markdown 和原生格式创建新页面
- **更新页面**: 更新现有页面的标题和内容
- **删除页面**: 删除指定页面
- **空间管理**: 列出空间、获取空间内容、获取子页面结构
- **格式转换**: 支持 Confluence Storage Format 与 Markdown 互转
## 安装
```bash
pip install -e .
```
## 配置
创建 `.env` 文件或设置环境变量:
```bash
CONFLUENCE_BASE_URL=https://your-confluence-domain.com/confluence
CONFLUENCE_USERNAME=your-email@example.com
CONFLUENCE_API_TOKEN=your-api-token-or-password
CONFLUENCE_API_VERSION=latest
CONFLUENCE_TIMEOUT=30
```
## 使用
### 启动 MCP Server
```bash
confluence-mcp-server --url https://your-confluence/confluence --username user@example.com --api-token your-token
```
或使用环境变量:
```bash
source .env
confluence-mcp-server
```
### 命令行参数
```bash
confluence-mcp-server --help
Options:
--url TEXT Confluence base URL
--username TEXT Confluence username/email
--api-token TEXT Confluence API token or password
--api-version TEXT API version (default: latest)
--timeout INTEGER Request timeout in seconds
-v, --version Show the version and exit.
--help Show this message and exit.
```
## 支持的工具
### 内容操作
- `search_pages`: 使用 CQL 搜索页面
- `get_page`: 根据页面ID获取页面详情
- `create_page`: 创建新页面
- `update_page`: 更新现有页面
- `delete_page`: 删除页面
- `get_page_by_title`: 根据标题搜索页面
### 空间操作
- `list_spaces`: 列出所有空间
- `get_space`: 获取空间详情
- `get_space_content`: 获取空间中的内容列表
- `get_child_pages`: 获取父页面的子页面
## CQL 查询示例
```
text ~ "用户登录" AND space = "TECH"
title ~ "API" AND type = "page"
space = "PRD" AND label = "2024"
```
## 多 Agent 使用教程
### 在 TRAE 中使用
#### 方式一:通过项目技能导入(推荐)
1. 打开 TRAE IDE
2. 在项目面板中添加 `confluence-skill` 项目目录
3. TRAE 会自动识别 `SKILL.md` 和 `mcp.json` 配置
4. 在对话中直接使用自然语言触发技能
#### 方式二:手动配置 MCP Server
1. 在终端启动 MCP Server:
```bash
cd /path/to/confluence-skill
source .venv/bin/activate
confluence-mcp-server
```
2. 在 TRAE 的设置中添加 MCP Server:
- 名称: `confluence-mcp-server`
- URL: `http://localhost:8000`
### 在 Cursor 中使用
1. 确保项目目录中有 `.cursor/mcp.json` 配置文件
2. Cursor 会自动读取配置并启动 MCP Server
3. 在对话中使用 `@confluence-mcp-server` 触发技能
`.cursor/mcp.json` 配置示例:
```json
{
"name": "confluence-mcp-server",
"command": "python",
"args": ["-m", "src.main"],
"env": {
"CONFLUENCE_BASE_URL": "${CONFLUENCE_BASE_URL}",
"CONFLUENCE_USERNAME": "${CONFLUENCE_USERNAME}",
"CONFLUENCE_API_TOKEN": "${CONFLUENCE_API_TOKEN}"
},
"description": "Confluence MCP Server for reading and writing Confluence pages"
}
```
### 在 Claude Code 中使用
#### 方式一:通过 CLAUDE.md 配置
1. 在项目根目录创建或编辑 `CLAUDE.md` 文件
2. 添加以下配置:
```markdown
---
skills:
- name: confluence-skill
type: mcp
server:
command: python
args: ["-m", "src.main"]
env:
CONFLUENCE_BASE_URL: "${CONFLUENCE_BASE_URL}"
CONFLUENCE_USERNAME: "${CONFLUENCE_USERNAME}"
CONFLUENCE_API_TOKEN: "${CONFLUENCE_API_TOKEN}"
---
# Confluence 知识库技能
使用 Confluence 技能可以搜索、读取、创建和更新 Confluence 文档。
```
3. 在对话中直接使用自然语言触发:
- "帮我搜索 Java 编码规范文档"
- "获取页面 63777422 的内容"
#### 方式二:手动启动 MCP Server
1. 启动 MCP Server:
```bash
cd /path/to/confluence-skill
source .venv/bin/activate
confluence-mcp-server
```
2. 在 Claude Code 设置中添加 MCP Server:
- 打开 Claude Code 设置
- 找到 MCP Servers 配置
- 添加新服务器:`http://localhost:8000`
### 在 Codex 中使用
1. 在项目目录中创建 `.codex/mcp.json` 配置文件:
```json
{
"servers": [
{
"name": "confluence-mcp-server",
"type": "http",
"url": "http://localhost:8000",
"description": "Confluence MCP Server"
}
]
}
```
2. 启动 MCP Server:
```bash
cd /path/to/confluence-skill
source .venv/bin/activate
confluence-mcp-server
```
3. 在 Codex 对话中使用 `@confluence-mcp-server` 触发技能
### 在 OpenCode 中使用
1. 在项目目录中创建 `.opencode/mcp.json` 配置文件:
```json
{
"name": "confluence-mcp-server",
"command": "python",
"args": ["-m", "src.main"],
"env": {
"CONFLUENCE_BASE_URL": "${CONFLUENCE_BASE_URL}",
"CONFLUENCE_USERNAME": "${CONFLUENCE_USERNAME}",
"CONFLUENCE_API_TOKEN": "${CONFLUENCE_API_TOKEN}"
},
"description": "Confluence MCP Server for reading and writing Confluence pages"
}
```
2. OpenCode 会自动识别配置并启动 MCP Server
3. 在对话中使用 `@confluence-mcp-server` 触发技能
### 使用 MCP Python SDK
```python
from mcp.stdio_client import StdioClient
async def main():
async with StdioClient(command="python", args=["-m", "src.main"]) as client:
# 搜索页面
results = await client.call_tool("search_pages", {"cql": "text ~ 'Java'", "limit": 5})
print(results)
# 获取页面内容
page = await client.call_tool("get_page", {"page_id": "63777422"})
print(page.get("title"))
print(page.get("body", {}).get("markdown"))
# 创建页面
new_page = await client.call_tool(
"create_page",
{
"title": "新文档标题",
"space_key": "TECH",
"content": "# 新文档\n\n内容描述",
"content_format": "markdown"
}
)
print(new_page)
if __name__ == "__main__":
import asyncio
asyncio.run(main())
```
### 使用 HTTP API
MCP Server 默认在 `http://localhost:8000` 提供 HTTP 接口。
#### 列出所有工具
```bash
curl http://localhost:8000/mcp/list_tools
```
#### 调用工具(POST)
```bash
curl -X POST http://localhost:8000/mcp/call_tool \
-H "Content-Type: application/json" \
-d '{
"name": "search_pages",
"arguments": {
"cql": "text ~ \"Java\"",
"limit": 5
}
}'
```
### 在自定义 Agent 中集成
```python
import requests
class ConfluenceSkillClient:
def __init__(self, base_url="http://localhost:8000"):
self.base_url = base_url
def search_pages(self, cql, limit=20):
return self._call_tool("search_pages", {"cql": cql, "limit": limit})
def get_page(self, page_id):
return self._call_tool("get_page", {"page_id": page_id})
def create_page(self, title, space_key, content, content_format="markdown"):
return self._call_tool(
"create_page",
{"title": title, "space_key": space_key, "content": content, "content_format": content_format}
)
def _call_tool(self, tool_name, arguments):
response = requests.post(
f"{self.base_url}/mcp/call_tool",
json={"name": tool_name, "arguments": arguments}
)
return response.json()
client = ConfluenceSkillClient()
results = client.search_pages("text ~ '技术文档'")
print(results)
```
### 环境变量配置方式
#### 方式一:使用 .env 文件
```bash
cp .env.example .env
# 编辑 .env 文件配置
source .env
confluence-mcp-server
```
#### 方式二:命令行参数
```bash
confluence-mcp-server \
--url https://docs.jk.com \
--username zhengzih \
--api-token your-password
```
#### 方式三:系统环境变量
```bash
export CONFLUENCE_BASE_URL=https://docs.jk.com
export CONFLUENCE_USERNAME=zhengzih
export CONFLUENCE_API_TOKEN=your-password
confluence-mcp-server
```
## 技术栈
- Python 3.10+
- MCP SDK (`mcp[cli]`)
- Requests
- BeautifulSoup4
- Markdown
- Click
## 许可证
MIT LicenseThis server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues