语雀
本项目基于FastMCP框架,提供一个专门用于管理语雀知识库的MCP服务器。该服务器支持自动识别并创建知识库分组、创建或更新文档、获取文档详情、文档列表及完整知识库目录,并支持分页查询与结构化数据返回。所有操作均基于语雀官方API实现。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"yuque-mcp": {
"headers": {
"DEFAULT_API_TOKEN": "M4HeyBFsRmyNDsdfsdfsdf7ut3YFPX",
"DEFAULT_BOOK_SLUG": "vfgsd6",
"DEFAULT_GROUP_LOGIN": "oxsdf47",
"YUQUE_SPACE_SUBDOMAIN": "www"
},
"url": "http://192.168.125.89:8000/mcp"
}
}
}
服务介绍
语雀知识库管理 MCP 服务器
项目简介
本项目基于 FastMCP 框架,提供一个专门用于管理语雀知识库的 MCP 服务器。
该服务器支持自动识别并创建知识库分组,创建或更新文档,获取文档详情、文档列表及完整知识库目录,支持分页查询与结构化数据返回。
所有操作均基于语雀官方 API 实现。
环境配置
依赖安装
请确保已安装 Python 3.8+,并安装依赖包。
本项目主要依赖以下 Python 包:
- fastmcp
- starlette
- requests
- python-dotenv
可使用以下命令安装:
pip install fastmcp starlette requests python-dotenv
如果项目根目录有 requirements.txt 文件,也可使用:
pip install -r requirements.txt
环境变量配置
请在项目根目录创建 .env 文件,配置以下环境变量:
YUQUE_SPACE_SUBDOMAIN:语雀空间子域名(用于访问语雀空间的URL前缀,如 https://[SUBDOMAIN].yuque.com)DEFAULT_API_TOKEN:默认API访问令牌(用于认证调用语雀API的权限)DEFAULT_GROUP_LOGIN:默认群组(团队)别名(指定需要访问的语雀群组标识)DEFAULT_BOOK_SLUG:默认知识库别名(语雀文档库的唯一标识符,用于定位具体文档库)
示例:
YUQUE_SPACE_SUBDOMAIN=your_space_subdomain_here
DEFAULT_API_TOKEN=your_api_token_here
DEFAULT_GROUP_LOGIN=your_group_login_here
DEFAULT_BOOK_SLUG=your_book_slug_here
此外,也可以通过mcp客户端请求头传递这些变量,示例配置文件如下:
{
"mcpServers": {
"yuque-mcp": {
"url": "http://192.168.125.89:8000/mcp",
"headers": {
"YUQUE_SPACE_SUBDOMAIN": "www",
"DEFAULT_API_TOKEN": "M4HeyBFsRmyNDsdfsdfsdf7ut3YFPX",
"DEFAULT_GROUP_LOGIN": "oxsdf47",
"DEFAULT_BOOK_SLUG": "vfgsd6"
}
}
}
}
启动服务
运行服务器主程序 server.py,支持多种传输模式:
python server.py --transport streamable-http
可选传输模式:
streamable-http(默认):基于 HTTP 流的传输sse:基于服务器发送事件(Server-Sent Events)stdio:基于标准输入输出流
工具说明
服务器自动加载 tools/ 目录下的所有工具模块,主要包括:
-
create_yuque_group(name: str)
创建语雀知识库中的分组(目录)。参数说明:
ame (str): 要创建的分组名称。该名称在当前知识库中应具有唯一性。
-
create_yuque_doc_in_group(...)
在指定的语雀知识库中的指定分组下创建一个文档。如果该分组不存在,则会先创建该分组,再在其中创建文档。参数说明:
group_name (str): 分组名称。如果该分组不存在,将自动创建。doc_title (str): 要创建的文档的标题。doc_body (str): 文档的内容,支持 Markdown 格式。
-
get_yuque_doc_list(group_login, book_slug, offset, limit)
获取知识库中的文档列表,支持分页。 -
get_yuque_doc_detail(...)
获取指定文档的详细内容。 -
get_yuque_repo_toc(...)
获取知识库的完整目录结构。
使用示例
启动服务器并使用默认传输:
python server.py
指定传输模式为 SSE:
python server.py --transport sse
语雀文档重要的概念
接口域名为 https://www.yuque.com,但要注意访问空间内资源需要使用该空间的子域名。
网址路径:
语雀的网址有一定的格式,比如https://www.yuque.com/yuque/developer/api。
这里面包含了用户或团队的名称、知识库的标识,以及文档的标识。
https://www.yuque.com/yuque/developer/api [文档完整访问路径]
|
+-- yuque/ [团队或用户的登录名(group_login)]
|
+-- developer/ [知识库的标识(book_slug)]
|
+-- api [文档的标识(doc_slug)]
语雀文档身份认证
语雀所有的开放 API 都需要 Token 验证之后才能访问。
个人用户认证 超级会员专享权益
获取 Token 可通过点击语雀的个人头像,并进入 个人设置 页面拿到,如下图:
企业团队身份认证 旗舰版空间专享权益
空间内的团队,可进入团队设置页面进行获取(仅旗舰版空间可使用),如下图。
贡献指南
欢迎提交 Issue 和 Pull Request,改进功能或修复问题。
联系方式
如有疑问,请联系项目维护者。