linkseek 是一个开源自托管的远程 MCP 服务,通过 HTTP 为 Claude Code、Cursor 等 AI 工具提供「联网搜索」和「网页正文获取」能力,配套网页端管理后台。
功能
遵循 Model Context Protocol 标准,兼容所有支持 MCP 的 AI 编程工具。
query maxResults timeRange languageurlquery fetchCount searchMaxResultsurl使用方法
linkseek 遵循标准 MCP Streamable HTTP 协议,配置一次即可永久生效。
https://linkseek.honlnk.com 是作者的个人部署,仅供自用和演示。
如果你希望使用 linkseek,推荐 自行部署(开源免费,5 分钟搞定)。
如需申请本站的测试 Key,可在 GitHub Issues 联系作者。
部署后在管理后台(https://admin.你的域名/)登录,在「Key 管理」新建一个 Key。明文 Key 只显示一次,请立即保存。
在 Claude Desktop / Claude Code / Cursor / Continue 等 AI 工具的配置文件中加入:
{
"mcpServers": {
"linkseek": {
"url": "https://linkseek.honlnk.com",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
GET 这个地址 → 返回文档页(你正在看的这个);AI 工具 POST + Authorization 这个地址 → 走 MCP 服务。靠 HTTP 方法和鉴权头区分,零冲突。
YOUR_API_KEY 换成你在后台创建的 Key(形如 wf_xxxxxxxx)。
配置完成后,在 AI 工具里直接提问需要联网的问题,例如「搜索最新的 Node.js LTS 版本」。也可以用 curl 手动测试:
curl https://linkseek.honlnk.com \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"method": "initialize",
"params": {
"protocolVersion": "2025-03-26",
"capabilities": {},
"clientInfo": {"name": "test", "version": "1.0"}
},
"id": 1
}'
成功的话会返回包含 "result" 的 JSON-RPC 响应。
| 工具 | 必填 | 可选 |
|---|---|---|
web_search | query | maxResults timeRange(day/month/year) language |
web_fetch | url | — |
web_search_and_fetch | query | fetchCount searchMaxResults timeRange language |
web_fetch_render | url | — |
自部署
基于 Docker Compose,一台带 Docker 的 Linux 服务器即可。完整的部署脚本和配置已在 GitHub 仓库。
linkseek.example.com)git clone https://github.com/honlnk/linkseek.git
cd linkseek
在你的域名服务商添加两条 A 记录,指向你的服务器 IP:
| 记录类型 | 主机记录 | 记录值 |
|---|---|---|
| A | linkseek | 你的服务器 IP |
| A | admin.linkseek | 你的服务器 IP |
验证:dig +short linkseek.example.com 应返回服务器 IP。
使用 certbot 为两个域名申请一张证书:
sudo certbot certonly --standalone \
-d linkseek.example.com \
-d admin.linkseek.example.com
证书续期由 certbot 自带的 systemd timer 自动处理。若要无感续期,需配置 --deploy-hook 在续期后重载 Nginx。
从模板复制并填入你的密钥:
cp .env.production.example .env.production
编辑 .env.production,替换所有 __XXX__ 占位符:
# 生成强随机值
openssl rand -hex 32 # MYSQL_ROOT_PASSWORD
openssl rand -hex 16 # MYSQL_PASSWORD(DATABASE_URL 里要一致)
openssl rand -hex 32 # SESSION_SECRET
# 自定义值
ADMIN_PASSWORD=你的强密码
DATABASE_URL 里的密码必须与 MYSQL_PASSWORD 完全一致。
仓库提供了双层网关的示例配置(deploy/nginx/),按需修改域名和证书路径后部署。
如果你已有反向代理(如 Caddy、Nginx Proxy Manager),直接把 linkseek.example.com 和 admin.linkseek.example.com 都反代到 linkseek-app:7300 即可——应用层会自动按 Host 分流。
docker compose -f docker-compose.prod.yml up -d
# 查看启动状态
docker compose -f docker-compose.prod.yml ps
# 查看 app 日志(应看到迁移成功 + 管理员账号就绪)
docker logs linkseek-app
数据库迁移和管理员初始化在容器启动时自动执行(幂等),无需手动跑 seed。
# 文档页应返回 HTML
curl https://linkseek.example.com/
# 健康检查
curl https://linkseek.example.com/health
# {"status":"ok"}
# MCP 握手(先在后台建 Key)
curl https://linkseek.example.com \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}},"id":1}'
浏览器打开 https://admin.linkseek.example.com/,用 ADMIN_PASSWORD 登录后台,新建 Key 后即可接入 AI 工具。
docker-compose.prod.yml 的对应服务下加 HTTP_PROXY / HTTPS_PROXY 环境变量,并在 app 的 .env 里配置 NO_PROXY 把内网域名排除掉。详见仓库 docker-compose.prod.yml 注释。
# 更新到最新版本
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d
# 查看日志
docker compose -f docker-compose.prod.yml logs -f app
# 数据库备份
docker exec linkseek-mysql mysqldump -u linkseek -pPASSWORD linkseek > backup.sql
# 停止(保留数据)
docker compose -f docker-compose.prod.yml down