mcpField
A
Annolux Search

Annolux Search

本地服务
github.com/eason4kim-rocket搜索与检索08 周前更新

关于 Annolux Search

Annolux Search 是面向 AI Agent 和 RAG 系统的英中双语技术搜索服务,通过 MCP 提供单一只读搜索工具。结果附带抓取时间和来源信息,便于核对引用与时间背景。

主要功能

  1. 01英中双语技术索引
  2. 02结果附带抓取时间戳
  3. 03按域名筛选结果
  4. 04单一只读搜索工具

适用场景

  1. 01检索技术文档与研究资料
  2. 02限定官方域名辅助编码
  3. 03为 RAG 提供带来源的搜索结果

MCP 相关

通过 MCP 暴露只读的 `search_web` 工具,供 MCP 客户端查询英中双语索引。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"eason4kim-rocket-annolux": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ANNOLUX_API_URL",
"-e",
"ANNOLUX_API_KEY",
"ghcr.io/eason4kim-rocket/annolux-mcp:0.1.2"
],
"env": {
"ANNOLUX_API_URL": "<ANNOLUX_API_URL>",
"ANNOLUX_API_KEY": "<ANNOLUX_API_KEY>"
}
}
}
}
启动命令docker run -i --rm -e ANNOLUX_API_URL -e ANNOLUX_API_KEY ghcr.io/eason4kim-rocket/annolux-mcp:0.1.2
需要配置的环境变量
ANNOLUX_API_URLAnnolux API origin.
ANNOLUX_API_KEY密钥Annolux API key created in the account dashboard.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/eason4kim-rocket/annolux-mcp:0.1.2

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

⚡ Annolux

面向 AI Agent 和 RAG 系统的精选中英文搜索 API 与 MCP

让搜索结果有据可查。每条结果都包含明确的 fetched_at 时间戳和来源信息。

Go Version NPM Version Smithery Badge Glama MCP Add to Cursor MCP Protocol License Free Tier

🌐 网站 • 📖 API 文档 • ⚡ MCP 快速入门 • 📊 固定基准测试 • 📁 示例 • 🇨🇳 中文文档


💡 为什么选择 Annolux?

目前面向 AI Agent 的网页搜索 API 存在三个致命缺陷:

  1. 垃圾进,垃圾出:商业搜索引擎收录了数百万个 SEO 内容农场、抓取式垃圾信息和自动生成的噪声,污染大模型的上下文窗口。
  2. 缺少时间来源信息:搜索 API 没有提供确切的快照时间戳(fetched_at),导致大模型会对当前状态产生幻觉。
  3. 掠夺式计费:请求失败、输出为空或因速率限制而重试,仍需支付全额费用。

Annolux 通过以 Agent 为先的精选方案解决这些问题:

  • 🛡️ 精选双语技术索引:高信噪比的中英文语料(Rust、Go、Python、AI/ML、官方文档、RFC、GitHub、arXiv)。
  • 🕒 明确的 fetched_at 时间戳:每条排名结果都会显示其入库的确切时间(精确到秒),支持可靠引用和时间推理。
  • 🎯 可预测的账本计费:每次成功的 2xx 响应恰好扣除 1 个额度。错误、超时(504)、速率限制(429)和错误请求均不扣额度。
  • 🧩 原生支持 Model Context Protocol(MCP):无需配置即可用于 Claude Code、Cursor、Windsurf、Cline、Zed 和 Claude Desktop。
  • 🚀 每月赠送 1,000 个免费额度:在 annolux.com 使用 GitHub 或 Google 登录,30 秒即可开始查询。

🥊 对比:Annolux 与通用搜索 API

功能 / 指标AnnoluxExa(Metaphor)TavilySerper / Google
索引质量精选技术与知识内容(EN/ZH)覆盖全网的神经搜索覆盖全网的聚合器整个 Web(SEO 噪声较多)
中文(ZH)技术语料原生双语全文搜索(FTS),一流支持中等较弱 / 翻译内容混杂内容农场
明确的快照时间戳✅ 每条结果均包含 fetched_at❌ 不一致❌ 未提供❌ 仅有近似的摘要时间
计费保障✅ 仅在 2xx 成功时扣 1 个额度按请求计费按请求计费按请求计费
失败 / 超时查询🆓 不扣额度❌ 计费❌ 计费❌ 计费
MCP 工具接口单个精简的 search_web(尽量减少令牌浪费)多个臃肿工具多步工具需要自定义桥接
域名限制✅ 精确的主机名过滤(domains)✅ 支持✅ 支持仅支持有限的 site: 查询
免费入门套餐每月 1,000 个额度有限试用每月 1,000 个一次性 2,500 个

📦 快速安装

唯一的前置条件是 Node.js 18+。可从零配置沙盒开始使用,无需账户或 API 密钥:

npx -y annolux-mcp

如需使用完整的月度额度,请在 annolux.com 创建免费密钥,并通过进程环境传入:

ANNOLUX_API_KEY=ann_live_YOUR_API_KEY npx -y annolux-mcp

🔌 MCP 集成

Annolux 按照官方 Model Context Protocol(MCP) 规范实现了单个高效工具:search_web。

⚡ 一键安装(Cursor 和 Smithery)
  • Cursor:点击 添加到 Cursor,通过深层链接原生安装。
  • Smithery CLI:
    npx -y @smithery/cli install annolux-mcp --client claude
    npx -y @smithery/cli install annolux-mcp --client cursor
    
  • Glama 在线 Playground:在 Glama.ai 上立即测试查询,无需本地设置。
