web-search-mcp
by hbhszy
README.md
# web-search-mcp
基于 DeepSeek 网页版的在线搜索 MCP 服务器。通过 DeepSeek 的搜索增强对话功能,为 MCP 客户端提供实时网络搜索能力。
## 功能
- 提供 `web_search` MCP 工具,支持实时网络搜索
- 支持 DeepSeek 默认模型和专家模型
- 支持思考过程(thinking)输出
- 基于 MCP SDK,stdio 传输,兼容所有 MCP 客户端
- stdio 传输,兼容所有 MCP 客户端
## 快速开始
### 0. 安装依赖
```bash
cd web-search-mcp
npm install
```
### 1. 在 Claude Desktop 中使用
编辑 Claude Desktop 配置文件(`claude_desktop_config.json`),通过 `env` 字段直接传入凭据,无需 `.env` 文件:
```json
{
"mcpServers": {
"web-search": {
"command": "node",
"args": ["path/to/web-search-mcp/src/index.js"],
"env": {
"DEEPSEEK_AUTH_TOKEN": "your_token_here"
}
}
}
}
```
### 2. 在 Claude Code 中使用
在项目的 `.claude/settings.json` 中添加:
```json
{
"mcpServers": {
"web-search": {
"command": "node",
"args": ["path/to/web-search-mcp/src/index.js"],
"env": {
"DEEPSEEK_AUTH_TOKEN": "your_token_here"
}
}
}
}
```
### 3. 使用 .env 文件(可选)
如果不方便在 MCP 配置中写 `env`,也可以用 `.env` 文件:
```bash
cp .env.example .env
# 编辑 .env 填入凭据
```
> 环境变量优先级:系统环境变量 > MCP `env` 配置 > `.env` 文件
## MCP 工具
### `web_search`
使用 DeepSeek 搜索增强对话进行网络搜索,返回基于搜索结果的回答。
**参数:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `query` | string | 是 | 搜索查询内容 |
| `thinking` | boolean | 否 | 是否开启 DeepSeek 思考/推理模式,开启后模型会先推理再回答,推理过程包含在响应中(默认 false) |
| `model` | string | 否 | 模型模式:`default` 或 `expert`(默认使用配置值) |
## 环境变量
| 变量 | 必填 | 默认值 | 说明 |
|------|------|--------|------|
| `DEEPSEEK_AUTH_TOKEN` | 二选一 | - | DeepSeek 登录 token |
| `DEEPSEEK_COOKIE` | 二选一 | - | DeepSeek 浏览器 cookie |
| `DEEPSEEK_MODEL_TYPE` | 否 | `default` | 模型类型:`default` 或 `expert` |
| `DEEPSEEK_THINKING_ENABLED` | 否 | `false` | 是否默认启用思考过程 |
| `WASM_PATH` | 否 | `assets/sha3_wasm_bg...wasm` | PoW 求解器 WASM 文件路径 |
| `LOG_LEVEL` | 否 | `info` | 日志级别:`debug`、`info`、`error` |
## 获取 DeepSeek 凭据
1. 打开 [chat.deepseek.com](https://chat.deepseek.com) 并登录
2. 打开浏览器开发者工具(F12)→ 切换到 **Console(控制台)** 面板
3. 输入以下命令并回车,即可复制 token:
```js
copy(JSON.parse(localStorage.getItem("userToken")).value)
```
4. 粘贴到 `DEEPSEEK_AUTH_TOKEN` 环境变量中即可
> 注意:凭据会过期,过期后需要重新获取。Token 过期的典型表现是请求返回 Cloudflare 验证页面。
## 测试
```bash
# 运行所有测试
npm test
# 运行单个测试文件
node --test tests/mcp-protocol.test.js
node --test tests/config.test.js
```
## 项目结构
```
src/
index.js # 入口,初始化所有组件并启动 MCP 服务器
mcp-server.js # MCP 服务器(基于 @modelcontextprotocol/sdk,注册 web_search 工具)
deepseek-client.js # DeepSeek 网页版 API 客户端(会话管理、PoW、SSE 流式解析)
pow-solver.js # SHA3 PoW WASM 求解器
env.js # .env 文件加载器
config.js # 环境变量配置解析
```
TDQS
A3.5/5.0
Scored across 1 tool
Disambiguation5/5
Only one tool exists, so there is no possibility of confusion between tools.
Naming Consistency4/5
The single tool name 'web_search' is clear and follows a common verb_noun pattern, but with only one tool, consistency cannot be fully assessed.
Tool Count3/5
One tool is minimal for a web search server. It covers the core action but may lack supporting tools for refined queries or result handling.
Completeness3/5
The tool provides basic web search functionality, but there are no tools for advanced filtering, pagination, or retrieving structured results, leaving potential gaps.
Maintenance
ActivityInactive
ResponsivenessNo issues