Wiki知识库管理工具

用于Wiki.js实例的MCP服务器,支持知识库的读取、编辑和管理功能,适用于团队协作和内容管理场景。

  • by uyu423
  • TypeScript
  • 本地部署
  • 8 星标
  • 更新于
在 GitHub 查看 uyu423/requarks-wiki-mcp

使用说明

重新搜索wiki mcp

MCP服务器 Wiki.js 实例,让代理将其用作知识库。

特征:

  • 29工具 (19读+10写)涵盖页面、评论、标签、资产、用户、导航和系统信息。
  • 搜索、列出和浏览检索工作流程的页面(类似RAG的用法)。
  • 按路径或页面ID获取页面内容,查看版本历史记录并还原以前的版本。
  • 使用页面树、页面链接图和导航结构浏览网站层次结构。
  • 完整的评论系统:列出、阅读、创建、更新和删除页面上的评论。
  • 用于媒体文件发现的资产和文件夹浏览。
  • 用户上下文:当前用户配置文件和用户搜索。
  • 系统诊断:版本信息、站点配置和导航树。
  • 标签管理:列出、搜索、更新和删除标签。
  • 可选页面创建/更新/删除/移动/还原工具,带有明确的安全门。
  • 内置资源:markdown语法指南、Mermaid图指南和API权限指南。
  • 使用LLM友好的错误消息键入错误分类。
  • GraphQL客户端,具有超时、指数回退重试和请求相关性。
  • 安全强化:敏感字段过滤、URL验证、输入长度限制。

需求

  • Node.js 20+
  • 可访问的Wiki.js主机名
  • 具有适当权限的Wiki.js API密钥(JWT)

设置

cp .env.example .env
npm install

配置 .env:

WIKI_BASE_URL=https://your-wiki-hostname
WIKI_API_TOKEN=your_wikijs_api_key_jwt
WIKI_GRAPHQL_PATH=/graphql
WIKI_DEFAULT_LOCALE=en
WIKI_DEFAULT_EDITOR=markdown

# Mutating operations are disabled by default
WIKI_MUTATIONS_ENABLED=false
# Optional extra safety gate for writes. If set, write tools must pass matching confirm.
WIKI_MUTATION_CONFIRM_TOKEN=
WIKI_MUTATION_DRY_RUN=true
# Comma-separated path prefixes without leading slash (empty = no prefix restriction)
WIKI_ALLOWED_MUTATION_PATH_PREFIXES=

# HTTP resilience
WIKI_HTTP_TIMEOUT_MS=15000
WIKI_HTTP_MAX_RETRIES=2

环境变量引用:

