DocNav 是一个模型上下文协议(MCP)服务器,它使大语言模型(LLM)智能体能够像人类一样理解和导航,从而智能地读取、分析和管理长篇文档。
DocNav 可助力大语言模型智能体处理长篇文档,下面将为你介绍其安装和使用方法。
git clone https://github.com/shenyimings/DocNav-MCP.git
cd DocNav-MCP
uv sync
uv run server.py
{
"mcpServers": {
"docnav": {
"command": "{{PATH_TO_UV}}", // 运行 `which uv` 并将输出放在此处
"args": [
"--directory",
"{{PATH_TO_SRC}}",
"run",
"server.py"
]
}
}
}
load_document:加载文档以进行导航和分析
file_path(文档文件的路径)get_outline:获取文档大纲/目录
doc_id(文档标识符),max_depth(最大标题深度,默认为 3)read_section:读取文档特定部分的内容
doc_id(文档标识符),section_id(例如,'h1_0','h2_1')search_document:在文档中搜索特定内容
doc_id(文档标识符),query(搜索词或短语)navigate_section:获取某个部分的导航上下文
doc_id(文档标识符),section_id(要导航到的部分)list_documents:列出所有当前加载的文档
get_document_stats:获取已加载文档的统计信息
doc_id(文档标识符)remove_document:从导航器中移除文档
doc_id(文档标识符)# 加载文档
result = await tools.load_document("path/to/document.md")
# 获取文档大纲
outline = await tools.get_outline(doc_id)
# 获取特定部分的内容
section = await tools.read_section(doc_id, section_id)
# 在文档中搜索
results = await tools.search_document(doc_id, "search query")
docnav-mcp/
--- server.py # 主 MCP 服务器
--- docnav/
------- __init__.py # 包初始化
------- models.py # 数据模型
------- navigator.py # 文档导航引擎
------- processors/
------- __init__.py # 处理器包
------- base.py # 基础处理器接口
------- markdown.py # Markdown 处理器
--- tests/
------- ... # 测试文件
详细的开发指南请参阅 CLAUDE.md,其中包括:
BaseProcessor 的新处理器类。can_process、process、extract_section、search。DocumentNavigator 中注册处理器。# 运行所有测试
uv run tests/run_tests.py
# 格式化代码
uv run --frozen ruff format .
# 检查代码风格
uv run --frozen ruff check .
# 类型检查
uv run --frozen pyright
DocNav 采用模块化、可扩展的架构:
本项目采用 Apache 2.0 许可证,详情请参阅 LICENSE 文件。
若有问题或疑问: