mcpField
I
Index Agentica

Index Agentica

远程服务
indexagentica.com搜索与检索0今天更新

关于 Index Agentica

Index Agentica 是面向 Agent 和用户的公开目录搜索服务,可查找工具、MCP 服务、API、协议与技能。其远程无状态服务无需身份验证,并提供目录条目和长篇指南。

主要功能

  1. 01搜索目录条目与指南
  2. 02获取完整条目详情
  3. 03读取指南、比较、技术栈和技能
  4. 04浏览分类
  5. 05请求收录目录条目

适用场景

  1. 01为任务查找 MCP 服务
  2. 02比较工具和 Agent 技术栈
  3. 03获取技能或长篇指南
  4. 04提交项目以供目录收录

MCP 相关

提供远程 Streamable HTTP MCP 服务,支持搜索、获取条目与内容、列出分类及提交收录请求。服务无需身份验证,除提交收录请求外均为只读。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.indexagentica.com/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

5
参数类型必填说明
tagsarray否可选的标签 slug 列表;结果必须包含所有这些标签(例如,["open-source", "python"])。
typeenum否可选的结果类型:entry(目录条目)、guide、comparison、stack、skill 或 all(默认)。entry | guide | comparison | stack | skill | all
limitinteger否结果数量上限(1–50,默认 10)。
querystring否自由文本搜索词,例如 "browser automation" 或 "payments x402"。指定了 category 或 tags 时可以为空。
categorystring否可选的条目类别 slug,用于限制结果范围(同时隐含 type 为 entry)。当前类别:skills、harnesses、mcp-servers、tools、protocols、apis、information、finance-payments、directories、infrastructure、evals-observability。

详细介绍

indexagentica-mcp

远程 MCP 服务(Streamable HTTP)和 REST 搜索 API,适用于 Index Agentica,这是一个以 Agent 为先的技能、 harness、MCP 服务、工具、协议和 API 目录,还提供长篇指南、 对比、技术栈和可下载的 Agent Skills。运行于 Cloudflare Workers (免费计划),无状态、不使用 Durable Objects、无需身份验证、开放 CORS。除 request_listing / POST /v1/requests 外均为只读;这两项会将目录收录申请加入队列,供 Curator 审核(D1)。

**自托管:**请参阅 SELF_HOSTING.md,了解如何从全新克隆开始运行自己的副本(模板配置、自有 KV/D1、自有数据镜像、本地和远程冒烟测试)。wrangler.toml 和 DEPLOY.md 是维护者自己的部署配置。

安装

远程服务:无需安装,无需 API 密钥。Streamable HTTP 地址为 https://mcp.indexagentica.com/mcp(已上线)。

claude mcp add --transport http indexagentica https://mcp.indexagentica.com/mcp

其他客户端:将该 URL 添加为无需身份验证的 Streamable HTTP 服务(参阅 llms-install.md)。 同一个 Worker 也可通过 https://indexagentica-mcp.indexagentica.workers.dev/mcp 响应请求(参阅 DEPLOY.md)。

端点

