Confluence MCP Server
Enables Claude Code to read and search Confluence pages, with support for images and multi-site configurations.
README
Confluence MCP Server
让 Claude Code 能直接读取 Confluence 内部文档。
它能做什么
get_page— 给一个页面 ID 或完整 URL,返回页面内容(转成 Markdown),并自动下载页面内的图片,让 Claude 能看懂产品图等视觉内容search_pages— 输入关键词,返回匹配的页面列表
安装
cd ~/confluence-mcp
npm install
npm run build
如果 npm install 报网络错误,改用公共源:
npm install --registry=https://registry.npmjs.org/
配置
第一步:填写站点信息
在项目根目录创建 sites.json,填上你的站点信息:
[
{
"name": "rd",
"baseUrl": "https://your-confluence.example.com",
"username": "你的用户名",
"password": "你的密码"
}
]
sites.json已加入.gitignore,不会被提交到 git。
第二步:接入 Claude Code
编辑 ~/.claude.json,在 mcpServers 里加入:
{
"mcpServers": {
"confluence": {
"command": "node",
"args": ["/Users/你的用户名/confluence-mcp/dist/index.js"],
"env": {}
}
}
}
args里的路径改成你自己机器上的实际路径。
第三步:重启 Claude Code
重启后,Claude Code 会自动加载 get_page 和 search_pages 两个工具。
多站点
如果你有多个 Confluence 站点,在 sites.json 里加就行:
[
{
"name": "rd",
"baseUrl": "https://rd.example.com",
"username": "alice",
"password": "xxx"
},
{
"name": "wiki",
"baseUrl": "https://wiki.example.com",
"username": "bob",
"password": "yyy"
}
]
然后在 ~/.claude.json 的 env 里指定用哪个:
"env": { "CONFLUENCE_SITE": "wiki" }
不设的话默认用第一个。
使用
配置好重启 Claude Code 后,直接在对话里说:
读一个页面:
帮我看看这个页面:
https://rd.dtsphere.com/pages/viewpage.action?pageId=90394821帮我读页面 90394821
搜索:
搜一下关于「部署流程」的文档
多站点时指定站点:
去 wiki 站点搜「接口规范」
Claude 会自动调用工具,不需要手动指定工具名。
关于图片
get_page 默认会下载页面里的图片(产品图、流程图等)一起返回。
- 单页最多取 10 张图,自动过滤表情、图标等装饰性图片
- 只想看文字、不想下图时,可以让 Claude 跳过:
读页面 90394821,不用下图
注意:命令行版(CLI)的 Claude 没有视觉能力,看不了图片内容。 网页版、桌面版能直接看图;CLI 下要分析图片,用下面的视觉分析。
让 CLI 也能分析图片(视觉分析)
CLI 看不了图时,可以让工具先调用视觉模型把图片解读成文字,再返回:
读页面 90394821 的 2.2 章节,分析里面的图片
工具会把图片喂给视觉模型,把"页面长什么样、有哪些字段和交互"的分析结论作为文字一并返回,CLI 就能基于这段文字继续工作。
- 视觉分析走
~/.claude.json里配置的同一套 API(ANTHROPIC_AUTH_TOKEN/ANTHROPIC_BASE_URL) - 分析用哪个模型,按优先级取:
CONFLUENCE_VISION_MODEL(图片分析专用)→ANTHROPIC_MODEL(通用)→ 回退默认 claude --model haiku或/model切换不影响图片分析模型——主体模型和分析模型是两条独立链路(详见下方实现原理)- 想单独指定分析模型,在 server 的
env里加CONFLUENCE_VISION_MODEL,重启生效 - 配合
sections只分析某章节的图,又快又省
分段读大页面
页面内容很长时(如大型需求文档),可以让 Claude 只读某几章,避免上下文撑爆:
读页面 90394821,只看第 2 到第 3 章 读页面 90394821,只看 sections 2-3.2.1
sections 参数裁的是正文,图片也只取那几章里的,两者同步缩减。
建议用法: 先用 search_pages 定位页面,再分章节逐段读,每次只给 Claude 当前要分析的那段内容。
文件位置一览
| 文件 | 作用 |
|---|---|
~/confluence-mcp/sites.json |
站点配置(你维护,不进 git) |
~/confluence-mcp/dist/index.js |
MCP server 实际运行的文件 |
~/.claude.json |
Claude Code 配置,指向上面的 dist |
实现原理
这个 server 的本质是一个只读的翻译层:Claude 连不上你内网的 Confluence,server 替它调 API,把结果转成 Claude 能消化的 Markdown + 图片 / 图片分析。
整体架构
一个文件一个职责,各自可独立测试:
Claude Code (CLI / 桌面 / 网页)
│ MCP 协议 (stdio)
▼
index.ts 启动入口,建 server,接 stdio
│
tools.ts 注册 2 个工具,编排整个流程
│
├── confluence.ts 调 Confluence REST API(带认证)
├── url.ts 解析 pageId / 各种 URL 形式
├── sections.ts 按章节编号裁剪正文
├── html.ts HTML → Markdown
├── images.ts 从 HTML 抽图片链接
└── vision.ts 调视觉模型分析图片
config.ts 读 sites.json,管多站点配置
get_page 的完整数据流
一次 get_page 调用,内部依次发生:
- 解析引用(
url.ts)— 用户给的可能是纯数字90387185、完整 URL、或/display/空间/标题,统一解析成 pageId 或「空间+标题」。 - 调 API 取页面(
confluence.ts)— 带 Basic 认证请求/rest/api/content/{id}?expand=body.view,拿到渲染后的 HTML。401/404 统一转中文错误。 - 按章节裁剪(
sections.ts,可选)— 指定sections时,根据标题里的自动编号(<span class="nh-number">2.2.</span>)把正文切到指定区间。这是省上下文的关键。 - HTML 转 Markdown(
html.ts)— 用 turndown 转成干净的 Markdown。 - 处理图片(
images.ts+confluence.ts)— 从正文 HTML 抽出附件图链接(过滤表情/图标),带认证下载转 base64。图片从裁剪后的 HTML 抽取,所以只看某章节时图片也只取那章的,正文和图同步缩减。 - 视觉分析(
vision.ts,可选)— 开启analyzeImages时,server 自己调一次视觉模型把图片解读成文字,追加到返回里,让没有视觉能力的 CLI 也能用上图片内容。
为什么 /model 切换不影响图片分析
MCP server 是 Claude Code 启动时 fork 出的独立子进程:
终端
├─ Claude Code 主进程 ← /model 只切这里(跟你对话的模型)
└─ confluence MCP 子进程 ← vision.ts 用自己的 env 调模型
/model 改的是主进程内存里的设置,不会传播到已经跑起来的子进程。vision.ts 调模型走的是它自己发起的全新 API 请求,模型名来自子进程启动时的环境变量,跟主体当前选什么模型没有通信渠道。所以图片分析模型只能通过 server 的 env(CONFLUENCE_VISION_MODEL 等)控制。
关键设计决策
- 图片下载失败返回 null 而非抛错 — 一页十几张图,一张挂了不该拖垮整页。
- vision client 懒加载 — 缺 token 时只在真正分析图片时才报错,不影响纯文本的
get_page/search_pages。 - 只读 — 全程只有 GET,没有任何写/改/删 Confluence 的能力。
- 凭据隔离 — 账密放
sites.json,已进.gitignore。
开发
npm test # 跑单元测试
npm run build # 重新编译
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。