该项目基于FastMCP框架,提供了一个专门用于管理语言麻雀知识库的MCP服务器。
该服务器支持自动识别和创建知识库组,创建或更新文档,获取文档详情、文档列表以及完整的知识库目录,并支持分页查询和结构化数据返回。
所有操作均基于Yuque官方API实现。
请确保已安装Python 3.8+并安装了依赖包。
本项目主要依赖以下Python包:
可以使用以下命令进行安装:
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:服务器发送事件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 ,但需要注意的是,访问空间内的资源需要使用该空间的子域。
URL路径:
Yuque网站有一定的格式,如 https://www.yuque.com/yuque/developer/api 。 这包括用户或团队的名字,知识库的标识,以及文档的标识。
https://www.yuque.com/yuque/developer/api [文档完整访问路径]
|
+-- yuque/ [团队或用户的登录名(group_login)]
|
+-- developer/ [知识库的标识(book_slug)]
|
+-- api [文档的标识(doc_slug)]
Yuque的所有开放API都需要Token验证才能访问。
要获取Token,可以在Yuque的个人头像处进入个人设置页面获取,如下所示:
空间内的团队可以在团队设置页面访问(仅旗舰版空间可用),如下所示。
欢迎提交Issue和Pull Requests以改进功能或修复问题。
如有任何疑问,请联系项目维护者。