方法路径说明
POST/mcpMCP Streamable HTTP 端点(JSON-RPC 2.0,JSON 响应)
GET/DELETE/mcp405(没有独立的 SSE 流,也没有会话)
GET/JSON 自述信息,包含 MCP 端点、REST、llms.txt 和文档的链接
GET/search?q=&type=&category=&tags=a,b&limit=对条目和长篇内容进行排名搜索(type:entry、guide、comparison、stack、skill 或 all(默认);category 适用于条目;limit 为 1-50,默认 10;tags 按 AND 关系匹配)
GET/entries/<id>(或 <id>.json)单个完整条目;404 响应包含 suggestions
GET/entries所有 ID
GET/content/<type>/<id>(或 <id>.json)单篇指南、比较、技术栈或技能:元数据 + Markdown(?include_html=1 会添加 HTML);404 响应包含 suggestions
GET/content?type=已发布的长篇内容(元数据)
GET/categories分类及其计数
GET/openapi.jsonREST API 的 OpenAPI 3.1 规范
GET/.well-known/mcp/server-card.json静态服务卡片(Smithery 扫描回退):serverInfo、authentication: {required: false}、与 tools/list 相同的 tools,以及空的 resources/prompts
GET/stats公开使用统计信息(JSON):网站页面浏览量、外部链接点击量、技能下载量、按工具统计的 MCP 工具调用次数、REST 请求数、Agent/人工用户比例;包含最近 24 小时、最近 7 天以及自 since 时间戳以来的全部数据。缓存 10 分钟。参见使用统计
GET/v1/usage/stats 的别名(供网站使用;较不容易被内容拦截器过滤规则拦截)
POST/v1/e/hit 的别名(供网站使用)
GET, HEAD/skills/{id}.zip, /skills/{id}/SKILL.md直接下载技能:记录一次下载,然后 302 重定向到 indexagentica.com 上的静态文件。未知 ID 返回 404。参见直接下载技能
POST/hit来自 indexagentica.com 内联脚本的网站使用情况信标(检查来源、严格验证,返回 204)。参见网站信标
POST/v1/requests请求添加条目(逻辑与 request_listing 工具相同)。JSON 请求体 {wanted, category, url?, reason?, requester?};新增返回 201,合并返回 200。参见条目请求
GET/v1/requests?status=&limit=公开的最常请求列表(已清理;已拒绝的请求不公开;仅已验证/已列出的请求包含 url)
GET/v1/requests/admin?status=管理员:完整队列(Bearer REQUESTS_ADMIN_TOKEN)
POST/v1/requests/<id>/status管理员:{status, entry_id?, note?} 或 {delete: true}(Bearer 令牌)
GET/v1/admin/tool-calls?hours=48管理员:按请求的工具名称和客户端统计非 tools/call 调用次数,包括未知名称(Bearer 令牌;不计入 /stats)
GET/health存活状态(不受速率限制)

错误始终以 JSON 返回:{"error":{"status":400,"code":"bad_request","message":"..."}} (代码:bad_request、not_found、method_not_allowed、rate_limited、upstream_error)。

MCP 工具

工具输入输出(structuredContent)
searchquery(字符串)、type?(entry|guide|comparison|stack|skill|all,默认 all)、category?(slug;仅限条目)、tags?(字符串数组,必须全部匹配)、limit?(1-50){query, type, category?, tags, limit, total, results[]};每个结果包含 type, id, name, summary, url, tags, score, links,以及 category(条目)或 author, last_verified, entries(长篇内容)
get_entryid(kebab-case){entry}(完整条目,遵循条目架构,并包含 links 和 longform 反向引用)
get_contenttype(guide|comparison|stack|skill)、id、include_html?{content}:前置元数据、元数据、markdown(将 scheme 链接解析为绝对 URL)、links;比较内容附带 comparison(标准、表格、结论),技术栈附带 stack(用例、组件),技能附带 skill_md(完整的 SKILL.md)和 links.zip / links.skill_md
list_categories无{total, generated, categories[{slug,name,description,count,html,json}]}
request_listingwanted(≤120)、category(类别 slug 或 other)、url?(http(s),≤300)、reason?(≤500)、requester?(≤60){ok, id, merged, vote_counted, request{id,wanted,category,votes,status,first_seen,last_seen}, note, list}。唯一非只读工具(readOnlyHint: false,不会造成破坏)

