Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@yuque-mcp-plusshow the directory tree for my default repository"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
yuque-mcp-plus
语雀 MCP 服务。
它在现有 yuque-mcp-server 的基础上补了几类关键能力:
默认知识库解析
知识库 TOC/目录树查询
支持
parentUuid的文档创建文档与目录节点移动
目录节点创建与删除
官方命名兼容别名
通用 OpenAPI 透传
yuque_request通用 multipart 上传透传
yuque_multipart_request
英文文档见 README.en.md。
适用场景
适合这些语雀自动化需求:
按目录结构维护知识库
在指定目录下创建文档
批量重组目录或文档位置
通过 MCP 给 AI 助手提供稳定的语雀管理能力
在官方工具未覆盖的接口上,通过通用请求继续扩展
当前状态
已经完成并验证:
yuque_get_default_repositoryyuque_get_repository_toc_treeyuque_create_doc+parentUuidyuque_move_documentyuque_create_toc_nodeyuque_delete_toc_node根节点自动删除
官方兼容别名工具
真实联调已通过的能力:
创建根目录节点
在目录节点下创建文档
移动目录节点
删除目录节点
删除测试文档
环境变量
必填:
YUQUE_TOKEN
可选:
YUQUE_API_BASE_URLYUQUE_TIMEOUT_MSYUQUE_RETRIESYUQUE_DEFAULT_REPO_IDYUQUE_DEFAULT_REPO_NAMESPACE
说明:
YUQUE_DEFAULT_REPO_ID优先级高于YUQUE_DEFAULT_REPO_NAMESPACE两者都不填时,会回退到当前账号可访问的第一个知识库
运行方式
通过 npm 直接运行:
npx yuque-mcp-plus如果要带环境变量:
YUQUE_TOKEN="your-token" npx yuque-mcp-plus直接启动:
node ./src/index.js本地检查:
npm run check本地测试:
npm test版本变更记录:
发布步骤:
Codex MCP 配置示例
如果你想在本地源码和 npm 已发布包之间切换,可以直接替换 command + args。
源码模式:
[mcp_servers.yuque]
command = "node"
args = [ "/Users/program/code/code_mcp/yuque-mcp-plus/src/index.js" ]
[mcp_servers.yuque.env]
YUQUE_TOKEN = "your-token"npm 模式:
[mcp_servers.yuque]
command = "npx"
args = [ "-y", "yuque-mcp-plus" ]
[mcp_servers.yuque.env]
YUQUE_TOKEN = "your-token"其他客户端接入
下面这些示例基于 2026-03-04 当天可查到的客户端文档整理。不同版本的 UI 或配置文件位置可能会变,但本地 stdio 启动方式基本一致。
Claude Code
官方文档当前推荐直接用命令注册本地 stdio MCP:
源码模式:
claude mcp add --transport stdio yuque -- node /Users/program/code/code_mcp/yuque-mcp-plus/src/index.jsnpm 模式:
claude mcp add --transport stdio yuque -- npx -y yuque-mcp-plus如果要带环境变量:
claude mcp add --transport stdio --env YUQUE_TOKEN=your-token yuque -- node /Users/program/code/code_mcp/yuque-mcp-plus/src/index.js
claude mcp add --transport stdio --env YUQUE_TOKEN=your-token yuque -- npx -y yuque-mcp-plus常用管理命令:
claude mcp list
claude mcp get yuque如果你使用项目共享配置,也可以把它写进项目根目录的 .mcp.json:
源码模式:
{
"mcpServers": {
"yuque": {
"command": "node",
"args": [
"/Users/program/code/code_mcp/yuque-mcp-plus/src/index.js"
],
"env": {
"YUQUE_TOKEN": "${YUQUE_TOKEN}"
}
}
}
}npm 模式:
{
"mcpServers": {
"yuque": {
"command": "npx",
"args": [
"-y",
"yuque-mcp-plus"
],
"env": {
"YUQUE_TOKEN": "${YUQUE_TOKEN}"
}
}
}
}Qoder
Qoder 当前支持在设置页里直接添加 MCP。
操作路径:
打开 Qoder Settings
进入
MCP在
My Servers里点击+ Add粘贴 JSON 配置并保存
本项目可直接使用:
源码模式:
{
"mcpServers": {
"yuque": {
"command": "node",
"args": [
"/Users/program/code/code_mcp/yuque-mcp-plus/src/index.js"
],
"env": {
"YUQUE_TOKEN": "your-token"
}
}
}
}npm 模式:
{
"mcpServers": {
"yuque": {
"command": "npx",
"args": [
"-y",
"yuque-mcp-plus"
],
"env": {
"YUQUE_TOKEN": "your-token"
}
}
}
}保存后如果能看到连接图标,说明服务已成功连上。使用时要切到 Agent mode,这样 Qoder 才会调用 MCP 工具。
OpenCode
OpenCode 当前在 opencode.jsonc 里配置 MCP。本地 MCP 要放在 mcp 字段下,并声明为 type: "local"。
示例:
源码模式:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"yuque": {
"type": "local",
"command": [
"node",
"/Users/program/code/code_mcp/yuque-mcp-plus/src/index.js"
],
"enabled": true,
"environment": {
"YUQUE_TOKEN": "your-token"
}
}
}
}npm 模式:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"yuque": {
"type": "local",
"command": [
"npx",
"-y",
"yuque-mcp-plus"
],
"enabled": true,
"environment": {
"YUQUE_TOKEN": "your-token"
}
}
}
}使用时可以在提示词里直接点名,例如:
use the yuque tool to list my repositoriesTrae
Trae 已经支持 MCP,但我当前没查到和 Qoder/OpenCode 一样完整公开的本地配置文件格式文档。所以这里按目前公开的接入方式写最稳的 UI 配置步骤。
常见操作路径:
打开聊天框
点击右上角齿轮
进入
MCP添加一个本地
STDIO服务
建议填写:
源码模式:
Name:
yuqueCommand:
nodeArgs:
/Users/program/code/code_mcp/yuque-mcp-plus/src/index.jsEnv:
YUQUE_TOKEN=your-token
npm 模式:
Name:
yuqueCommand:
npxArgs:
-y yuque-mcp-plusEnv:
YUQUE_TOKEN=your-token
说明:
Trae 的具体入口位置和字段名可能会随版本变化
如果你的版本支持 JSON 配置导入,可以直接复用 Qoder 的那份
mcpServers配置如果是通过界面逐项填写,本项目本质上只需要
command + args + env
工具清单
核心工具
工具 | 用途 | 常用关键参数 |
| 检查服务和 token 是否可用 | 无 |
| 通用 OpenAPI 透传 |
|
| 通用 multipart 上传请求,适合附件类接口 |
|
| 获取当前用户信息 | 无 |
| 获取知识库列表 |
|
| 获取当前用户或指定用户的团队列表 |
|
| 获取单个知识库详情 |
|
| 解析默认知识库 | 无 |
| 搜索文档或知识库内容 |
|
知识库与文档
工具 | 用途 | 常用关键参数 |
| 列出知识库文档 |
|
| 获取单篇文档详情 |
|
| 创建文档,可挂到目录节点下 |
|
| 更新文档标题或正文 |
|
| 删除文档 |
|
| 创建知识库 |
|
| 更新知识库配置 |
|
| 删除知识库 |
|
TOC 与结构调整
工具 | 用途 | 常用关键参数 |
| 获取完整目录树 |
|
| 创建目录或链接节点 |
|
| 删除目录节点,支持根节点自动推导 |
|
| 移动文档或目录节点 |
|
| 直接透传底层 TOC 更新 |
|
版本、团队与统计
工具 | 用途 | 常用关键参数 |
| 获取文档版本列表 |
|
| 获取某个文档版本详情 |
|
| 获取团队成员列表 |
|
| 更新团队成员角色 |
|
| 移除团队成员 |
|
| 获取团队总统计 |
|
| 获取团队成员统计 |
|
| 获取团队知识库统计 |
|
| 获取团队文档统计 |
|
兼容别名
别名 | 实际工具 |
|
|
|
|
|
|
|
|
常用调用示例
1. 获取默认知识库
{}对应工具:
yuque_get_default_repository
2. 获取知识库目录树
{
"repoId": 63978478
}对应工具:
yuque_get_repository_toc_tree
3. 在指定目录下创建文档
{
"repoId": 63978478,
"title": "新文档",
"body": "# 标题\n\n正文",
"format": "markdown",
"parentUuid": "-W39TNJu_tufwcVm"
}对应工具:
yuque_create_doc
4. 创建目录节点
{
"repoId": 63978478,
"title": "新目录",
"nodeType": "TITLE",
"parentUuid": "-W39TNJu_tufwcVm",
"actionMode": "child",
"position": "append"
}如果不传 parentUuid,则创建在根层级。
对应工具:
yuque_create_toc_node
5. 删除目录节点
最简单的调用方式:
{
"repoId": 63978478,
"nodeUuid": "CxEXaBKTPFRKaopb"
}说明:
对子节点,服务会自动解析
parent_uuid对根节点,服务会自动解析删除策略
你也可以手动传
parentUuid覆盖自动推导
对应工具:
yuque_delete_toc_node
6. 移动文档或目录节点
{
"repoId": 63978478,
"nodeUuid": "Mir36kbfs2f4g130",
"parentUuid": "-W39TNJu_tufwcVm",
"actionMode": "child",
"position": "append"
}如果是移动文档,也可以传:
{
"repoId": 63978478,
"docId": 259413650,
"parentUuid": "-W39TNJu_tufwcVm",
"actionMode": "child",
"position": "append"
}对应工具:
yuque_move_document
7. 通用 OpenAPI 请求
{
"method": "GET",
"path": "/user"
}或:
{
"method": "GET",
"path": "/search",
"params": {
"q": "联商客",
"type": "doc"
}
}对应工具:
yuque_request
工具速查示例
下面这部分按工具拆开,适合复制后直接改参数。
yuque_get_default_repository
{}yuque_get_repos
{}按用户或团队过滤:
{
"ownerLogin": "your-team",
"ownerType": "groups"
}yuque_get_repo
{
"repoId": 63978478
}yuque_get_repository_toc_tree
{
"repoId": 63978478
}yuque_create_toc_node
创建根目录:
{
"repoId": 63978478,
"title": "一级目录",
"nodeType": "TITLE"
}创建子目录:
{
"repoId": 63978478,
"title": "二级目录",
"nodeType": "TITLE",
"parentUuid": "-W39TNJu_tufwcVm",
"actionMode": "child",
"position": "append"
}yuque_delete_toc_node
自动删除目录节点:
{
"repoId": 63978478,
"nodeUuid": "CxEXaBKTPFRKaopb"
}yuque_create_doc
创建根层级文档:
{
"repoId": 63978478,
"title": "根文档",
"body": "# 标题\n\n正文",
"format": "markdown"
}创建到目录下:
{
"repoId": 63978478,
"title": "目录文档",
"body": "# 标题\n\n正文",
"format": "markdown",
"parentUuid": "-W39TNJu_tufwcVm"
}yuque_update_doc
{
"docId": 259413650,
"title": "更新后的标题",
"body": "# 新标题\n\n新正文",
"format": "markdown"
}yuque_delete_doc
{
"docId": 259413650
}yuque_move_document
按文档移动:
{
"repoId": 63978478,
"docId": 259413650,
"parentUuid": "-W39TNJu_tufwcVm",
"actionMode": "child",
"position": "append"
}按目录节点移动:
{
"repoId": 63978478,
"nodeUuid": "Mir36kbfs2f4g130",
"parentUuid": "-W39TNJu_tufwcVm",
"actionMode": "child",
"position": "append"
}yuque_search
{
"query": "联商客",
"type": "doc",
"repoId": 63978478
}yuque_list_doc_versions
{
"docId": 259413650
}yuque_get_doc_version
{
"versionId": 123456789
}yuque_list_group_members
{
"login": "your-team"
}yuque_update_group_member
{
"login": "your-team",
"userId": 123456,
"role": 1
}yuque_remove_group_member
{
"login": "your-team",
"userId": 123456
}yuque_group_stats
{
"login": "your-team"
}yuque_request
查询当前用户:
{
"method": "GET",
"path": "/user"
}评论类请求示例:
{
"method": "POST",
"path": "/repos/63978478/docs/259413650/comments",
"body": {
"body": "这是一条评论"
}
}yuque_multipart_request
附件上传类请求示例:
{
"method": "POST",
"path": "/repos/63978478/attachments",
"fields": {
"type": "file"
},
"files": [
{
"fieldName": "file",
"filePath": "/absolute/path/to/example.png",
"contentType": "image/png"
}
]
}底层 TOC 更新:
{
"path": "/repos/63978478/toc",
"method": "PUT",
"body": {
"action": "removeNode",
"action_mode": "child",
"target_uuid": "-W39TNJu_tufwcVm",
"node_uuid": "Mir36kbfs2f4g130"
}
}命名兼容说明
为了兼容官方 yuque/yuque-mcp-server 的命名习惯,项目提供了这些别名:
yuque_list_repos->yuque_get_reposyuque_list_docs->yuque_get_docsyuque_get_toc->yuque_get_repository_toc_treeyuque_update_toc->yuque_update_repository_toc
已知边界
评论暂未封装成专用工具,建议通过
yuque_request访问附件暂未封装成官方专用工具,但现在可通过
yuque_multipart_request处理上传类接口yuque_update_repository_toc属于底层透传工具,适合高级场景
说明:
我已核对官方
openapi-metadata和sdk其中没有明确公开 comments / attachments 的专用 OpenAPI 定义
所以当前实现选择“补强通用能力”,而不是硬编码猜测端点
真实联调记录
以下场景已经在真实语雀知识库里跑通过:
默认知识库解析
yuque_get_default_repository可以正常返回默认知识库返回中会带
_defaultSource该字段用于标记默认知识库的解析来源,方便排查配置问题
目录树查询
yuque_get_repository_toc_tree可以正确返回TITLE、DOC和层级关系已验证返回字段中包含
uuid、parent_uuid、prev_uuid、sibling_uuid
在目录下创建文档
yuque_create_doc传入parentUuid后,可以先创建文档,再正确挂载到指定目录下已验证创建出的文档在 TOC 中可见,且
parent_uuid正确
文档移动
yuque_move_document已验证支持:通过
docId移动文档通过
nodeUuid移动 TOC 节点可在根层级与目录层级之间移动
创建目录节点
yuque_create_toc_node已验证可创建根层级TITLE也已验证可创建子级目录节点
删除目录节点
yuque_delete_toc_node已验证可删除:有父目录的普通目录节点
根层级目录节点
对根节点删除时,服务会自动推导正确的删除策略
清理测试数据
测试过程中创建的临时文档和临时目录节点都已成功删除
当前实现已经适合做日常知识库结构维护
常见报错处理
Missing YUQUE_TOKEN
原因:
没有注入
YUQUE_TOKEN终端手动运行时忘记带环境变量
处理:
检查
config.toml里的[mcp_servers.yuque.env]或者在终端启动时显式传入:
YUQUE_TOKEN="your-token" node ./src/index.jsdoc not found
原因:
文档 ID 不存在
文档已经被删除
仓库不匹配
处理:
先用
yuque_get_docs或yuque_get_doc确认docId确认
repoId或repoNamespace正确
action invalid
原因:
传给
yuque_update_repository_toc的底层action不符合语雀实际支持的值
处理:
优先使用上层工具:
yuque_create_toc_nodeyuque_delete_toc_nodeyuque_move_document只有在高级场景下再使用
yuque_update_repository_toc
missing action_mode
原因:
调用 TOC 更新接口时缺少
action_mode
处理:
尽量不要手写 TOC 底层 payload
对删除目录节点,优先使用
yuque_delete_toc_node
action_mode invalid
原因:
action_mode与当前操作不匹配
处理:
删除子节点通常对应
child删除根层级节点通常需要通过相邻节点推导
sibling该逻辑已经封装在
yuque_delete_toc_node中
getaddrinfo ENOTFOUND www.yuque.com
原因:
当前运行环境没有网络
被沙箱或代理限制
处理:
在允许联网的环境执行真实联调
在 Codex 中如遇沙箱网络限制,需要提权后重跑
工具新增后当前会话里看不到
原因:
MCP 配置已更新,但当前会话工具面没有热刷新
处理:
重启 Codex
重启后重新进入会话,再次调用新工具
项目结构
src/
config.js
index.js
server.js
tools.js
yuque-client.js
tests/
tools.test.js
yuque-client.test.js开发说明
核心实现位置:
配置读取:src/config.js
MCP 服务入口:src/server.js
工具定义与分发:src/tools.js
语雀 API 客户端:src/yuque-client.js
测试文件:
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.