使用说明
Serper.dev MCP 服务器(search-mcp)
基于Serper.dev的TypeScript MCP服务器,提供两个工具:
serper_search通过Serper.dev进行谷歌搜索serper_fetch获取结果URL的原始内容
该服务器是使用 @ideadesignmedia/open-ai.js (MCP 服务器/客户端辅助程序),使用 @ideadesignmedia/request 对于HTTP,通过(某种方式)加载配置 @ideadesignmedia/config.js。
要求
- Node.js 18+(建议使用20+)
- Yarn(或 npm)
- Serper.dev API密钥
安装
yarn install
配置
@ideadesignmedia/config.js 负载(或负荷) config.json 在项目根目录下,并将条目映射到 process.env。
- 复制样本并填写值:
- PowerShell:
Copy-Item config-sample.json config.json - Bash:
cp config-sample.json config.json
- 在(相应位置)设置所需值
config.json:
SERPER_DEV_API_KEY(必填)SERPER_DEV_BASE_URL(默认https://google.serper.dev)SERPER_DEV_TIMEOUT_MS(默认10000)MCP_TRANSPORTS一个或多个stdio,http,websocket(默认stdio)PORTHTTP/WS 端口(未设置时默认为 3000)
跑
- 开发(TypeScript):
yarn dev - 构建:
yarn build - 开始(已编译):
yarn start
交通
- HTTP: 设置
MCP_TRANSPORTS包括http(并且可选地websocket); 服务器监听于http://localhost:PORT/mcp。 - STDIO: 使用默认值
MCP_TRANSPORTS=stdio当通过MCP兼容客户端通过标准输入输出(stdio)启动时。注:在嵌入到标准输入输出客户端中时,避免向标准输出(stdout)打印内容。
快速入门
-
PowerShell
Copy-Item config-sample.json config.json$env:SERPER_DEV_API_KEY = 'your-serper-key'$env:MCP_TRANSPORTS = 'http'(或者stdio)$env:PORT = '4510'yarn dev(或者yarn build && yarn start)
-
Bash
cp config-sample.json config.jsonexport SERPER_DEV_API_KEY='your-serper-key'export MCP_TRANSPORTS=http(或stdio)export PORT=4510yarn dev(或者yarn build && yarn start)
当与……一起运行时 MCP_TRANSPORTS=http,您可以将MCP客户端连接到 http://localhost:$PORT/mcp。
NPX
- 将这个包发布到npm(名称为
@ideadesignmedia/search-mcp),你可以运行:- HTTP:(超文本传输协议)
npx @ideadesignmedia/search-mcp --http --port 4510 --key $SERPER_DEV_API_KEY - STDIO(进程标准输入输出):
npx @ideadesignmedia/search-mcp --stdio --key $SERPER_DEV_API_KEY - STDIO(基于文件):
npx @ideadesignmedia/search-mcp --stdio --stdio-files(创建./mcp-stdio.in/.out) - 可选日志记录:添加
--log-file ./server.log和/或--verbose(stderr) 通常表示标准错误输出(Standard Error),在中文中可以翻译为“(标准错误输出)”或简化为“(错误)”。不过,在具体语境中,可能需要根据上下文来决定最合适的翻译。如果直接保留原样,也可以理解为是在指示某种错误或异常信息的输出。
- HTTP:(超文本传输协议)
旗帜
--key集合(或套装)SERPER_DEV_API_KEY--base(根据上下文,"sets" 可以翻译为多种意思,以下是其中一些可能的翻译):SERPER_DEV_BASE_URL(默认https://google.serper.dev)--timeout(一组)设定SERPER_DEV_TIMEOUT_MS--port(根据上下文,"sets" 可以翻译为多种意思,以下是其中一些可能的翻译):集合、套装、设定、安装、设置、系列、种群、群组、配置、组合、系列作品、批次、阵容、队伍、队伍组合、阵容组合、套装组合、配置组合等PORT--http/--websocket/--stdio选择交通工具(或--transports=http,websocket)
STDIO注意事项:
- 默认情况下,日志记录输出到标准错误;添加
--verbose看到一行启动信息(对标准输入输出安全)。 - 基于文件的STDIO在JSON-RPC中使用两个文件:
*.in(客户端→服务器)和*.out(服务器→客户端)。通过(某种方式)传递自定义路径--stdio-in和--stdio-out。 - 避免向标准输出(stdout)打印;使用标准错误输出(stderr)或
--verbose为了获得一个最简状态行。 - 要强制跳过 config.json:设置
MCP_NO_CONFIG=1。 - 将日志写入文件:
--log-file ./server.log(所有运输方式均安全)
发布
- 确保
dist已被构建并包含(已由files+prepublishOnly)。 npm publish --access public(限定公开包)
工具
serper_search- 参数:
{ query: string; limit?: number; language?: string; country?: string; autocorrect?: boolean } - 返回Serper的有机结果及相关部分(JSON格式)
- 参数:
serper_fetch- 参数:
{ url: string } - 回报;收益
{ url, content }哪里content是原始文本/HTML
- 参数:
测试
- 类型检查:
yarn typecheck - 实时集成测试(HTTP传输):
- 确保
SERPER_DEV_API_KEY设定于config.json或者环境 - 运行:
yarn test - 测试在测试端口上启动服务器,并使用
McpClient打电话serper_search(“创意设计媒体”)和serper_fetch(ideadesignmedia.com),并确保响应内容非空。
- 确保
项目布局
src/server.ts– 启动MCP服务器src/config/– 运行时配置(通过环境变量读取)config.json)src/services/serperClient.ts– 使用Serper客户端@ideadesignmedia/requestsrc/tools/– MCP工具(serper_search,serper_fetch)tests/serper.mcp.integration.test.ts– 实时MCP客户端集成测试