每个工具都有一个 JSON-Schema inputSchema、一个 outputSchema、readOnlyHint 注解,并会同时返回 structuredContent 和内容块中的同一 JSON 文本。参数无效或 ID 未知时, 会返回 isError: true 的工具结果(以便模型自行纠正);工具名称未知时,会返回 JSON-RPC -32602, 其消息会列出有效工具;若存在明显匹配项(客户端命名空间前缀,例如 mcp__indexagentica__search;同义词,例如 search_index/find;编辑距离不超过 2 的拼写错误), 则会提供建议:error.data = {requested, valid_tools, suggestion?}。 建议不会被执行。显式别名(src/tools.js 中的 TOOL_ALIASES)仅为观察到真实客户端调用的无歧义名称 添加,不会在 tools/list 中公布;日志会记录最初请求的名称(detail = alias:<tool>)。

评分:对每个查询词,ID/名称完全匹配得 12 分,ID 片段得 6 分,名称子串得 5 分, 标签完全匹配得 4 分(部分匹配得 2 分),摘要得 2 分,类别得 1.5 分,描述得 1 分。如果名称中包含 整个短语,则加 8 分;最终得分乘以匹配词数所占比例。

协议支持(双时代、无状态)

  • 2026-07-28(当前规范,“现代版”):无需握手。每个 POST 都携带 _meta["io.modelcontextprotocol/protocolVersion"] 和 MCP-Protocol-Version、 Mcp-Method 标头(对于 tools/call,还支持 Mcp-Name 和 base64 哨兵标头)。 服务会根据请求正文验证标头(-32020 HeaderMismatch),对未知版本返回 -32022 和 supported 列表,实现 server/discover,返回 resultType: "complete",在结果 _meta 中返回 serverInfo,并在 tools/list 和 server/discover 上提供 ttlMs/cacheScope 缓存提示。未知方法 -> HTTP 404 + -32601。

  • 2025-11-25 / 2025-06-18 / 2025-03-26(“旧版”):会响应 initialize (协商版本,无法协商时回退到 2025-11-25)、notifications/initialized -> 202、 ping、tools/list、tools/call;接受 2025-03-26 批量请求。绝不会签发 Mcp-Session-Id,因此每个请求彼此独立,任意 Worker 隔离实例都可以处理。

  • 响应始终为 application/json(绝不使用 SSE)。Origin 会根据 ALLOWED_ORIGINS 检查(默认值为 *,因为数据公开且只读)。

规范参考:Streamable HTTP 2026-07-28, 版本控制 / 双时代, server/discover。

数据与缓存

数据源是已发布的静态站点:同时获取 GET https://indexagentica.com/api/index.json (所有条目和分类)和 GET /api/longform.json(长文元数据);如果无法加载长文索引,条目仍可正常使用。get_content 会按需从 DATA_BASE_URL 获取 /api/longform/<route>/<id>.json(使用相同的缓存)。Worker 会将索引保存在隔离实例内存中,缓存时间为 CACHE_TTL_SECONDS(600 s),也会将其存入 Cloudflare Cache API(在自定义域名上生效;在 workers.dev 上为空操作),合并并发刷新请求,并在上游获取失败时提供过期副本。站点构建新增的分类会自动显示。不会在任何位置写入数据。

使用情况日志记录(Workers Analytics Engine)

每个请求(OPTIONS、/health、/robots.txt、/favicon.ico、/hit、/stats 除外)都会向 Analytics Engine 数据集 indexagentica_mcp(wrangler.toml 中的绑定 ANALYTICS)写入一个数据点,以便我们按工具和客户端统计 Agent 使用情况。如果缺少此绑定(本地测试、ratelimit-test 环境),日志记录不会执行,写入失败也不会影响响应。Workers Free 每天包含 100,000 个写入的数据点(定价);数据保留 3 个月(限制)。

