Web内容MCP服务器
一个强大的 模型上下文协议(MCP)服务器 它提供智能网络搜索和内容提取功能。该服务器使人工智能助手能够搜索谷歌并获取网页内容,自动将所有内容转换为干净、可读的markdown格式。
🚀 特性
- 谷歌搜索集成:使用可定制的结果计数执行谷歌搜索
- 内容提取:自动从网页中提取主要内容
- Markdown转换:将HTML内容转换为干净、可读的markdown
- 智能内容过滤:删除广告、导航和无关元素
- 多种内容策略:使用智能选择器查找主要内容
- 错误处理:具有回退机制的强大错误处理
- 类型安全:使用TypeScript和Zod验证构建
🛠️ 可用工具
1.网络搜索(web_search)
搜索谷歌并返回带有提取内容的格式化结果。
参数:
query(string,必填):要执行的搜索查询numResults(number,可选):要返回的结果数(1-20,默认值:5)
例子:
{
"name": "web_search",
"arguments": {
"query": "TypeScript best practices",
"numResults": 3
}
}2.获取网页(fetch_webpage)
从特定网页URL获取和提取内容。
参数:
url(string,必填):要获取的网页的URL
例子:
{
"name": "fetch_webpage",
"arguments": {
"url": "https://example.com/article"
}
}📋 先决条件
- Node.js 18+
- SerpAPI密钥 (用于谷歌搜索功能)
🔧 安装
- 克隆存储库:
git clone
cd web-content-mcp- 安装依赖项:
npm install- 设置环境变量:
创建一个 .env 根目录中的文件:
SERPAPI_KEY=your_serpapi_key_here从以下位置获取SerpAPI密钥 https://serpapi.com/
🚀 用法
运行服务器
只需使用以下命令运行服务器 npx tsx 直接:
npx tsx --env-file=.env src/index.ts此命令:
- 用途
tsx直接运行TypeScript而无需编译 - 从加载环境变量
.env文件 - 立即启动MCP服务器
作为MCP服务器
此服务器旨在与MCP兼容的客户端一起使用。配置您的MCP客户端以通过stdio传输连接到此服务器。
MCP客户端配置示例:
{
"mcpServers": {
"web-content": {
"command": "npx",
"args": [
"tsx",
"--env-file=/path/to/web-content-mcp/.env",
"/path/to/web-content-mcp/src/index.ts"
],
"env": {
"SERPAPI_KEY": "your_api_key"
}
}
}
}🏗️ 建筑
服务器遵循干净的模块化架构:
src/
├── index.ts # Main server setup and request handling
├── tools.ts # Tool implementations (WebSearch, FetchWebpage)
├── types.ts # TypeScript types and Zod schemas
└── env.ts # Environment variable configuration关键组件
- 服务器:具有stdio传输的主MCP服务器实例
- 工具:具有抽象基类的模块化工具类
- 内容提取:智能HTML到markdown转换
- 类型安全:全面的Zod验证模式
- 错误处理:优雅的错误处理,信息丰富
🔍 内容提取策略
服务器使用智能内容提取方法:
- 内容选择器:尝试多个选择器来查找主要内容:
- main, article, .content, .main-content - .post-content, .entry-content, #content - .container (作为后备方案)
- 内容物清理:删除不需要的元素:
- 脚本、样式、导航 - 页眉、页脚、侧边栏 - 广告和促销内容
- Markdown转换:
- 将HTML转换为干净的markdown - 使用alt文本保留图像 - 保持正确的标题结构 - 限制内容长度以防止溢出
⚙️ 配置
服务器包括几个可配置的选项 tools.ts:
const config = {
serpApiKey: env.SERPAPI_KEY,
timeout: 10000, // Request timeout (ms)
maxContentLength: 5000, // Max content length per page
userAgent: "Mozilla/5.0 (compatible; WebContentMCP/1.0)",
};🔒 环境变量
| 变量 | 描述 | 必填 |
|---|---|---|
SERPAPI_KEY | 您用于谷歌搜索的SerpAPI密钥 | 是 |
📄 输出格式
这两个工具都以markdown格式返回内容:
网络搜索结果
# Web Search Results for: "query"
Found X results:
## 1. Page Title
**URL:** https://example.com
**Snippet:** Brief description...
**Content:**
Main page content in markdown...
---网页内容
# Webpage Content
**URL:** https://example.com
**Content:**
Extracted page content in markdown...🛡️ 错误处理
服务器包括全面的错误处理:
- 网络错误:超时和连接失败
- API错误:SerpAPI速率限制和身份验证
- 内容错误:URL无效和解析失败
- 验证错误:输入参数无效
📞 支持
如果您遇到任何问题或有疑问:
- 检查 问题 页
- 创建包含详细信息的新问题
- 包括错误消息和环境详细信息
______________________________________________________________________
内置于❤️ 使用TypeScript和模型上下文协议
