MCP

面向 AI Agent 的 MCP 联网搜索

在任何 MCP 客户端加入一个有界的联网搜索工具:search_web 查询精选中英索引,返回带来源归属和 fetched_at 的结果。非实时,非全网。

一个工具,同一套 Search 契约

annolux-mcp 只注册一个工具:search_web。它的输入与商业 REST 端点一致,每条结果都带标题、URL、可用时的摘要,以及明确的 fetched_at 抓取时间。服务器不暴露抓取、正文提取、验证或任何隐藏增强,Agent 通过 MCP 得到的操作与本页文档完全一致。

背后是精选的中英双语索引,按计划刷新。它不是实时数据流,也不声称全网覆盖;空结果是正常返回,不是错误。

安装服务器二进制

服务器是一个静态 Go 二进制。装有 Go 工具链时,一条命令即可构建并安装到 $(go env GOPATH)/bin —— 请确认该目录在 PATH 里,或在客户端配置中使用绝对路径。

go install github.com/eason4kim-rocket/annolux/cmd/annolux-mcp@latest

配置任意 MCP 客户端

所有 MCP 客户端接受同一形状的配置:一个命令加两个环境变量。密钥只存在于服务器进程环境;annolux-mcp 仅将其放入 Authorization 请求头,不会写进工具结果或模型可见参数。

{
  "mcpServers": {
    "annolux": {
      "command": "annolux-mcp",
      "env": {
        "ANNOLUX_API_URL": "https://api.annolux.com",
        "ANNOLUX_API_KEY": "ann_live_REPLACE_ME"
      }
    }
  }
}

search_web 字段

  • query —— 必填,最长 500 字符。
  • domains —— 可选主机名白名单,最多 20 项。
  • deduplicate —— 默认 true。
  • limit —— 返回 1–10 条,默认 10。
  • timeout —— 1–30 秒,默认 30。
  • ranking —— default 或 provider。
  • 不支持 freshness,发送会被明确拒绝。

响应长什么样

示例响应。请把 fetched_at 与 Agent 产出的引用放在一起,让下游读者知道页面是何时抓取的。

{
  "success": true,
  "query": "rust ownership",
  "results": [
    {
      "rank": 1,
      "title": "What is Ownership? - The Rust Programming Language",
      "url": "https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html",
      "snippet": "Ownership is a set of rules that govern how a Rust program manages memory…",
      "fetched_at": "2026-08-15T09:12:44Z"
    }
  ],
  "deduplicated": 0,
  "partial": false,
  "timing": { "total_ms": 212, "provider_ms": 180, "enrichment_ms": 32 }
}

点数

只有成功的 2xx Search 提交 1 点。参数错误、认证失败、余额不足、限流、服务端错误和超时都不扣点。请读取响应头 X-Annolux-Credits-Used 与 X-Annolux-Credits-Remaining,而不是本地估算。新账户有 1,000 免费点数。

各客户端配置指南

以下每篇指南都是该客户端的可复制配置,包括配置文件位置和该客户端特有的坑。