列字段说明
index1<route>:<tool or method or endpoint>例如:mcp:search、rest:get_entry
blob1routemcp 或 rest
blob2endpoint标准化后的值:/mcp、/search、/entries/{id}、/content/{type}/{id}、……、other
blob3JSON-RPC methodinitialize、tools/call、batch、……(仅限 MCP)
blob4toolMCP 工具名称,或对应的 REST 工具(search、get_entry、get_content、list_content、list_categories)
blob5、blob6客户端名称、版本来自 initialize 的 clientInfo 或 2026-07-28 的 _meta["io.modelcontextprotocol/clientInfo"];分别截断为 64/32 个字符
blob7User-Agent截断为 128 个字符
blob8、blob9协议版本、时期modern / legacy
blob10结果ok、error(HTTP ≥ 400、JSON-RPC 错误或 isError 工具结果)、rate_limited
blob11详情JSON-RPC 错误代码、tool_error 或 HTTP 状态码
blob12、blob13国家/地区、colo来自 request.cf
blob14、blob15、blob16类型筛选器、类别筛选器、目标 ID仅接受 kebab-case 值(公开目录中的 slug/ID);其他值均存储为 invalid
blob17UA 类别human(主流浏览器的 User-Agent)或 agent(其他所有情况:MCP 客户端、SDK、curl、爬虫、无头浏览器);参见 src/ua.js。于 2026-10-03 添加;更早的行会在查询时根据 blob7 分类
blob18流量internal(我们自己的测试/Agent,参见内部流量)或 outside;2026-10-12 之前为空
blob19内部规则header、ua 或 ip(外部流量为空)
double1HTTP 状态码
double2延迟(毫秒)Worker 内部的耗时(Workers 的时钟会在 I/O 期间前进)
double3ASN来自 request.cf.asn(网络,而非个人)
double4结果数量搜索 total
double5、double6查询长度(字符数、单词数)

**隐私:**不记录 IP 地址、搜索查询文本、工具参数中的自由文本、Cookie 或令牌(服务端没有这些信息);对于站点信标,也不记录来源页、查询字符串或客户端标识符。客户端仅通过其自行报告的名称/版本和截断后的 User-Agent 进行识别。示例查询(SQL API): SELECT blob4 AS tool, blob5 AS client, SUM(_sample_interval) AS requests FROM indexagentica_mcp WHERE timestamp > NOW() - INTERVAL '1' DAY GROUP BY tool, client ORDER BY requests DESC。

网站信标(POST /hit)

indexagentica.com 的每个页面都包含一段小型内联脚本(不使用 Cookie、localStorage、标识符或第三方代码)。如果设置了 navigator.webdriver,或者浏览器发送了 Do Not Track 或 Global Privacy Control 信号,则会跳过该脚本。脚本使用 navigator.sendBeacon 发送数据(类型为 text/plain,因此不会触发 CORS 预检):

事件请求体触发时机
页面浏览{"t":"pageview","p":"/entries/x402/"}页面加载时;p 是页面的规范路径(无查询字符串、无引荐来源)
外链点击{"t":"click","p":"/entries/x402/","id":"x402","h":"www.x402.org"}在条目页面点击列表项的网站/仓库/文档/来源链接时
下载{"t":"download","p":"/skills/<id>/","id":"<id>","k":"zip"|"skill_md"}点击技能 ZIP 或原始 SKILL.md 链接时

网站会向 mcp.indexagentica.com 上的别名 /v1/e 发送请求;如果失败,则回退到 indexagentica-mcp.indexagentica.workers.dev 上的同一路径(同一个 Worker,执行相同的检查)。Worker 仅接受 Origin: https://indexagentica.com(HIT_ORIGINS)、不超过 512 字节的请求体、字段完全匹配的三种事件类型、属于网站已发布页面集合的 p、已发布索引中存在的 id,以及条目实际链接到的主机。其他请求均会返回 400,且不会被存储。/hit 有独立的速率限制计数器(每个 IP 同样为 120 次/分钟)。已接受的点击数据会写入单独的数据集 indexagentica_hits(绑定项 HITS),索引为 hit:<event>:

