Skip to main content
Glama
OSTechBase

Confluence MCP Server

by OSTechBase

Confluence MCP Server

让 Claude Code 能直接读取 Confluence 内部文档。

它能做什么

  • get_page — 给一个页面 ID 或完整 URL,返回页面内容(转成 Markdown),并自动下载页面内的图片,让 Claude 能看懂产品图等视觉内容

  • search_pages — 输入关键词,返回匹配的页面列表

Related MCP server: Confluence Communication Server

安装

cd ~/confluence-mcp
npm install
npm run build

如果 npm install 报网络错误,改用公共源: npm install --registry=https://registry.npmjs.org/

配置

第一步:填写站点信息

复制模版 sites.example.jsonsites.json,填上你的站点信息:

cp sites.example.json sites.json
[
  {
    "name": "rd",
    "baseUrl": "https://your-confluence.example.com",
    "username": "你的用户名",
    "password": "你的密码"
  }
]

sites.json 已加入 .gitignore,不会被提交到 git。模版 sites.example.json 只含占位值,可安全入库。

第二步:接入 Claude Code

编辑 ~/.claude.json,在 mcpServers 里加入:

{
  "mcpServers": {
    "confluence": {
      "command": "node",
      "args": ["/Users/你的用户名/confluence-mcp/dist/index.js"],
      "env": {}
    }
  }
}

args 里的路径改成你自己机器上的实际路径。

第三步:重启 Claude Code

重启后,Claude Code 会自动加载 get_pagesearch_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.jsonenv 里指定用哪个:

"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 调用,内部依次发生:

  1. 解析引用url.ts)— 用户给的可能是纯数字 90387185、完整 URL、或 /display/空间/标题,统一解析成 pageId 或「空间+标题」。

  2. 调 API 取页面confluence.ts)— 带 Basic 认证请求 /rest/api/content/{id}?expand=body.view,拿到渲染后的 HTML。401/404 统一转中文错误。

  3. 按章节裁剪sections.ts,可选)— 指定 sections 时,根据标题里的自动编号(<span class="nh-number">2.2.</span>)把正文切到指定区间。这是省上下文的关键。

  4. HTML 转 Markdownhtml.ts)— 用 turndown 转成干净的 Markdown。

  5. 处理图片images.ts + confluence.ts)— 从正文 HTML 抽出附件图链接(过滤表情/图标),带认证下载转 base64。图片从裁剪后的 HTML 抽取,所以只看某章节时图片也只取那章的,正文和图同步缩减。

  6. 视觉分析vision.ts,可选)— 开启 analyzeImages 时,server 自己调一次视觉模型把图片解读成文字,追加到返回里,让没有视觉能力的 CLI 也能用上图片内容。

为什么 /model 切换不影响图片分析

MCP server 是 Claude Code 启动时 fork 出的独立子进程

终端
  ├─ Claude Code 主进程      ← /model 只切这里(跟你对话的模型)
  └─ confluence MCP 子进程    ← vision.ts 用自己的 env 调模型

/model 改的是主进程内存里的设置,不会传播到已经跑起来的子进程。vision.ts 调模型走的是它自己发起的全新 API 请求,模型名来自子进程启动时的环境变量,跟主体当前选什么模型没有通信渠道。所以图片分析模型只能通过 server 的 envCONFLUENCE_VISION_MODEL 等)控制。

关键设计决策

  • 图片下载失败返回 null 而非抛错 — 一页十几张图,一张挂了不该拖垮整页。

  • vision client 懒加载 — 缺 token 时只在真正分析图片时才报错,不影响纯文本的 get_page / search_pages

  • 只读 — 全程只有 GET,没有任何写/改/删 Confluence 的能力。

  • 凭据隔离 — 账密放 sites.json,已进 .gitignore

开发

npm test       # 跑单元测试
npm run build  # 重新编译
F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/OSTechBase/confluence-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server