RAG服务器发现工具

RAGMap是一个轻量级的MCP注册表兼容子注册表+MCP服务器,专注于RAG相关的MCP服务器,帮助用户发现和路由到最适合其任务的检索服务器。

  • by khalidsaidi
  • TypeScript
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 khalidsaidi/ragmap

使用说明

RAGMap(RAG MCP注册表查找器)

试试看: https://ragmap-api.web.app/browse/ 从这里开始: https://github.com/khalidsaidi/ragmap/discussions/17

RAGMap是一个轻量级的MCP注册表兼容子区+MCP服务器,专注于 RAG相关MCP服务器.

它

  • 引入官方MCP注册处,丰富RAG使用案例的记录,并为API子注册处提供服务。
  • 公开MCP服务器(远程流式HTTP+本地stdio),以便代理可以搜索/过滤RAG MCP服务器。

地图(ragmap)

MapRag是一个用于检索的发现+路由层。 它帮助代理人和人类回答: 考虑到我的限制,我应该使用哪个检索MCP服务器来执行此任务?

RAGMap确实如此 不 自己检索。它对具有检索功能的服务器进行索引和丰富,然后将您路由到正确的工具/服务器。

安装后你会得到什么(纯英语)

  • 有 发现/路由工具 (rag_find_servers, rag_get_server, rag_list_categories, rag_explain_score).
  • RAGMap帮助您找到适合您的任务和约束的最佳检索服务器。
  • 然后,您的代理连接到所选服务器进行实际检索。

RAGMap确实如此 不:

  • 自动获取您的私人文档。
  • 托管您的个人矢量数据库。
  • 更换您的端到端RAG管道。

如果您需要对自己的数据进行检索,请使用支持摄取/索引流的RAGMap结果检索服务器(或您自己的服务器)。

新鲜度和摄取量

  • 托管的RAGMap按计划更新其索引。新发布/更改的服务器可能会出现一些延迟。
  • 大多数用户都这样做 不 使用托管服务时自己运行摄取。
  • 如果您需要更严格的新鲜度控制或私有索引行为,请自行托管并运行自己的摄入计划(docs/DEPLOYMENT.md).

特征: 注册兼容的API; 语义+关键字搜索 (当 OPENAI_API_KEY 设置,例如从env或部署的秘密管理器);类别和 ragScore;筛选条件 hasRemote, reachable (探测可流式传输的http/SSE), citations, localOnly, transport, minScore, categories. 人工浏览UI 在 Ragmap-ai.web.app/浏览 --搜索、筛选、复制Cursor/Claude配置。MCP工具: rag_find_servers, rag_get_server, rag_list_categories, rag_explain_score.

快速入门

要求: curl 和 jq

1) 可到达的顶级检索器(24小时内检查)

curl -s "https://ragmap-api.web.app/rag/top?hasRemote=true&reachable=true&reachableMaxAgeHours=24&serverKind=retriever&limit=25" | jq .

2) 使用信任筛选器进行搜索(最近可访问)

curl -s "https://ragmap-api.web.app/rag/search?q=rag&hasRemote=true&reachable=true&reachableMaxAgeHours=24&limit=10" | jq .

3) 获取服务器的安装配置

提示:URL编码包含以下内容的名称 /.

curl -s "https://ragmap-api.web.app/rag/install?name=ai.filegraph%2Fdocument-processing" | jq .

4) 检查新鲜度和覆盖率

curl -s "https://ragmap-api.web.app/rag/stats" | jq .

5) 遥测使用情况摘要

curl -s "https://ragmap-api.web.app/api/stats" | jq .

完整概述: docs/OVERVIEW.md
发布历史: CHANGELOG.md

建筑