列字段
blob1事件:pageview、click、download
blob2页面路径
blob3条目或技能 id(click、download)
blob4目标主机(click)
blob5下载类型:zip、skill_md
blob6UA 类别(human/agent)
blob7国家/地区(来自 request.cf)
blob8流量:internal/outside(2026-10-12 之前为空)
blob9内部流量规则:header、ua、ip
blob10探测类型(仅限事件 direct):已计入的下载为空,或为 head、bot
double11
直接下载技能(GET /skills/<id>)

Agent 使用 curl 获取技能,不会运行网站信标,因此面向 Agent 发布的下载链接(llms.txt、llms-full.txt、/api/longform*.json、MCP get_content 链接)会指向此主机:https://mcp.indexagentica.com/skills/<id>.zip 和 https://mcp.indexagentica.com/skills/<id>/SKILL.md。Worker(src/downloads.js)会根据 ^[a-z0-9]+(-[a-z0-9]+)*$(最多 64 个字符)检查 <id>,并验证它是否属于网站 /api/longform.json 中已发布的技能(缓存 10 分钟);其他请求均会返回 404,且 Location 始终由 DATA_BASE_URL 构建,因此不会形成开放重定向。Worker 会向 indexagentica_hits 写入一行数据(事件 direct,索引 hit:direct,字段相同;blob2 为请求路径),并返回 302 和 Cache-Control: no-store。HEAD 请求以及爬虫/链接检查器/监控器 User-Agent(BOT_UA_RE)会以 blob10 = head/bot 的形式存储,并报告为 site.direct_downloads.crawlers_and_probes,而不计为下载。内部流量照常标记。该路由有独立的速率限制计数器(dl:);超过限制后重定向仍会正常工作,但请求不会被记录。网站自身 HTML 中的下载按钮仍链接到静态文件,并通过点击信标计数(site.downloads);site.skill_downloads = 点击次数 + 直接下载次数。

使用统计数据(GET /stats)

通过 Analytics Engine SQL API,使用密钥 CF_ANALYTICS_TOKEN(Account Analytics Read)和 CF_ACCOUNT_ID 聚合两个数据集。计数方式为 SUM(_sample_interval)。统计窗口:last_24h、last_7d(滚动窗口)和 all_time。由于 Analytics Engine 只保留 3 个月的数据,每日 cron(30 0 * * *)会将每个已结束 UTC 日期的总数存入 Workers KV(STATS_KV,键为 day:YYYY-MM-DD);all_time = 已存储日期的总数 + 从尚未存储的第一个日期起进行的实时查询(/stats 也会延迟补齐缺失日期)。since.mcp_api(STATS_API_SINCE,首次部署请求日志记录时)和 since.site_beacon(STATS_BEACON_SINCE,部署信标时)标明计数的起始时间;更早的数据不会估算或回填。仅公布服务自身的工具名称(其他名称均为 unknown_tool)。响应缓存 10 分钟(Cache API + 内存,Cache-Control: public, max-age=600)。没有令牌时,端点会返回 {"status":"collecting", ...},不包含数字;如果 SQL API 失败,则返回 503 {"status":"unavailable"}。

每个统计窗口只统计外部流量,并包含:site.downloads.by_skill、site.direct_downloads(总计、zip、skill_md、by_skill、crawlers_and_probes)、site.skill_downloads(总计 = 点击次数 + 直接下载次数,整体及每个技能均为 {total, clicks, direct})、site.outbound_clicks_by_entry、mcp.top_clients(自报的 MCP 客户端名称,转换为小写并剔除 [a-z0-9._ -] 以外的字符,前 10 名,且仅包含出现次数 ≥ 3 的名称)、top_user_agent_families(机器人名称、browser、headless-chrome 或第一个产品标记;前 10 名,出现次数 ≥ 3)以及 internal_excluded(按规则排除的内容)。KV 日期数据带有汇总版本号(v);在原始数据仍保留期间,会重新计算旧版本日期的数据,因此规则变更会追溯生效。延迟补齐每次 /stats 调用最多重新计算 2 天,cron 每次运行最多重新计算 5 天(每天约需 7 个 SQL 子请求;Workers Free 允许 50 个)。

