URL内容MCP服务器
此存储库提供 模型上下文协议(MCP) 从给定URL检索原始HTML内容以向大型语言模型(LLM)提供上下文的服务器。它作为LLM获取训练数据之外的实时网页内容的工具。
概述
URL内容MCP服务器充当LLM和web之间的桥梁。通过标准化的MCP接口,LLM可以请求特定URL的内容并接收该页面的HTML内容。这使得AI助手能够按需访问最新的网络内容。
特性
- 获取网页内容:检索给定URL的网页的HTML内容。
- 实时数据:直接从网页实时访问当前信息。
- 可选缓存:可选地将获取的内容缓存在内存中,以避免在服务器运行时对同一URL进行重复的网络调用。
- STDIO和SSE支持:在中运行服务器
stdio作为子流程集成的模式,或sse(HTTP服务器发送事件)模式,通过HTTP为请求提供服务。
需求
- Python 3.8+ 服务器是用Python编写的,需要3.8或更高版本。
- 互联网接入 –服务器需要网络访问才能从互联网上获取网页。
-
注: 此服务器获取原始HTML内容。确保目标URL可访问并返回文本/HTML内容。一些网站可能会阻止自动请求或要求特定的用户代理标头。
安装
克隆此存储库并安装软件包及其依赖项:
git clone https://github.com/artryazanov/url-content-mcp.git
cd url-content-mcp
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt这将安装requirements.txt中列出的必要Python包。您还可以在可编辑模式下安装该软件包(例如。, pip install -e .)如果你打算修改代码。
用法
安装后,您可以使用提供的控制台脚本运行MCP服务器 url-content-mcp 或者通过执行该模块。服务器支持两种操作模式:STDIO(用于与MCP兼容客户端直接集成)和SSE(用于作为HTTP服务器运行)。
运行服务器(STDIO模式)
默认情况下,服务器在stdio模式下运行。在此模式下,服务器从标准输入读取MCP请求,并将响应写入标准输出。此模式适用于与将服务器作为子流程进行管理并通过MCP协议进行通信的应用程序(如某些AI辅助平台)集成。
示例(在stdio模式下运行):
url-content-mcp在stdio模式下运行时,服务器将启动并等待通过stdin传入的MCP请求(通常来自AI客户端)。每个请求(根据MCP协议格式化)都将被处理,服务器将以JSON格式将结果输出到stdout。
运行服务器(SSE/HTTP模式)
要将服务器作为HTTP服务运行,请使用 --transport sse 选项。在SSE模式下,服务器将启动一个HTTP服务器,并提供一个RESTful端点来获取URL内容。
示例(在端口8080上以SSE模式运行):
url-content-mcp --transport sse --host 0.0.0.0 --port 8080 --enable-cache这将以SSE模式启动服务器,监听所有接口(0.0.0.0)在港口 8080,启用了缓存。在此模式下,您可以向服务器发送HTTP GET请求 /fetch/{url} 用于检索内容的端点。注: {url} 路径中应进行URL编码。
例如,要获取以下内容 http://example.com,对URL和请求进行编码:
http://localhost:8080/fetch/http%3A%2F%2Fexample.com这将返回一个JSON响应,其中包含页面的URL和HTML内容。响应结构如下:
{
"url": "http://example.com",
"content": "..."
}如果在获取过程中发生错误(例如,网络错误或非200 HTTP状态),响应将包含一个带有消息的“错误”字段,而“内容”可能是一个空字符串。
注意:在Docker或其他容器环境中运行时,请使用 --host 0.0.0.0 以绑定到所有接口并确保容器的端口被发布(例如。, -p 8080:8080).
命令行选项
--transport, -t(string):服务器的传输协议。要么stdio(默认)或sse(为SSE运行HTTP服务器)。--host(string):在SSE模式下绑定HTTP服务器的主机地址(默认值:127.0.0.1).--port(int):SSE模式的端口号(默认值:8080).--enable-cache(标志):启用获取内容的内存缓存。如果设置了此标志,服务器将在运行时首次获取后缓存每个URL的内容。
跑 url-content-mcp --help 查看使用信息。
可用的MCP工具
此服务器提供了一个LLM可以使用的MCP工具:
fetch_url
- 描述:获取给定URL处的网页内容,并返回HTML内容。
- 参数:
- url (string,必填)–要获取的网页URL。
- 返回:具有以下结构的JSON对象:
- url:获取的URL。 - content:页面的HTML内容为字符串。(这将包含原始HTML,包括标签。) - error:optional–如果在获取过程中发生错误,则显示错误消息字符串。此字段仅在出现错误时显示(成功时省略)。
这 fetch_url 该工具已在MCP服务器上注册,因此LLM客户端可以调用此函数来检索网页内容。在……里面 stdio 模式下,该函数通过协议中的MCP工具调用调用。在……里面 sse (HTTP)模式下,服务器公开一个GET端点 /fetch/{url} (URL百分比编码)返回相同的数据。
测试
此项目包括一个测试套件,以确保服务器正常工作。
- 安装测试依赖项:
pip install -r requirements-dev.txt(包括pytest)。 - 运行所有测试:
pytest
码头工人
A. Dockerfile 用于将MCP服务器容器化。构建Docker镜像:
docker build -t url-content-mcp .通过Docker运行服务器(暴露端口8080用于SSE模式):
docker run --rm -it -p 8080:8080 url-content-mcp --transport sse --host 0.0.0.0这将启动容器内的MCP服务器。然后,您可以通过HTTP请求与它进行交互 http://localhost:8080 (适用于SSE模式)或在stdio模式下将其连接到MCP兼容客户端。
许可证
本项目采用无许可证许可。请参阅 许可证 文件以获取详细信息。