Mermaid source
%%{init: {"theme":"base","themeVariables":{"primaryColor":"#ffffff","primaryTextColor":"#000000","primaryBorderColor":"#000000","lineColor":"#000000","secondaryColor":"#ffffff","tertiaryColor":"#ffffff","clusterBkg":"#ffffff","clusterBorder":"#000000","edgeLabelBackground":"#ffffff"},"flowchart":{"curve":"linear","nodeSpacing":75,"rankSpacing":70}}}%%
flowchart TB
  %% Concept-only diagram (product value; no deployment/framework/datastore details)

  classDef mono fill:#ffffff,stroke:#000000,color:#000000,stroke-width:1px;

  subgraph Inputs[" "]
    direction LR

    subgraph Query["Agent-native interface"]
      direction TB
      Users["Agents + humans"]:::mono
      subgraph Tooling["Tool call"]
        direction LR
        Criteria["Routing constraints<br/>domain, privacy, citations,<br/>freshness, auth, limits"]:::mono
        Tools["MCP tools<br/>rag_find_servers<br/>rag_get_server<br/>rag_list_categories<br/>rag_explain_score"]:::mono
      end
      Users --> Criteria --> Tools
    end

    subgraph Subregistry["Subregistry (read-only)"]
      direction TB
      subgraph Ingest["Ingest"]
        direction LR
        Sources["Upstream MCP registries<br/>(official + optional)"]:::mono
        Sync["Sync + normalize<br/>(stable schema)"]:::mono
        Catalog["Enriched catalog<br/>(servers + versions)"]:::mono
        Sources --> Sync --> Catalog
      end

      subgraph Enrich["Enrich (adds value)"]
        direction LR
        Cap["Structured metadata<br/>domain: docs|code|web|mixed<br/>retrieval: dense|sparse|hybrid (+rerank)<br/>freshness: static|continuous (max lag)<br/>grounding: citations|provenance<br/>privacy/auth: local|remote + req|optional<br/>limits: top_k|rate|max ctx"]:::mono
        Trust["Trust signals (lightweight)<br/>status, reachability,<br/>schema stability, reports"]:::mono
      end

      Catalog --> Cap
      Catalog --> Trust
    end
  end

  subgraph Selection["Selection (the added value)"]
    direction LR
    Router["Router<br/>match + rank + explain"]:::mono
    Ranked["Ranked candidates<br/>+ reasons + connect info"]:::mono
    Retrieval["Chosen retrieval MCP server(s)<br/>(do retrieval)"]:::mono
    Router --> Ranked --> Retrieval
  end

  Tools --> Router
  Catalog --> Router

  %% Keep the layout without adding a third visible "box" around Inputs.
  style Inputs fill:#ffffff,stroke:#ffffff,stroke-width:0px

Monorepo布局

  • apps/api:REST API+MCP注册兼容端点+摄入工作者
  • apps/mcp-remote:远程MCP服务器(可流式HTTP)
  • packages/mcp-local:本地MCP服务器(stdio)
  • packages/shared:Zod模式+共享类型
  • docs:docs+Firebase托管静态资产

本地开发人员

cp .env.example .env
corepack enable
pnpm -r install
pnpm -r dev

可选:设置 OPENAI_API_KEY 在 .env (参见 .env.example)以启用 语义搜索 当地; GET /health 将显示 "embeddings": true.

API http://localhost:3000 MCP远程: http://localhost:4000/mcp

摄取

curl -X POST http://localhost:3000/internal/ingest/run \
  -H "Content-Type: application/json" \
  -H "X-Ingest-Token: $INGEST_TOKEN" \
  -d '{"mode":"full"}'

MCP使用

远程(流式HTTP):

claude mcp add --transport http ragmap https://<your-mcp-domain>/mcp

本地(stdio、npm):

npx -y @khalidsaidi/ragmap-mcp@latest

本地(stdio):

pnpm -C packages/mcp-local dev

关键端点

  • GET /embed --可嵌入的“搜索RAG MCP服务器”小部件(iframe;查询参数: q, limit)
  • GET /health (包括 embeddings: true|false 当语义搜索打开/关闭时)
  • GET /readyz
  • GET /v0.1/servers
  • GET /v0.1/servers/:serverName/versions
  • GET /v0.1/servers/:serverName/versions/:version (支持 latest)
  • GET /rag/search
  • GET /rag/top (默认排序建议; limit 最大 50)
  • GET /rag/install
  • GET /rag/stats
  • GET /rag/categories
  • GET /api/stats (公共使用总量;无个人身份信息)
  • GET /api/usage-graph (HTML使用情况图表)
  • POST /internal/ingest/run (受保护)

对于托管 ragmap-api.web.app, /internal/* 路线不会公开。

GET /rag/search 查询参数:

  • q (字符串)
  • categories (逗号分隔)
  • minScore (0-100)
  • transport (stdio 或 streamable-http)
  • registryType (字符串)
  • hasRemote (true 或 false --仅限具有远程端点的服务器)
  • reachable (true --只有最近被探测检查为可通过流式传输http/SSE访问的服务器)
  • reachableMaxAgeHours (可选,仅适用于 reachable=true --仅在N小时内检查结果)
  • citations (true --仅在元数据中提及引用/基础的服务器)
  • localOnly (true --只有stdio,没有远程)

冒烟测试

API_BASE_URL=https://ragmap-api.web.app ./scripts/smoke-public.sh
MCP_URL=https://ragmap-api.web.app/mcp ./scripts/smoke-mcp.sh

文档

  • docs/DISCOVERY-LINK-CONVENTION.md --可选 discoveryService 在server.json中,这样客户端就可以显示“发现更多”
  • docs/AGENT-USAGE.md — 对于代理商: 发现、REST API、MCP安装(无人工干预)
  • docs/DEPLOYMENT.md
  • docs/OVERVIEW.md
  • docs/DATA_MODEL.md
  • docs/PRIVACY.md
  • docs/PUBLISHING.md
  • docs/GLAMA-CHECKLIST.md
  • docs/GLAMA-DOCKERFILE.md
  • scripts/glama-score-status.sh --打印公共Glama评分标志(可检查/发布/使用)