变量 必填 默认 描述
WIKI_BASE_URL 是 - 基本Wiki.js URL(例如, https://wiki.example.com).
WIKI_API_TOKEN 是 - Wiki.js API密钥JWT用于 Authorization: Bearer ....
WIKI_GRAPHQL_PATH 没有 /graphql GraphQL端点路径附加到 WIKI_BASE_URL.
WIKI_DEFAULT_LOCALE 没有 en 当工具输入不提供区域设置时使用的默认区域设置。
WIKI_DEFAULT_EDITOR 没有 markdown 未指定时用于页面创建的默认编辑器。
WIKI_MUTATIONS_ENABLED 没有 false 设置为时启用所有写入工具(页面、注释和标记突变) true.
WIKI_MUTATION_CONFIRM_TOKEN 没有 `` (empty) Optional extra safety gate. When set, write tool calls must provide matching confirm.
WIKI_HTTP_TIMEOUT_MS 没有 15000 HTTP请求超时(毫秒)(包括正文读取)。最低1。
WIKI_HTTP_MAX_RETRIES 没有 2 瞬时读取失败的最大重试次数(408、502-504)。突变永远不会被再次尝试。最小值0。

Wiki.js先决条件(GraphQL+neneneba API密钥):

  • 此MCP内部使用Wiki.js GraphQL。
  • 在Wiki.js管理中,转到 Administration -> API 并启用API访问。
  • 创建API密钥并将其设置为 WIKI_API_TOKEN.

MCP客户端配置示例(~/.mcp.json)

{
  "mcpServers": {
    "requarks-wiki": {
      "command": "npx",
      "args": ["-y", "@yowu-dev/requarks-wiki-mcp@latest"],
      "env": {
        "WIKI_BASE_URL": "https://wiki.your-domain.dev",
        "WIKI_API_TOKEN": "your_wikijs_api_key_jwt",
        "WIKI_GRAPHQL_PATH": "/graphql",
        "WIKI_DEFAULT_LOCALE": "en",
        "WIKI_DEFAULT_EDITOR": "markdown",
        "WIKI_MUTATIONS_ENABLED": "true",
        "WIKI_MUTATION_CONFIRM_TOKEN": "CONFIRM_UPDATE",
        "WIKI_MUTATION_DRY_RUN": "false",
        "WIKI_ALLOWED_MUTATION_PATH_PREFIXES": "",
        "WIKI_HTTP_TIMEOUT_MS": "15000",
        "WIKI_HTTP_MAX_RETRIES": "2"
      }
    }
  }
}

通过本地路径注册MCP(无需npm Publish)

您可以直接从本地项目路径注册此MCP服务器,而无需从npm发布/安装。

  1. 在此存储库中构建
npm install
npm run build
  1. 在中注册本地绝对路径 ~/.mcp.json
{
  "mcpServers": {
    "requarks-wiki-local": {
      "command": "node",
      "args": ["/absolute/path/to/requarks-wiki-mcp/dist/index.js"],
      "env": {
        "WIKI_BASE_URL": "https://wiki.your-domain.dev",
        "WIKI_API_TOKEN": "your_wikijs_api_key_jwt",
        "WIKI_GRAPHQL_PATH": "/graphql",
        "WIKI_DEFAULT_LOCALE": "en",
        "WIKI_DEFAULT_EDITOR": "markdown",
        "WIKI_MUTATIONS_ENABLED": "true",
        "WIKI_MUTATION_CONFIRM_TOKEN": "",
        "WIKI_MUTATION_DRY_RUN": "false",
        "WIKI_ALLOWED_MUTATION_PATH_PREFIXES": "",
        "WIKI_HTTP_TIMEOUT_MS": "15000",
        "WIKI_HTTP_MAX_RETRIES": "2"
      }
    }
  }
}

笔记:

  • 始终使用绝对路径。
  • 重新运行 npm run build 代码更改后 dist/index.js 保持最新状态。

跑

发展:

npm run dev

构建+运行:

npm run build
npm start

MCP工具

阅读工具(19)

页:

工具 说明
wikijs_search_pages 跨wiki页面的全文搜索。
wikijs_list_pages 列出具有可选区域设置筛选器和限制的页面。
wikijs_get_page_by_path 按路径+区域设置获取整页内容。
wikijs_get_page_by_id 通过数字ID获取整页内容
wikijs_get_page_tree 浏览网站层次结构(文件夹、页面或两者)。
wikijs_get_page_history 查看页面的编辑历史记录。
wikijs_get_page_version 获取特定版本的完整内容。
wikijs_get_page_links 获取页面链接关系(知识图)。

标签:

工具 说明
wikijs_list_tags 列出内容分类发现的所有标签。
wikijs_search_tags 搜索与查询字符串匹配的标签

评论:

工具 说明
wikijs_list_comments 按路径和区域设置列出页面的所有注释。
wikijs_get_comment 按ID获取单个评论

系统和导航:

工具 说明
wikijs_get_system_info Wiki.js版本、数据库类型和使用统计信息。
wikijs_get_navigation 导航树结构。
wikijs_get_site_config 站点配置(非敏感字段)。

资产:

工具 说明
wikijs_list_assets 列出带有可选文件夹和类型过滤器的资产。
wikijs_list_asset_folders 列出资产文件夹。

用户:

工具 说明
wikijs_get_current_user 获取当前已通过身份验证的API用户的配置文件。
wikijs_search_users 按姓名或电子邮件搜索用户。

写入工具(10,禁用,除非 WIKI_MUTATIONS_ENABLED=true)

页面突变:

工具 说明
wikijs_create_page 创建一个包含内容、标签和元数据的新页面。
wikijs_update_page 按ID更新现有页面
wikijs_delete_page 按ID删除页面。可能需要 manage:pages 或 delete:pages.
wikijs_move_page 将页面移动/重命名到新路径或区域设置。
wikijs_restore_page 将页面还原到以前的版本。

评论突变:

工具 说明
wikijs_create_comment 在页面上创建评论。
wikijs_update_comment 按ID更新现有评论
wikijs_delete_comment 按ID删除评论

标签突变:

工具 说明
wikijs_update_tag 更新标签的slug和标题。
wikijs_delete_tag 从所有页面中删除标记。

突变安全性

  • 当 WIKI_MUTATION_CONFIRM_TOKEN 已设置,变异工具需要匹配 confirm 争论。
  • 当 WIKI_MUTATION_DRY_RUN=true,编写工具返回预览,不要修改Wiki.js。
  • 如果 WIKI_ALLOWED_MUTATION_PATH_PREFIXES 设置后,页面和注释创建突变仅限于这些路径前缀。
  • 所有突变尝试都会向stderr写入结构化审计行。

MCP资源

资源URI 描述
wikijs://markdown-guide Wiki.js markdown语法指南(CommonMark/GFM+Wiki.js特定扩展),用于页面创作和更新。
wikijs://mermaid-guide Wiki.js的Mermaid 8.8.2图表语法指南(9种支持的图表类型,不支持的功能警告,版本限制)。
wikijs://api-permissions-guide Wiki.js API权限模型、错误代码和API密钥配置指南,用于自我诊断权限错误。

权限说明(Wiki.js)

对于API密钥来说,Wiki.js的权限行为可能令人惊讶。特别地:

  • 某些操作可能需要 manage:pages/delete:pages 页面规则级别的规则。
  • 阅读 content 可能需要 read:source 这取决于模式/字段级别的检查。
  • 评论操作需要 read:comments, write:comments,或 manage:comments.
  • 系统信息和导航需要管理员级别的API密钥权限。

常见错误代码:

代码 含义
6013 PageViewForbidden --检查组权限+页面规则 read:pages/read:source
6003 页面不存在
8002 CommentPostForbidden
8003 CommentNotFound
8004 CommentViewForbidden
8005 CommentManageForbidden

有关更多详细信息,请阅读 wikijs://api-permissions-guide 资源。

建议的最低API密钥权限

对于读取量大的KB使用:

  • read:pages, read:source
  • read:comments (用于评论浏览)
  • 允许对预期路径/区域设置进行这些权限的页面规则

对于写入工作流:

  • write:pages (创建和更新)
  • manage:pages 或 delete:pages (用于删除/移动操作)
  • write:comments, manage:comments (用于评论突变)
  • manage:system (用于标签管理)

安全指导

  • 仅保留API令牌服务器端。
  • 从只读权限开始。
  • 保持 WIKI_MUTATIONS_ENABLED=false 除非需要更新。
  • 可选硬化:设置强随机 WIKI_MUTATION_CONFIRM_TOKEN 并通过匹配 confirm 用于写电话。
  • 保持 WIKI_MUTATION_DRY_RUN=true 直到你准备好进行真正的写作。
  • 使用 WIKI_ALLOWED_MUTATION_PATH_PREFIXES 以限制写入范围。
  • wikijs_get_system_info 默认情况下过滤敏感的基础结构字段(dbHost、configFile等)。
  • scriptJs/scriptCss 页面创建/更新中的字段长度有限(10000个字符),并包含浏览器执行警告。