内部流量

我们自己的测试、监控和 Agent 会记录,但会从 /stats 中排除。若请求或信标符合任一规则(src/internal.js),即视为内部流量:

规则匹配条件
headerX-Indexagentica-Internal: 1(CORS 允许此标头;test/e2e.mjs 会在每个请求中发送它)
uaUser-Agent 包含 indexagentica(我们的客户端使用 indexagentica-<agent>/1)
ip客户端 IP 位于可选密钥 INTERNAL_IPS 列出的 CIDR 范围内(以逗号分隔,支持 IPv4/IPv6)。未设置时:我们的共享服务器通过共享中继范围内的轮换地址出口,因此 IP 规则也会排除陌生人的流量

在标记存在之前(2026-10-12)记录的行,会在 SQL 中根据我们自己会话的特征进行追溯匹配(src/stats.js 中的 API_RETRO / HITS_RETRO):API 行中 MCP 客户端名称为 e2e(我们的测试套件)的记录,或来自美国且 User-Agent 为 curl/node/python/headless-Chrome、时间处于记录在案的启动和验证时段(2026-10-02 20:15–20:45 和 2026-10-03 04:55–05:50 UTC)的记录,以及 2026-10-03 05:00 至 05:50 UTC 期间来自美国的站点信标。这只能尽力而为:看起来像外部流量的内部会话仍可能被计入,而这些时段内使用相同通用客户端的外部请求则会被排除。

我们的 Agent 应这样调用服务:

curl -H 'X-Indexagentica-Internal: 1' -A 'indexagentica-steward/1' https://mcp.indexagentica.com/stats

速率限制

  • 默认值:每个客户端 IP、每个 Cloudflare 位置每 60 秒 120 个请求,通过 Workers 速率限制绑定 (wrangler.toml 中的 [[ratelimits]],自 2025 年 9 月起正式发布;周期必须为 10 或 60 秒)。 此机制有意采用近似值(最终一致,按位置计算)。
  • 如果绑定不存在或发生错误,则改用每个 isolate 的令牌桶,数值相同 (RATE_LIMIT_REQUESTS / RATE_LIMIT_PERIOD_SECONDS)。
  • 超出限制时会返回带有 Retry-After 的 HTTP 429;在 /mcp 上,响应正文是 JSON-RPC 错误(-32000),其他路径则使用 JSON 错误封套。/health 和 OPTIONS 不计入限制。响应包含 x-ratelimit-limit / x-ratelimit-period。
  • 请注意免费计划的上限:Workers Free 每个账户每天允许 100,000 个请求, 每个请求的 CPU 时间为 10 ms(限制)。 冷搜索约消耗 1-3 ms CPU(解析约 135 KB 的索引);热请求远低于 1 ms。

本地开发与测试

npm install
npm run dev                  # wrangler dev on http://127.0.0.1:8787 (no Cloudflare login needed)
npm test                     # unit tests + 2x wrangler dev + E2E (REST, MCP both eras, rate limit) + MCP Inspector CLI
npm run test:unit            # pure unit tests (no network)
BASE=https://<deployed-host> npm run test:e2e   # E2E against any deployment
DATA_BASE_URL=http://127.0.0.1:8089 npm test   # point the local Workers at another copy of the site