1. Claude Code
claude mcp add annolux -- npx -y annolux-mcp

此命令会以沙盒模式启动。若要使用账户密钥,请在 -- 前添加 -e ANNOLUX_API_KEY=ann_live_YOUR_API_KEY。

2. Cursor / Windsurf

添加到项目的 .cursor/mcp.json 或全局配置中:

{
  "mcpServers": {
    "annolux": {
      "command": "npx",
      "args": ["-y", "annolux-mcp"],
      "env": {
        "ANNOLUX_API_KEY": "ann_live_YOUR_API_KEY"
      }
    }
  }
}
3. Claude Desktop

添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "annolux": {
      "command": "npx",
      "args": ["-y", "annolux-mcp"],
      "env": {
        "ANNOLUX_API_URL": "https://api.annolux.com",
        "ANNOLUX_API_KEY": "ann_live_YOUR_API_KEY"
      }
    }
  }
}

🚀 HTTP API 快速入门

标准搜索端点
POST https://api.annolux.com/api/v1/search
Authorization: Bearer ann_live_YOUR_API_KEY
Content-Type: application/json
{
  "query": "tokio async runtime memory model",
  "domains": ["tokio.rs", "docs.rs", "github.com"],
  "deduplicate": true,
  "limit": 5,
  "timeout": 10,
  "ranking": "default"
}
Python
import os
import requests

response = requests.post(
    "https://api.annolux.com/api/v1/search",
    headers={"Authorization": f"Bearer {os.environ.get('ANNOLUX_API_KEY')}"},
    json={
        "query": "DeepSeek R1 architecture reinforcement learning",
        "limit": 5,
        "deduplicate": True
    },
    timeout=15
)

data = response.json()
for result in data.get("results", []):
    print(f"[{result['fetched_at']}] {result['title']} -> {result['url']}")
TypeScript / Node.js
const res = await fetch("https://api.annolux.com/api/v1/search", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.ANNOLUX_API_KEY}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    query: "vLLM PagedAttention implementation details",
    limit: 5,
    deduplicate: true
  })
});

const data = await res.json();
console.log(`Credits Remaining: ${res.headers.get("X-Annolux-Credits-Remaining")}`);
console.log(data.results);
cURL
curl -s -X POST https://api.annolux.com/api/v1/search \
  -H "Authorization: Bearer ann_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "Go sync.Pool benchmark best practices",
    "limit": 3
  }' | jq .

🏛️ 架构与机制

┌─────────────────────────────────────────────────────────────┐
│                 AI Agent / RAG Application                  │
│       (Claude Code / Cursor / LangChain / Custom LLM)       │
└──────────────────────────────┬──────────────────────────────┘
                               │
               Stdio MCP / HTTPS REST Request
                               │
                               ▼
┌─────────────────────────────────────────────────────────────┐
│                  Annolux Gateway API Engine                 │
│  ┌─────────────────────────┐     ┌───────────────────────┐  │
│  │ 1. Account & Rate Limit │ ──► │ Reserve 1 Credit      │  │
│  │    (5 RPS, Burst 10)    │     │ in /data/accounts.db  │  │
│  └─────────────────────────┘     └───────────────────────┘  │
│                                              │              │
│                                              ▼              │
│  ┌───────────────────────────────────────────────────────┐  │
│  │ 2. Bilingual FTS Ranker (/data/index.db)              │  │
│  │    • Curated English & Chinese Corpus                 │  │
│  │    • SimHash Content-Deduplication Engine             │  │
│  │    • Domain Filter & Exact Substring Match            │  │
│  └───────────────────────────────────────────────────────┘  │
│                                              │              │
│                                              ▼              │
│  ┌───────────────────────────────────────────────────────┐  │
│  │ 3. Atomic Response & Ledger Settlement                │  │
│  │    • 2xx Success ──► Commit 1 Credit & Attach Timing  │  │
│  │    • 4xx/5xx Err ──► Release Reservation (0 Cost)     │  │
│  └───────────────────────────────────────────────────────┘  │
└──────────────────────────────┬──────────────────────────────┘
                               │
          JSON with exact `fetched_at` & verified URL
                               │
                               ▼
                     [ Grounded LLM Response ]

📊 搜索质量与固定基准测试

Annolux 使用一组不可变的固定盲测集评估搜索检索性能,该测试集包含 40 个复杂的双语查询。排名权重绝不会根据测试集进行调整。

指标首轮门槛基线上线前验证门槛
Hit@172.5%72.5%
Hit@382.5%82.5%
Hit@1085.0%85.0%
MRR@100.781250.78125
P95 延迟532 ms356 ms
5xx 错误率0.00%0.00%

所有基准测试均在客户端以完全并发负载进行评估。


💳 透明定价

套餐价格额度速率限制计费规则
免费版$0每月 1,000 个5 RPS / 突发 10永久免费,无需信用卡
Pro$29 / 月每月 20,000 个5 RPS / 突发 101 次成功 = 1 个额度,不结转
Scale$99 / 月每月 100,000 个5 RPS / 突发 101 次成功 = 1 个额度,不结转
  • 不收取超额费用。
  • 错误、速率限制和超时均完全免费(不扣额度)。
  • 每个账户最多可创建 3 个有效 API 密钥。

📁 示例与配方

查看 examples/ 目录,获取可用于生产环境的入门示例:


🤝 社区与支持


📄 许可证

Annolux 是根据 Apache License, Version 2.0 授权的开源软件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。