一个注重隐私的网络、社交媒体和档案搜索服务器,通过模型控制协议(MCP)提供工具,以受控方式访问外部搜索能力。
# 克隆仓库(如果适用)
git clone https://github.com/undici77/MCPWebSearch.git
cd MCPWebSearch
# 运行启动脚本(如有不同,请调整名称)
./run.sh -d /path/to/working/directory
1️⃣ 创建并激活一个Python虚拟环境(.venv)。
2️⃣ 安装requirements.txt中所需的所有依赖项。
3️⃣ 启动MCP搜索服务器(main.py),该服务器监听stdin/stdout上的JSON-RPC消息。
📌 确保启动脚本可执行:
chmod +x run.sh
| 选项 | 描述 |
|---|---|
-d, --directory | 工作目录的路径(默认:当前进程目录)。 |
服务器本身不需要额外的CLI标志;所有配置都是通过JSON-RPC完成的。
在您的mcp.json中添加一个条目,以便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),并在启动LM Studio之前运行一次./run.sh以安装虚拟环境。
所有通信遵循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": "<tool_name>",
"arguments": { … }
}
}
注意:工具标识符键是**name**,而不是tool。
使用多个注重隐私的引擎并行搜索网络。
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
query | 字符串 | ✅ | 搜索查询(最多500个字符)。 |
engine | 字符串 | ❌ (默认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": "隐私聚焦搜索引擎",
"engine": "duckduckgo",
"max_results": 15
}
}
}
服务器返回一个格式化的文本块,其中包含每个选定引擎的标题、URL和摘要。
在主要社交媒体平台上搜索公共内容。
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
query | 字符串 | ✅ | 搜索查询(最多500个字符)。 |
platform | 字符串 | ❌ (默认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伦理研究",
"platform": "reddit"
}
}
}
响应包含可以直接在浏览器中打开的直接URL。
跨多个网络档案服务查找URL的存档版本。
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
url | 字符串 | ✅ | 完整的URL(必须包括http://或https://)。 |
service | 字符串 | ❌ (默认all) | 存档服务(wayback,archive_today,google_cache,bing_cache,yandex_cache,cachedview,ghostarchive或all)。 |
check_availability | 布尔值 | ❌ (默认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,并且如果请求的话,还包括快照数量和时间戳。
列出所有可用的注重隐私的搜索引擎。
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| (无参数) | — | — | — |
示例
{
"jsonrpc": "2.0",
"id": 13,
"method": "tools/call",
"params": {
"name": "list_engines",
"arguments": {}
}
}
服务器返回每个引擎的markdown格式概述及其使用说明。
列出所有支持的网络档案服务。
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| (无参数) | — | — | — |
示例
{
"jsonrpc": "2.0",
"id": 14,
"method": "tools/call",
"params": {
"name": "list_archives_services",
"arguments": {}
}
}
响应包括每个服务的描述、其ID和关键特征。
清除内部搜索结果缓存。
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| (无参数) | — | — | — |
示例
{
"jsonrpc": "2.0",
"id": 15,
"method": "tools/call",
"params": {
"name": "clear_cache",
"arguments": {}
}
}
服务器回复确认消息。
MAX_QUERY_LENGTH(500)。http://或https://方案。<script>注入、javascript: URI和事件处理程序属性。inputSchema验证必填字段。MAX_CONCURRENT_SEARCHES)。© 2025 Undici77 – 保留所有权利。