完整的 E2E 检查会根据数据情况调整:存在已发布条目时,会通过 REST 和 MCP 分别获取每种类型的一个条目;没有已发布条目时(全部为草稿),则检查空列表和 未找到路径。如需在发布任何内容前测试完整流程,请构建包含已发布草稿的站点 (例如,在站点仓库中运行 INCLUDE_DRAFTS=1 SITE_URL=http://127.0.0.1:8089 node scripts/build.mjs), 在该端口提供 dist/,并设置 DATA_BASE_URL 后运行 npm test。

scripts/test-local.sh 会在 :8797 启动常规 Worker,并在 :8798 启动低限制副本 (--env ratelimit-test,每 10 秒 5 个请求),运行 test/e2e.mjs,然后使用 @modelcontextprotocol/inspector --cli 检查服务器,分别采用默认的 legacy era 和 固定为 modern era 的配置(protocolEra: "modern")。

手动检查:

npx mcp-inspector --cli http://127.0.0.1:8787/mcp --transport http --method tools/list
npx mcp-inspector --cli http://127.0.0.1:8787/mcp --transport http --method tools/call \
  --tool-name search --tool-args-json '{"query":"browser automation","limit":3}'
curl -s http://127.0.0.1:8787/mcp -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_entry","arguments":{"id":"x402"}}}'

连接客户端

claude mcp add --transport http indexagentica https://mcp.indexagentica.com/mcp

JSON 配置(例如 Claude Code 的 .mcp.json;Claude Code 要求远程服务使用 "type": "http"):

{ "mcpServers": { "indexagentica": { "type": "http", "url": "https://mcp.indexagentica.com/mcp" } } }

其他客户端对 Streamable HTTP 使用各自的名称(Cline:"type": "streamableHttp";有些只接受 "url")。

配置(wrangler.toml [vars])

变量默认值含义
DATA_BASE_URLhttps://indexagentica.com获取 /api/index.json 的地址
CACHE_TTL_SECONDS600内存 / Cache API TTL
RATE_LIMIT_REQUESTS, RATE_LIMIT_PERIOD_SECONDS120, 60文档所述的限制 + 回退令牌桶(与 [ratelimits.simple] 保持一致)
ALLOWED_ORIGINS*以逗号分隔的浏览器调用方 Origin 允许列表
PUBLIC_BASE_URL请求来源GET / 中链接的规范基址
CF_ACCOUNT_ID(无)Analytics Engine SQL API(/stats)所用账户
STATS_API_SINCE, STATS_BEACON_SINCE2026-10-02T20:21:47Z, (部署时间)MCP/REST 和站点信标计数的起始时间(在 /stats 中显示为 since)
INTERNAL_IPS(密钥,可选)(无)以逗号分隔的 CIDR,请求计为内部流量
HIT_ORIGINShttps://indexagentica.com,https://www.indexagentica.com允许向 POST /hit 发送请求的来源

密钥:CF_ANALYTICS_TOKEN(Account Analytics Read),使用 wrangler secret put CF_ANALYTICS_TOKEN 设置。 绑定:ANALYTICS 和 HITS(Analytics Engine)、STATS_KV(KV)、RATE_LIMITER;cron 30 0 * * *。

部署

如需运行自己的副本,请按照 SELF_HOSTING.md 操作。DEPLOY.md 包含我们为 mcp.indexagentica.com 编写的部署说明(所需选项以及确切的 Cloudflare/GoDaddy 访问权限)。简而言之,我们的部署方式如下:

export CLOUDFLARE_ACCOUNT_ID=...   # from the Cloudflare dashboard
export CLOUDFLARE_API_TOKEN=...    # custom token, permissions in DEPLOY.md
npm run deploy:dry                 # build only
npm run deploy                     # -> https://mcp.indexagentica.com (custom domain)
                                   #    + https://indexagentica-mcp.indexagentica.workers.dev
BASE=https://mcp.indexagentica.com npm run test:e2e

列表请求

Agent 可通过 request_listing 工具或 POST /v1/requests 请求添加缺失的列表项(共用代码:src/requests.js)。 存储:Cloudflare D1 数据库 indexagentica-requests(绑定 REQUESTS_DB,架构位于 migrations/;使用 CI=1 npx wrangler d1 migrations apply indexagentica-requests --remote 应用迁移)。

  • 验证:wanted ≤120 个字符,reason ≤500 个字符,requester ≤60 个字符,url ≤300 个字符且仅允许 http(s)(不得包含凭据或空白字符); 拒绝控制字符和双向文本覆盖字符;拒绝未知字段;请求正文 ≤4 KiB;category 必须是当前类别 slug 或 other。
  • 去重:相同的 category 和相同的规范化 wanted(转为小写,去除重音符号和标点,合并空白字符, 去除 mcp/server/the/tool/skill/api 等填充词),或相同的 URL 主机名+路径(任意类别)→ 合并到现有请求中。 合并时增加一票,每个客户端最多一票(IP 哈希,IPv6 按 /64)。最多保留 10 条原因和请求者姓名(仅限管理员视图)。
  • 速率限制:每个客户端每小时 5 次、每天 20 次(以 IP(IPv6 按 /48)+ User-Agent 的 HMAC 为键),每个 IP 哈希每天 20 次;超限时返回 429 和 Retry-After。 此外还有全局每分钟 120 次的限制。提交记录会在 2 天后清除。
  • 隐私:绝不存储原始 IP,仅存储使用密钥 REQUESTS_IP_SALT 计算的 HMAC-SHA256(截断后)。
  • 状态:pending → verified → listed(带有 entry_id),或 rejected。公开输出(GET /v1/requests)会隐藏已拒绝的条目, 不包含原因/请求者信息,且仅对已验证/已列出的条目包含 url。来自我们自有 Agent 的请求会标记为 internal(管理员视图)。
  • 内容维护者:管理路由需要 Authorization: Bearer <REQUESTS_ADMIN_TOKEN>(密钥;仅在共享机器上保留本地副本,绝不提交)。 网站仓库包含 scripts/requests-review.mjs(列出 / 验证 / 标记为已列出 / 拒绝 / 删除)以及 content/README.md 中的工作流。 未经验证的内容不会列出。

布局

src/index.js      router, CORS, JSON errors, REST endpoints, rate-limit gate
src/mcp.js        stateless dual-era MCP JSON-RPC handler
src/tools.js      tool definitions (schemas) + implementations shared with REST
src/search.js     scoring / filtering
src/data.js       fetch + cache of /api/index.json
src/ratelimit.js  Workers rate limiting binding + in-isolate fallback
src/openapi.js    OpenAPI document for the REST API
src/analytics.js  per-request usage logging to Workers Analytics Engine (no-op without the binding)
src/ua.js         human (browser) vs agent User-Agent classification
src/hits.js       POST /hit: site beacon validation + logging (dataset indexagentica_hits)
src/downloads.js  GET/HEAD /skills/<id>.zip|SKILL.md: direct download count + 302 to the site
src/stats.js      GET /stats: Analytics Engine SQL aggregation, KV daily rollup (cron), caching
src/internal.js   internal-traffic rules (header, UA, optional IP ranges)
src/requests.js   listing requests: validation, dedupe, votes, rate limits, D1 queue, admin
migrations/       D1 schema for indexagentica-requests
test/             unit tests, E2E script, Inspector config
docs/             proposed copy for llms.txt, /agents and the directory listing

许可证:代码采用 MIT 许可证;目录内容采用 CC BY 4.0 许可证。

注册表元数据

  • server.json:官方 MCP Registry 条目(com.indexagentica/mcp,架构 2025-12-11),使用 mcp-publisher validate 验证。发布时使用 HTTP 域名验证,通过 https://indexagentica.com/.well-known/mcp-registry-auth;端点上线后,需单独手动完成此步骤。
  • glama.json:Glama 所有权声明(维护者 Drudley)。
  • llms-install.md:供 Cline 等由 Agent 驱动的安装器使用的安装说明。

许可证

代码遵循 MIT 许可证。工具提供的目录内容遵循 CC BY 4.0 许可证。

评论

支持 Markdown

第一次接触 MCP?

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

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