Back to MCP directory
publicPublicdnsLocal runtime

local-docs-mcp

本地文档MCP服务器,为Claude提供多源Markdown文档的智能搜索与访问功能,支持缓存、文件监控和YAML元数据增强搜索。

article

README

🚀 Local Docs MCP Server

Local Docs MCP Server是一个实现了模型上下文协议(MCP)的服务器,用于本地文档访问。它能让Claude无缝访问来自多个来源的Markdown文档,为用户提供便捷的文档查询体验。

✨ 主要特性

  • 多源文档支持:可从命令、项目文档和项目根目录访问文档。
  • 智能搜索:采用模糊匹配,优先精确匹配和子串匹配。
  • YAML前置元数据支持:可添加可选元数据(描述、标签),增强搜索效果。
  • 持续缓存:对文件列表进行缓存,文件更改时自动失效,速度提升约3000倍。
  • 文件监控:文档文件更改时自动使缓存失效。
  • 安全路径处理:防止目录遍历,验证路径有效性。
  • 源前缀:可明确指定文档来源(例如 commands:file.md)。
  • 大小限制:避免读取超过5MB的文件。

📚 详细文档

文档来源

  1. 共享文档 (~/.claude/commands/**/*.md):用户命令和知识库(可配置)。
  2. 项目文档 ($CWD/docs/**/*.md):特定项目的文档,可配置排除项。
  3. 项目根目录 ($CWD/*.md):根级文档,如README.md(可选启用)。

YAML前置元数据支持

文档文件可选择包含YAML前置元数据,以提高搜索性能:

---
description: Enforce Test-Driven Development approach for Go code with test-first workflow
tags: [testing, development, go]
---

# Your Documentation Content

支持的字段

  • description:用于提高搜索相关性的文本描述。
  • tags:用于分类的标签数组或逗号分隔列表。

搜索行为

  • 描述匹配使搜索得分增加0.5。
  • 精确标签匹配使搜索得分增加0.3。
  • 部分标签匹配使搜索得分增加0.15。
  • read_doc 输出会自动去除前置元数据。
  • list_all_docs 在文件元数据中包含描述和标签。

注意:前置元数据是可选的,纯Markdown文件无需它也能正常工作。

📦 安装指南

下载二进制文件

发布页面下载最新版本。

使用Go安装

go install github.com/umputun/local-docs-mcp/app@latest

使用Homebrew(macOS)

brew tap umputun/apps
brew install umputun/apps/local-docs-mcp

从源代码构建

git clone https://github.com/umputun/local-docs-mcp.git
cd local-docs-mcp
make build
make install

配置Claude

添加到 ~/.claude.json

{
  "mcpServers": {
    "local-docs": {
      "command": "local-docs-mcp"
    }
  }
}

或者使用绝对路径:

{
  "mcpServers": {
    "local-docs": {
      "command": "/path/to/local-docs-mcp"
    }
  }
}

重启Claude Code以加载服务器。

🔧 技术细节

命令行选项

# 自定义文档目录
local-docs-mcp --shared-docs-dir=~/.my-docs --docs-dir=documentation

# 启用根级Markdown扫描
local-docs-mcp --enable-root-docs

# 从项目文档扫描中排除目录
local-docs-mcp --exclude-dir=plans --exclude-dir=drafts

# 通过环境变量进行多个排除
EXCLUDE_DIRS=plans,drafts,archive local-docs-mcp

可用选项:

  • --shared-docs-dir - 共享文档目录(默认:~/.claude/commands
  • --docs-dir - 项目文档目录(默认:docs
  • --enable-root-docs - 扫描根级 *.md 文件(默认:禁用)
  • --exclude-dir - 从项目文档扫描中排除的目录(默认:plans
  • --cache-ttl - 缓存生存时间(默认:1h
  • --max-file-size - 要索引的最大文件大小(默认:5242880 - 5MB)
  • --dbg - 启用调试日志

缓存

文件列表缓存始终启用,以显著加快重复查询速度。缓存的生存时间(TTL)可以配置:

# 使用默认的1小时TTL
local-docs-mcp

# 自定义TTL
local-docs-mcp --cache-ttl=30m

# 通过环境变量设置
CACHE_TTL=2h local-docs-mcp

性能:缓存命中比文件系统扫描快约3000倍(66纳秒 vs 201微秒)。当文档文件更改时,缓存会自动失效,确保数据新鲜。

工作原理

  • 首次查询扫描文件系统并填充缓存。
  • 后续查询直接从内存返回。
  • 文件监控器检测到更改后,会在500毫秒内使缓存失效。
  • TTL提供安全回退机制(默认:1小时)。

💻 使用示例

配置完成后,Claude可以自然地查询文档:

  • "Show me docs for routegroup"
  • "Find documentation about testing"
  • "List all available commands"
  • "What's in the go-architect command?"

可用工具

search_docs

通过模糊匹配按名称搜索文档文件。 输入{"query": "search-term"} 输出:前10个匹配文件及其得分

read_doc

读取特定的文档文件。 输入{"path": "file.md"}{"path": "commands:action/commit.md"} 输出:包含元数据的文件内容

list_all_docs

列出所有来源的可用文档文件。 输出:包含文件大小和来源信息的完整文件列表

🔒 安全保障

  • 防止目录遍历
  • 文件大小限制(5MB)
  • UTF-8验证
  • 不跟随基础目录外的符号链接
  • 拒绝绝对路径

📄 许可证

本项目采用MIT许可证 - 详情请参阅 LICENSE 文件。

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client