Web工具MCP服务器
一种模型上下文协议(MCP)服务器,使用Playwright和SearXNG提供网页浏览、搜索和内容提取功能。
特性
- 网页搜索:使用SearXNG实例搜索网络
- 页面导航:导航到等待可选元素的URL
- 内容提取:从网页中提取干净的文本内容
- 自动摘要:使用本地LLM总结文本(可选)
- 联合作战:在一次操作中获取和提取页面内容
要实现这一点,需要SearXNG,最简单的方法是使用Docker版本。 此处说明:https://docs.searxng.org/admin/installation-docker.html
安装
- 安装Python依赖项:
pip install fastmcp playwright beautifulsoup4 llama-cpp-python- 安装Playwright浏览器:
playwright install配置
创建一个 .env 包含以下可选变量的文件:
# SearXNG instance URL
SEARXNG_URL=
# Path to local LLM model for summarization (optional)
LLM=/path/to/your/model.ggufDocker部署
该应用程序可以使用Docker Compose进行部署,它使用 uv 用于依赖性管理。
先决条件
- 已安装Docker和Docker Compose
.env文件已配置(请参阅配置部分)
构建并运行
docker-compose up --build服务器将在以下时间可用 http://localhost:9000.
安装量
- 这
.env文件已自动加载 - 如果使用本地LLM模型,请确保
models目录存在于项目根目录中,包含您的模型文件(例如。,Qwen3-4B-Q4_K_M.gguf)
停止容器
docker-compose down运行服务器
作为MCP服务器(stdio)
python main.py作为HTTP服务器
服务器运行在 http://127.0.0.1:9000 默认情况下。
添加到mcp.json
{
"mcpServers": {
"web-tool-server": {
"url": "http://:9000/mcp"
}
}
}可用工具
1. web_search
使用SearXNG进行网络搜索。
参数:
query(str):搜索查询字符串max_results(int,可选):返回的最大结果数(默认值:10)
退货:
{
"results": [
{
"title": "Page Title",
"url": "https://example.com",
"snippet": "Page description..."
}
]
}2. navigate
导航到一个URL,并可选择等待元素出现。
参数:
url(str):要导航到的URLwait_for_element(str,可选):要等待的CSS选择器wait_time(int,可选):最长等待时间(秒)(默认值:10)
退货:
{
"status": "success",
"message": "Navigated to https://example.com"
}3. extract_content
从网页中提取干净的文本内容。
参数:
url(str,可选):从中提取内容的URL(如果没有提供,则使用当前页面)wait_for_element(str,可选):提取前要等待的CSS选择器
退货:
{
"content": "Extracted page text content..."
}4. get_page_content
导航到URL并在一次操作中提取其内容。
参数:
url(str):从中获取和提取内容的URL
退货:
{
"url": "https://example.com",
"content": "Extracted page text content..."
}5. summarize
使用本地LLM汇总文本(需要LLM配置)。
参数:
text(str):要总结的文本max_tokens(int,可选):摘要中的最大令牌数(默认值:200)
退货:
{
"summary": "Concise summary of the text..."
}6. close_browser
关闭浏览器实例并清理资源。
退货:
{
"status": "success",
"message": "Browser closed successfully"
}错误:
SearXNG搜索失败
- 验证您的SearXNG实例是否正在运行且可访问
- 检查SEARXNG_URL环境变量
- 确保实例配置为返回JSON结果
摘要失败
- 确保LLM环境变量指向有效的模型文件
- 确保您的系统正确安装了llama cpp python
- 检查模型文件权限和路径
许可证
麻省理工学院
