Skip to main content
Glama

Markdown TOC MCP Server

README.md6.67 kB
# Markdown TOC MCP Server 一个专门用于 Markdown 文档目录分析和处理的 Model Context Protocol (MCP) 服务器,为 TRAE IDE 提供强大的 Markdown 文档处理能力。 可以先阅读 [**从零构建 MCP 服务:为 TRAE IDE 添加智能 Markdown TOC 处理能力**](./docs/blog-mcp-integration.md) 来了解背后的故事! ## 1. 功能说明 | **功能模块** | **主要特性** | **详细说明** | | ---------------- | ---------------------- | ----------------------------- | | **提取文档目录** | 自动识别 Markdown 标题 | 智能解析文档中的各级标题结构 | | | 生成层级目录结构 | 构建完整的目录层次关系 | | | 包含行号信息 | 提供精确的标题位置信息 | | **检查编号问题** | 检测重复编号 | 识别文档中重复的章节编号 | | | 发现不连续编号 | 发现跳跃或缺失的编号序列 | | | 分析格式问题 | 检查编号格式的一致性 | | **生成目录内容** | 创建格式化 TOC | 生成美观的目录内容 | | | 支持多种输出格式 | 提供 Markdown、HTML、文本格式 | | | 可自定义深度 | 灵活控制目录显示层级 | MCP 工具唤醒方法: ```text 请使用 MCP 工具提取文档的目录结构。 ``` 或者直接: ```text 请提取文档的目录结构 ``` ## 2. 项目结构 ```text markdown-mcp/ ├── README.md # 项目说明文档 ├── LICENSE # 许可证文件 ├── requirements.txt # Python 依赖包 ├── setup.py # 安装配置文件 ├── run_tests.py # 测试运行脚本 ├── start_mcp_for_trae.sh # TRAE IDE 启动脚本 ├── stop_mcp_for_trae.sh # TRAE IDE 停止脚本 ├── config/ # 配置文件目录 │ ├── config.yaml # 主配置文件 │ └── trae_mcp_config.json # TRAE IDE 配置 ├── src/ # 源代码目录 │ ├── __init__.py │ ├── markdown_toc/ # 核心模块 │ │ ├── __init__.py │ │ └── extractor.py # TOC 提取器 │ └── server/ # 服务器模块 │ ├── __init__.py │ └── mcp_server.py # MCP 服务器主程序 ├── tests/ # 测试文件目录 │ ├── __init__.py │ ├── fixtures/ # 测试数据 │ ├── test_*.py # 各种测试文件 │ └── test_config.py # 测试配置 └── docs/ # 文档目录 ├── setup.md # 安装说明 ├── usage.md # 使用指南 ├── testing.md # 测试说明 └── reports/ # 测试报告 ``` --- ## 3. TRAE MCP 配置 请参考 [安装说明](docs/setup.md) 进行安装和配置。 --- ## 4. 测试说明 请参考 [测试说明](docs/testing.md) 进行测试。 --- ## 5. 功能详细说明 ### 5.1 extract_markdown_toc 从 Markdown 文档中提取目录结构。 **参数:** - `file_path` (string, 必需): Markdown 文件路径 - `output_format` (string, 可选): 输出格式,可选值:json, text, markdown,默认为 json - `max_depth` (integer, 可选): 最大提取深度,默认为 6 - `min_depth` (integer, 可选): 最小提取深度,默认为 1 - `include_line_numbers` (boolean, 可选): 是否包含行号,默认为 false **示例:** ```json { "name": "extract_markdown_toc", "arguments": { "file_path": "/path/to/document.md", "output_format": "json", "max_depth": 4, "include_line_numbers": true } } ``` ### 5.2 analyze_numbering_issues 分析 Markdown 文档中的编号问题。 **功能说明:** 该工具会智能识别文档中的有编号标题和无编号标题,只对有编号的标题进行编号问题分析。无编号标题(如以 emoji、中文、纯文本开头的标题)不会参与编号连续性检查,避免误报。 **参数:** - `file_path` (string, 必需): Markdown 文件路径 - `check_types` (array, 可选): 检查类型,可选值:duplicates, discontinuous,默认为 ["duplicates", "discontinuous"] **行为逻辑:** - **duplicates**: 检查是否存在重复的编号(如两个 "1.1" 标题) - **discontinuous**: 检查编号是否连续(如 "1.1" 后直接跟 "1.3",缺少 "1.2") - 只分析实际有编号的标题,忽略无编号标题 - 支持多种编号格式:数字编号(1.、1.1)、中文编号(一、二)等 **示例:** ```json { "name": "analyze_numbering_issues", "arguments": { "file_path": "/path/to/document.md", "check_types": ["duplicates", "discontinuous"] } } ``` ### 5.3 generate_toc 生成格式化的 TOC 内容供插入文档。 **参数:** - `file_path` (string, 必需): Markdown 文件路径 - `format_type` (string, 可选): 输出格式,可选值:markdown, html, text,默认为 markdown - `include_links` (boolean, 可选): 是否包含链接(仅对 markdown 格式有效),默认为 true - `max_level` (integer, 可选): 最大包含的标题级别,默认为 6 **示例:** ```json { "name": "generate_toc", "arguments": { "file_path": "/path/to/document.md", "format_type": "markdown", "include_links": true, "max_level": 4 } } ``` --- ## 6. 开发和调试 ### 6.1 开发环境设置 ```bash # 安装开发依赖 pip install -r requirements.txt # 代码格式化 black src/ # 代码检查 flake8 src/ mypy src/ ``` ### 6.2 调试模式 在 `config/config.yaml` 中启用调试模式: ```yaml development: debug: true logging: level: "DEBUG" ``` ### 6.3 日志分析 查看详细日志: ```bash # 查看日志文件 tail -f logs/mcp_server.log # 或在启动时查看实时日志 ./start_mcp_for_trae.sh ``` --- ## 7. 常见问题 **问题:服务器启动失败**: ```bash # 检查 Python 版本 python3 --version # 检查依赖安装 pip list | grep mcp # 查看错误日志 tail -f logs/mcp_server.log ``` **问题:文件权限错误**: ```bash # 检查文件权限 ls -la start_mcp_for_trae.sh chmod +x start_mcp_for_trae.sh ``` **问题:编码错误**: 服务器支持多种编码格式(UTF-8、GBK 等),如果遇到编码问题,请确保文件编码正确。 ---

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ForceInjection/markdown-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server