文档检索服务

MoonShine Local MCP是一个本地文档检索服务,提供文档搜索、索引构建和AI代理优化检索功能,适用于多语言文档管理和快速信息获取。

  • by DissNik
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 DissNik/moonshine-mcp

使用说明

MoonShine本地MCP

本地MCP服务器 私酿酒 文档。

该项目保留了MoonShine文档的本地副本,构建了一个可搜索的索引,并公开了针对AI代理检索工作流程优化的MCP工具。

默认情况下,服务器:

  • 存储两者 en 和 ru 本地文档,
  • 用途 en 作为主动语言,
  • 允许您通过环境变量切换活动语言。

特性

  • answer_docs_question 对于紧凑的面向问题的上下文包,
  • search_docs 对于搜索和导航,
  • read_search_hit 为了从搜索结果中读取最佳匹配部分,
  • read_doc 对于低级页面/锚点读取,
  • list_docs 对于部分浏览,
  • sync_docs 用于更新本地文档缓存。

存储布局

  • data/upstream/en 和 data/upstream/ru 存储本地Markdown副本。
  • data/upstream/navigation.md 存储共享导航文件。
  • data/cache/*.json 存储每种语言的索引和同步元数据。
  • src/server.js 通过stdio运行MCP服务器。
  • src/cli.js sync 更新本地文档并重建索引。

默认情况下,不会复制屏幕截图以保持本地缓存较小。使用 --include-assets 如果你想 resources/screenshots.

安装

npm install
npm run sync

同步文档

来自GitHub官方仓库:

npm run sync

从已克隆的本地存储库中:

node src/cli.js sync --source /path/to/moonshine-doc-clone

仅同步一种语言:

node src/cli.js sync --language en

显式同步多种语言:

node src/cli.js sync --languages en,ru

包括截图:

node src/cli.js sync --include-assets

运行MCP

npm start

AI代理的推荐工具订单

代理的最佳默认工作流是:

  1. answer_docs_question
  2. read_search_hit
  3. read_doc

answer_docs_question 作为主要入口点

使用 answer_docs_question 当代理需要一个紧凑的文档上下文包来处理真实问题时,例如:

  • “如何配置自定义图标”,
  • “表单生成器如何工作”,
  • “授权如何在资源中工作”。

此工具:

  • 搜索文档,
  • 对相关文件进行排名,
  • 通过以下方式选择最佳匹配部分 matchedAnchor 在可能的情况下,
  • 返回紧凑的摘录而不是完整的页面。

read_search_hit 用于精确的后续阅读

使用 read_search_hit 之后 answer_docs_question 或 search_docs 当代理想要直接读取最佳匹配部分时。

它接受:

  • slug,
  • matchedAnchor,
  • 可选的 format, headingsOnly, maxLength.

这避免了在搜索结果和部分阅读之间手动粘合逻辑。

read_doc 用于低级控制

使用 read_doc 当代理需要精确的手动控制时:

  • 阅读整页,
  • 阅读特定 anchor,
  • 返回 plain_text,
  • 仅返回标题,
  • 控制 maxLength.

read_doc 是低级原语,不是大多数问题的最佳第一步。

何时使用 search_docs

使用 search_docs 当代理需要候选发现而不是现成的上下文包时。

它适用于:

  • 导航,
  • 探索性搜索,
  • 在阅读一个文档之前,先比较几个可能的文档。

Codex MCP配置

例子:

[mcp_servers.moonshine_doc]
command = "node"
args = ["/path/to/moonshine-mcp/src/server.js"]

[mcp_servers.moonshine_doc.env]
MOONSHINE_DOC_LANG = "en"
MOONSHINE_DOC_LANGUAGES = "en,ru"

现成的复制示例存在于 config.example.toml.

打印配置块:

npm run install:codex

写下来 ~/.codex/config.toml 自动:

npm run install:codex -- --apply

环境变量

  • MOONSHINE_DOC_LANG -活动语言,默认 en.
  • MOONSHINE_DOC_LANGUAGES -本地存储的语言,默认 en,ru.
  • MOONSHINE_DOC_BRANCH -上游分支,默认 4.x.
  • MOONSHINE_DOC_REPO -上游存储库URL。
  • MOONSHINE_DOC_DATA_DIR -替代数据目录。
  • MOONSHINE_DOC_INCLUDE_ASSETS=1 -复制 resources/screenshots.

为什么这个设计

  • 本地缓存无需网络访问即可提供快速、可预测的答案。
  • git sparse-checkout 只提取你想要的语言。
  • 同步是显式的,与检索是分开的。
  • 高级工具,如 answer_docs_question 和 read_search_hit 减少AI代理的检索步骤。