Markdown链接检查工具

MCP Server提供了一系列用于检查Markdown文件中HTTP/HTTPS链接的工具,支持单文件、多文件、目录及整个项目的链接检查。

  • by danfmaia
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 danfmaia/mcp-server

使用说明

MCP服务器(MCP工具)

该项目包含一个通用的MCP服务器,旨在为AI代理提供工具,使用模型上下文协议(MCP)通过stdin/stdout进行通信。

提供的工具

服务器目前提供以下工具,可通过 call_tool 端点:

check_markdown_link_file

  • 说明: 检查单个指定Markdown文件中的HTTP/HTTPS链接。
  • 论据:
    • file_path (string,必填):Markdown文件的路径(相对于项目根或绝对根)。
  • 示例 arguments:
    {
      "file_path": "docs/usage.md"
    }
    
  • 输出: 一份文本报告,详细说明文件中发现的链接的状态(总数、有效、损坏、错误)。

check_markdown_link_files

  • 说明: 检查提供的Markdown文件列表中的HTTP/HTTPS链接。
  • 论据:
    • file_paths (字符串列表,必填):Markdown文件的路径列表(相对于项目根或绝对)。
  • 示例 arguments:
    {
      "file_paths": [
        "README.md",
        "docs/requirements/link_checker_tool_enhancements_reqs.md"
      ]
    }
    
  • 输出: 一份综合文本报告,总结了所有已处理文件的链接状态。

check_markdown_link_directory

  • 说明: 递归扫描指定目录以查找 *.md 文件并检查其中的HTTP/HTTPS链接。
  • 论据:
    • directory_path (string,必填):要扫描的目录的路径。
  • 示例 arguments:
    {
      "directory_path": "docs/"
    }
    
  • 输出: 一份综合文本报告,总结了目录中所有Markdown文件的链接状态。

check_markdown_links_project

  • 说明: 扫描整个项目 *.md 文件,不包括根目录中列出的文件 .gitignore 并检查其余文件中的HTTP/HTTPS链接。
  • 论据: 没有。
  • 示例 arguments:
    {}
    
  • 输出: 一份综合文本报告,总结了项目中所有已处理Markdown文件的链接状态(尊重 .gitignore).

设置和使用(使用Makefile)

此项目使用 uv 用于环境和依赖关系管理,通过 Makefile.

  1. 导航到项目目录: 确保您位于的根目录中 这 项目(mcp-server).

    cd /path/to/mcp-server
    
  2. 安装依赖项(包括dev/test): 此命令创建本地虚拟环境(.venv)如果它不存在,请使用安装所有必要的软件包 uv.

    make install-dev
    
  3. 运行测试和覆盖范围:

    make test
    

    此命令使用以下命令运行所有单元测试 pytest 并使用以下命令生成代码覆盖率报告 coverage.py.

    • 测试运行配置为 如果总覆盖率降至85%以下,则失败 (参见 Makefile).
    • 截至2025-04-04,覆盖状态为:
      • 总体:85%
      • src/mcp_server/server.py81%(涵盖主要处理人员; main 回路未测试)
      • src/mcp_server/tools/link_checker.py:89%(涵盖核心逻辑;状态检查中的一些边缘情况未经测试)
  4. 棉绒和格式代码: 用途 ruff 检查linting错误,并根据项目标准格式化代码。

    make lint
    
  5. 运行服务器(手动): 服务器监听stdin/stdout。

    make run
    

    (注意:手动交互需要发送正确框架的JSON-RPC消息,包括 initialize 和 initialized 之前 call_tool.)

  6. 清理: 删除虚拟环境和缓存文件。

    make clean
    

光标MCP集成(Linux)

此服务器可以使用以下全局配置作为MCP工具与Cursor集成 ~/.cursor/mcp.json (您可能需要创建此文件/目录):

{
  "mcpServers": {
    "local-link-checker": {
      "name": "Local Link Checker", // Name displayed in Cursor
      "type": "command",
      // Use the absolute path to the python executable within THIS project's venv
      "command": "/absolute/path/to/mcp-server/.venv/bin/python",
      "args": [
        "-m", // Run module
        "mcp_server.server" // The server module to run
      ]
      // Optional: Define the working directory if needed (usually handled by -m)
      // "cwd": "/absolute/path/to/mcp-server"
    }
  }
}

集成的重要注意事项:

  • 绝对路径: 您必须更换 /absolute/path/to/mcp-server 使用系统上此项目目录的正确绝对路径。
  • 虚拟环境: 此配置假定您已运行 make install-dev 首先创建 .venv 并在此项目目录中安装依赖项。
  • 工作目录和文件路径: 当通过时 python -m,服务器的工作目录通常是项目根目录(/absolute/path/to/mcp-server).因此当调用该工具时(例如。, @Local Link Checker),the file_path 参数应该与该项目根相关(例如。, file_path: test_links.md 对于根目录下的文件)或绝对路径。
  • 重新启动光标: 添加或修改后 ~/.cursor/mcp.json,您必须重新启动Cursor才能使更改生效。

以前使用不同方法的集成尝试(如 uv run 或shell包装器)由于Linux上Cursor的进程执行环境问题而失败。直接 python -m 使用项目自己的虚拟环境的方法是配置被证明是有效的。

添加新工具

  1. 在中定义工具的模式 handle_list_tools (src/mcp_server/server.py).
  2. 在新的环境下实现工具的逻辑 elif name == "your-tool-name": 把…的车堵住 handle_call_tool (src/mcp_server/server.py).
    • 在单独的文件中创建辅助函数 src/mcp_server/tools/ 根据需要。
    • 为中的辅助函数添加单元测试 tests/.
  3. 将任何新的依赖项添加到 pyproject.toml.
  4. 更新 install-dev 目标在 Makefile 如果新 仅测试 添加依赖关系(基本依赖关系应由 uv sync 在...之内 install-dev).
  5. 更新此自述文件。

贡献

欢迎投稿!请遵循标准编码实践并确保测试通过(make test)在提交pull请求之前。

许可证

[在此处指定您的许可证]