URL文本提取器MCP服务器
一种现代的模型上下文协议(MCP)服务器,使用FastMCP框架提供URL文本获取、网络抓取和网络搜索功能,供LM Studio和其他MCP兼容客户端使用。
服务器使用现代FastMCP框架构建,该框架提供:
- 基于干净装饰器的工具定义
- 从类型提示自动生成架构
- 简化的服务器设置和配置
- 更好的错误处理和日志记录
在按照MCP最佳实践进行现代化改造的同时,所有安全特性和功能都得到了保留。
特性
此MCP服务器使AI模型能够:
- 获取文本内容 从任何URL提取所有可见文本
- 提取链接 从网页发现相关资源
- 搜索网页 使用Brave搜索并自动从热门结果中获取内容
- 优雅地处理错误 具有适当的超时和异常处理
安全功能
企业级安全实施:
- SSRF保护:阻止对内部网络和元数据端点的请求
- 输入消毒:验证并清除所有URL和查询输入
- 内存保护:内容大小限制可防止内存耗尽
- 速率限制:具有可配置阈值的安全API速率限制
- 错误处理:全面的异常处理,无信息泄露
工具
服务器提供三个主要工具:
fetch_url_text
- 描述:从URL下载所有可见文本
- 参数:
- url (string,必填):从中获取文本的URL
- 退货:清除网页中的文本内容
fetch_page_links
- 描述:从网页中提取所有链接
- 参数:
- url (string,必填):从中获取链接的URL
- 退货:页面上找到的所有href链接列表
brave_search_and_fetch
- 描述:使用Brave Search搜索网络,并自动从顶部结果中获取内容
- 参数:
- query (字符串,必填):搜索查询 - max_results (整数,可选):获取内容的最大结果数(默认值:3,最大值:10)
- 退货:来自每个结果URL的包含全文内容的搜索结果
先决条件
勇敢搜索API密钥
要使用搜索功能,您需要一个免费的Brave search API密钥:
- 访问 勇敢搜索API
- 注册免费帐户(每月2000次查询,每秒最多1次)
- 获取API密钥
- 复制
.env.example向.env并添加您的API密钥:
cp .env.example .env
# Edit .env and set: BRAVE_API_KEY=your_actual_api_key安装
- 克隆此存储库
- 安装依赖项:
uv sync --dev --all-extras- 配置您的环境:
cp .env.example .env
# Edit .env file and set your BRAVE_API_KEY用法
LM工作室
- 打开LM Studio并导航到集成部分
- 点击“安装”,然后点击“编辑mcp.json”
FastMCP实施(推荐)
- 选项A:使用配置助手脚本
./configure_lmstudio_fastmcp.sh这将为您的系统生成具有正确路径的正确配置。
- 选项B:手动配置 -添加服务器配置:
{
"mcpServers": {
"url-text-fetcher-fastmcp": {
"command": "uv",
"args": [
"run",
"url-text-fetcher-fastmcp"
],
"cwd": "/Users/wallison/TechProjects/mcp-server"
}
}
}遗留实施(低级)
对于传统实现:
./configure_lmstudio.sh # Generates config for legacy server注: API密钥将自动从您的 .env 项目目录中的文件。
- 保存配置并重新启动LM Studio
- 服务器将出现在集成部分
独立使用
您也可以直接运行服务器:
# FastMCP implementation (recommended)
uv run url-text-fetcher-fastmcp
# Legacy implementation
uv run url-text-fetcher例子
一旦配置了LM Studio,您可以要求AI:
- “从以下位置获取文本内容https://example.com"
- “从获取所有链接https://news.example.com"
- “搜索‘Python网页抓取’,并向我显示前3个结果中的内容”
- “关于人工智能的最新消息是什么?搜索并获取完整文章”
- “查找有关MCP服务器的信息并获取详细内容”
依赖项
mcp>=1.12.3-模型上下文协议框架requests>=2.31.0-用于web请求和勇敢搜索API的HTTP库beautifulsoup4>=4.12.0-HTML解析和文本提取
配置
服务器可以通过以下方式配置 .env 文件:
# Required: Brave Search API Key
BRAVE_API_KEY=your_api_key_here
# Brave Search API Rate Limit (requests per second)
# Free tier: 1 request per second (default)
# Paid tier: 20 requests per second
# Higher tier: 50 requests per second
# Set this to match your subscription level
BRAVE_RATE_LIMIT_RPS=1
# Optional: Request timeout in seconds (default: 10)
REQUEST_TIMEOUT=10
# Optional: Content length limit in characters (default: 5000)
CONTENT_LENGTH_LIMIT=5000
# Optional: Maximum response size in bytes (default: 10MB)
MAX_RESPONSE_SIZE=10485760Brave搜索订阅级别
服务器会根据您的Brave Search订阅自动调整其速率限制:
- 免费等级:每秒1个请求(
BRAVE_RATE_LIMIT_RPS=1) - 付费等级:每秒20个请求(
BRAVE_RATE_LIMIT_RPS=20) - 更高层次:每秒50个请求(
BRAVE_RATE_LIMIT_RPS=50)
服务器将对所有并发请求强制执行配置的速率限制,以确保您保持在API配额范围内。
看 .env.example 对于模板。
发展
本项目使用:
- Python 3.13+
- 紫外线 用于依赖关系管理
- MCP-SDK 用于协议实施
为发展而设立:
- 克隆存储库
- 跑
uv sync --dev --all-extras - 进行更改
- 使用MCP兼容客户端进行测试
故障排除
LM Studio配置问题
如果你看到类似“生成失败: url-text-fetcher“在LM Studio日志中:
- 运行配置帮助程序:
./configure_lmstudio.sh- 确保您使用的是完整路径:
- 使用完整路径 uv (例如。, /Users/username/.local/bin/uv) - 包括 cwd (当前工作目录)在您的配置中 - 设置 BRAVE_API_KEY 环境变量
- 手动测试服务器:
uv run url-text-fetcher服务器应启动并等待输入(按Ctrl+C退出)。
- 检查您的API密钥:
# Check if your .env file has the API key set
cat .env | grep BRAVE_API_KEY或手动测试:
export BRAVE_API_KEY=your_actual_api_key
echo $BRAVE_API_KEY # Should show your key常见问题
- “BRAVE_API_KEY环境变量是必需的”:确保你的
.env文件包含BRAVE_API_KEY=your_actual_api_key - “网络错误”:检查您的互联网连接和API密钥的有效性
- “内容被截断”:超长网页的正常行为(默认内容限制为5000个字符)
错误处理
该服务器包括强大的错误处理功能,用于:
- 网络超时(默认10秒)
- URL无效
- HTTP错误(4xx、5xx响应)
- 解析失败
- 缺少API密钥
- 一般例外
所有错误都以描述性文本消息的形式返回,以帮助用户了解问题所在。
发展
本项目使用:
- Python 3.13+
- 紫外线 用于依赖关系管理
- MCP-SDK 用于协议实施
为发展而设立:
- 克隆存储库
- 跑
uv sync --dev --all-extras - 进行更改
- 使用MCP兼容客户端进行测试
调试
由于MCP服务器在stdio上运行,调试可能具有挑战性。为了达到最佳调试效果 经验,我们强烈建议使用 MCP检查员.
您可以通过以下方式启动MCP检查器 使用此命令:
npx @modelcontextprotocol/inspector uv --directory /Users/wallison/TechProjects/mcp-server run url-text-fetcher启动后,检查器将显示一个URL,您可以在浏览器中访问该URL以开始调试。
许可证
MIT许可证-有关详细信息,请参阅许可证文件
