📂 MCP Web搜索服务器
一个以隐私为重点的网络、社交媒体和档案搜索服务器,通过模型控制协议(MCP)公开工具,以控制对外部搜索功能的访问。
______________________________________________________________________
目录
- initialize - tools/list - tools/call
- web_search - social_search - archives_search - list_engines - list_archives_services - clear_cache
______________________________________________________________________
🎯 特性
- 并行查找 跨多个以隐私为中心的网络引擎。
- 社交媒体查询 主要平台上的公共内容。
- 档案检索 来自Wayback Machine、archive.today、谷歌缓存等。
- 动态列表 支持的引擎和归档服务。
- 结果缓存 通过LRU驱逐来加快重复查询。
______________________________________________________________________
📦 安装和快速启动
# Clone the repository (if applicable)
git clone https://github.com/undici77/MCPWebSearch.git
cd MCPWebSearch
# Run the startup script (adjust name if different)
./run.sh -d /path/to/working/directory1️⃣ 创建并激活 Python虚拟环境(.venv).\ 2️⃣ 安装 来自的所有必需依赖项 requirements.txt.\ 3️⃣ 发射 MCP搜索服务器(main.py)它在听 用于JSON-RPC消息的stdin/stdout。
📌 确保启动脚本可执行: chmod +x run.sh______________________________________________________________________
⚙️ 命令行选项
| 选项 | 描述 |
|---|---|
-d, --directory | 工作目录的路径(默认:当前进程目录)。 |
*服务器本身不需要额外的CLI标志;所有配置都是通过JSON-RPC执行的。*
______________________________________________________________________
🤝 与LM集成 工作室
将条目添加到您的 mcp.json so LM Studio可以自动启动服务器:
{
"mcpServers": {
"web-search": {
"command": "/absolute/path/to/run.sh",
"args": [
"-d",
"/absolute/path/to/working/directory"
],
"env": { "WORKING_DIR": "." }
}
}
}📌 使脚本可执行(chmod +x /absolute/path/to/run.sh)然后跑./run.sh在启动LM之前安装一次虚拟环境 工作室。
______________________________________________________________________
📡 MCP API概述
所有通信如下 JSON-RPC 2.0 通过stdin/stdout。
initialize
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {}
}*响应*:协议版本(2024-11-05)、服务器功能(工具枚举)和基本服务器信息(name, version).
tools/list
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list",
"params": {}
}*响应*:一组工具定义(名称、描述、输入模式)。
tools/call
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "",
"arguments": { … }
}
}*备注*:工具标识符密钥为 name,不 tool.
______________________________________________________________________
🛠️ 可用工具
网络搜索
并行使用多个以隐私为重点的引擎搜索网络。
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
query | string | ✅ | 搜索查询(最大 500 字符)。 |
engine | string | ❌ (默认值all) | 要使用的发动机(duckduckgo, brave, startpage, ecosia, mojeek, yandex 或 all). |
max_results | 整数 | ❌ (默认值 20) | 每个引擎的最大结果(1‑50)。 |
示例
{
"jsonrpc": "2.0",
"id": 10,
"method": "tools/call",
"params": {
"name": "web_search",
"arguments": {
"query": "privacy focused search engines",
"engine": "duckduckgo",
"max_results": 15
}
}
}*服务器返回一个格式化的文本块,其中包含来自每个选定引擎的标题、URL和代码片段。*
______________________________________________________________________
社交搜索
在主要社交媒体平台上搜索公共内容。
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
query | string | ✅ | 搜索查询(最大 500 字符)。 |
platform | string | ❌ (默认值all) | 搜索平台(twitter, reddit, youtube, github, stackoverflow, medium, pinterest, tiktok, instagram, facebook, linkedin 或 all). |
示例
{
"jsonrpc": "2.0",
"id": 11,
"method": "tools/call",
"params": {
"name": "social_search",
"arguments": {
"query": "AI ethics research",
"platform": "reddit"
}
}
}*响应包含可以在浏览器中打开的直接URL。*
______________________________________________________________________
档案搜索
在多个web存档服务中查找URL的存档版本。
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
url | string | ✅ | 完整的URL(必须包括 http:// 或 https://). |
service | string | ❌ (默认值all) | 存档服务(wayback, archive_today, google_cache, bing_cache, yandex_cache, cachedview, ghostarchive 或 all). |
check_availability | boolean | ❌ (默认值 false) | 当为true时,服务器向Wayback Machine API查询快照统计信息。 |
示例
{
"jsonrpc": "2.0",
"id": 12,
"method": "tools/call",
"params": {
"name": "archives_search",
"arguments": {
"url": "https://example.com",
"service": "wayback",
"check_availability": true
}
}
}*响应列出了存档URL,如果需要,还列出了快照计数和时间戳。*
______________________________________________________________________
list_engines
列出所有可用的以隐私为重点的搜索引擎。
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| *(无参数)* | — | — | — |
示例
{
"jsonrpc": "2.0",
"id": 13,
"method": "tools/call",
"params": {
"name": "list_engines",
"arguments": {}
}
}*服务器返回每个引擎的markdown格式的概述和使用说明。*
______________________________________________________________________
列表_档案_服务
列出所有支持的web存档服务。
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| *(无参数)* | — | — | — |
示例
{
"jsonrpc": "2.0",
"id": 14,
"method": "tools/call",
"params": {
"name": "list_archives_services",
"arguments": {}
}
}*响应包括对每个服务、其ID和关键功能的描述。*
______________________________________________________________________
clear_cache
清除内部搜索结果缓存。
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| *(无参数)* | — | — | — |
示例
{
"jsonrpc": "2.0",
"id": 15,
"method": "tools/call",
"params": {
"name": "clear_cache",
"arguments": {}
}
}*服务器以确认消息进行回复。*
______________________________________________________________________
🔐 安全功能
- 查询净化 –去除控制字符,删除HTML标签并强制执行
MAX_QUERY_LENGTH(500). - 严格的URL验证 –仅接受
http://或https://具有有效域的方案。 - 堵塞的图案 –regex防止 `
注射,javascript:` URI和事件处理程序属性。 - 输入架构强制 –每个工具都通过JSON-RPC验证必填字段
inputSchema. - 速率限制 –异步信号量限制并发外部请求(
MAX_CONCURRENT_SEARCHES).
______________________________________________________________________
*©2025 Undici77-保留所有权利。*
