关于 MCP Server (mcp-tools)
这是一个通过 stdin/stdout 使用 MCP 的通用服务,为 AI Agent 提供 Markdown 链接检查工具。可检查单个文件、文件列表、目录或整个项目,并生成状态报告。
主要功能
- 01检查单个 Markdown 文件链接
- 02批量检查文件链接
- 03递归扫描目录
- 04扫描项目并遵循 .gitignore
- 05生成链接状态报告
适用场景
- 01检查文档中的失效链接
- 02发布前扫描整个项目文档
MCP 相关
服务通过 stdin/stdout 使用 MCP,向客户端提供 Markdown 链接检查工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP 服务(mcp-tools)
此项目包含一个通用 MCP 服务,旨在通过模型上下文协议(MCP)使用标准输入/标准输出与 AI Agent 通信,并为其提供工具。
提供的工具
服务目前提供以下工具,可通过 call_tool 端点调用:
check_markdown_link_file
- **说明:**检查指定 Markdown 文件中的 HTTP/HTTPS 链接。
- 参数:
file_path(字符串,必填):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(字符串,必填):要扫描的目录路径。
arguments示例:{ "directory_path": "docs/" }- **输出:**汇总文本报告,概述目录中找到的所有 Markdown 文件里的链接状态。
check_markdown_links_project
- **说明:**扫描整个项目中的
*.md文件,排除根目录.gitignore文件中列出的文件,并检查其余文件中的 HTTP/HTTPS 链接。 - **参数:**无。
arguments示例:{}- **输出:**汇总文本报告,概述项目中所有已处理 Markdown 文件的链接状态(遵循
.gitignore)。
设置与使用(使用 Makefile)
此项目使用 uv 管理环境和依赖,并通过 Makefile 编排。
-
进入项目目录: 确保你位于_此_项目(
mcp-server)的根目录。cd /path/to/mcp-server -
安装依赖(包括开发/测试依赖): 如果本地虚拟环境(
.venv)不存在,此命令会创建该环境,并使用uv安装所有必要的软件包。make install-dev -
运行测试并生成覆盖率报告:
make test此命令使用
pytest运行所有单元测试,并使用coverage.py生成代码覆盖率报告。- 测试运行配置为:总覆盖率低于 85% 时失败(参见
Makefile)。 - 截至 2025-04-04,覆盖率状态如下:
- 总体:85%
src/mcp_server/server.py:81%(已覆盖主要处理程序;未测试main循环)src/mcp_server/tools/link_checker.py:89%(已覆盖核心逻辑;未测试状态检查中的部分边界情况)
- 测试运行配置为:总覆盖率低于 85% 时失败(参见
-
检查代码并格式化: 使用
ruff检查代码错误,并按照项目标准格式化代码。make lint -
运行服务(手动): 服务通过标准输入/标准输出进行监听。
make run(注意:手动交互需要发送格式正确的 JSON-RPC 消息;调用
call_tool前,需先发送initialize和initialized。) -
清理: 删除虚拟环境和缓存文件。
make clean
Cursor MCP 集成(Linux)
此服务可通过在 ~/.cursor/mcp.json 中使用以下全局配置,集成为 Cursor 的 MCP 工具(你可能需要创建此文件或目录):
{
"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)时,file_path参数应为相对于此项目根目录的路径(例如,根目录下文件的file_path: test_links.md),或绝对路径。 - 重启 Cursor: 添加或修改
~/.cursor/mcp.json后,必须重启 Cursor 才能使更改生效。
此前使用其他方法(例如 uv run 或 shell 包装脚本)的集成尝试均因 Cursor 在 Linux 上的进程执行环境问题而失败。经验证可行的配置是直接使用项目自身虚拟环境的 python -m 方法。
添加新工具
- 在
handle_list_tools(src/mcp_server/server.py)中定义工具的架构。 - 在
handle_call_tool(src/mcp_server/server.py)中新增elif name == "your-tool-name":代码块,实现工具逻辑。- 根据需要,在
src/mcp_server/tools/下的单独文件中创建辅助函数。 - 在
tests/中为辅助函数添加单元测试。
- 根据需要,在
- 在
pyproject.toml中添加任何新依赖项。 - 如果添加了新的 仅供测试使用 的依赖项,请更新
Makefile中的install-dev目标(基础依赖项应通过install-dev中的uv sync处理)。 - 更新此 README。
贡献
欢迎贡献!请遵循标准编码规范,并在提交拉取请求前确保测试通过(make test)。
许可证
[在此指定你的许可证]
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。