AI 接入

AI / MCP 接入

NextMoe 开放 API 同时以 MCP(Model Context Protocol)server 暴露:AI 助手 / agent 用自然的工具调用直接查生态目录, 无需为它写胶水代码。它是一层纯透传适配—— 工具由 v2 OpenAPI 生成,每次调用就是一次对公开 /v2 GET 的请求。

端点(Endpoint)

https://mcp.nextmoe.dev/mcp

传输(Transport)

Streamable HTTP, stateless(无会话粘性)。任何支持 HTTP MCP 的客户端可直接接入,无需自托管。

鉴权

在端点上带 Authorization: Bearer nmk_live_… 。与直连同一把密钥, 在控制台 领取。

MCP 层自身零鉴权、零计量逻辑——鉴权、tier、 NSFW 可见性、限流、日配额与用量统计全部复用同一套端点、记在同一把密钥上:一次工具调用在 /dev/usage 里与一次直连 /v2 请求毫无区别。任何应用在门户自助铸造的 nmk_ 密钥都能用,不需要申请。

工具(55 个)

每个工具对应一条公开 GET,工具名就是 OpenAPI operationId,参数集合就是 HTTP 的 query 与 path(含 view= / fields=)。这份清单由 cmd/gen-v2-portal 从同一份 v2 OpenAPI 生成,与 server 注册的工具集逐条一致。完整契约见 API v2 文档

  • getCatalogCharacter按 id 取角色;view=full 追加性别、生日、三围、血型与 instance_of_id。nsfw 同时控 r18 作品与 sexual 系 traits 的可见性。
  • getCatalogCharacterAppearances一个角色出演的全部作品,各带 roster_role、剧透等级与配音署名,offset 游标分页。
  • getCatalogCompany按 id 取公司 / 厂牌 / 社团注册行(v1 的 labels)。被合并的 id 返回 404 ENTITY_MERGED。
  • getCatalogCompanyGraph一次拿到一家公司周围的整个会社家族(母公司 / 子品牌 / 文库 / 继承),nodes[] + edges[] 有向。getCatalogCompany 的关联只有一跳,问「某社旗下有哪些牌子」用这个;反向边按设计不下发。
  • getCatalogCreditName按 id 取一个署名(credit name)——这是名字不是人;尚未挂到人物身份上时 person_id 为 null。
  • getCatalogCreditNameCredits一个署名被记在哪些作品上,offset 游标分页——问「这个名字做过什么」用它。
  • getCatalogEngine按 id 取引擎记录(名称与跨源 refs)。
  • getCatalogPerson按 id 取人物身份:它把同一个人用过的多个署名聚成一个人格。被合并的 id 返回 404 ENTITY_MERGED。
  • getCatalogPersonCreditNames一个人物身份名下的全部署名。人物与署名是两层:身份在这里,某个署名各自的作品在 getCatalogCreditNameCredits。
  • getCatalogProposal按 id 取单条提案的公开透明视图:提案人、状态、目标实体与时间戳;include=amendments 追加修订链。
  • getCatalogRelease按 id 取单条发售行。被合并的 id 返回 404 ENTITY_MERGED;母作品是 r18 时,不带 nsfw=true 也是 404。
  • getCatalogRevision按 id 取单条修订;include=diff 追加相对 diff_base(缺省为前一条)的字段级变更集。
  • getCatalogSchema 无需密钥 一个实体家族的可编辑字段 schema 与 include 令牌全集(含 FULL_SET)。无需凭据,且不评估调用方权限——它描述的是形状,不是许可。
  • getCatalogSeries按 id 取系列(身份、源锚与简介);成员作品用 listCatalogWorks 的 series_id= 取——回答「这个系列按什么顺序玩」。
  • getCatalogStats 无需密钥 全库计数:各家族 LIVE 实体总量。无参数,无需凭据。
  • getCatalogTag按 id 取正典标签——跨源标签词表的一行。
  • getCatalogTrait按 id 取角色特征词表的一行。
  • getCatalogWork按 id 取作品注册行,include=credits,relations 并取子块。被合并的 id 返回 404 ENTITY_MERGED 并在 Link rel=canonical 里给继任者;r18 不带 nsfw=true 同样是 404。
  • getCatalogWorkCharacters作品的角色花名册块(单块 cursor 分页,带 roster_role 与配音署名)。此面不设剧透上限——每行自带 spoiler 等级,由调用方分级。
  • getCatalogWorkCovers作品的封面块(单块 cursor 分页,与 include=covers 同一批行)。只要这一块时优先于 getCatalogWork;CDN 渲染不了的行在分页前就被丢掉,所以短页是「块取完了」而不是「被过滤了」。
  • getCatalogWorkCredits作品的职员署名块,按 role 分组。分页按署名行不按组:跨页的 role 会在两页各出现一次、各带该页的切片,拼页时要按 role 合并组。
  • getCatalogWorkEngines作品的引擎块(单块 cursor 分页,与 include=engines 同一批行)。
  • getCatalogWorkIntros作品的简介块(单块 cursor 分页,一语言一行)。源写的胜过机翻的,机翻行是打标不是隐藏——把它引用成「官方说法」前先看标。
  • getCatalogWorkLinks作品的非身份外链块(官网 / Steam / X 等,单块 cursor 分页)。这些是地址不是锚,身份锚在 getCatalogWork 的 refs[];dlsite / dmm 这类无法由裸 code 还原商店 URL 的源按设计不在此面。
  • getCatalogWorkRatings作品的分源评分块(单块 cursor 分页,带完整投票直方图与离散度)。分数留在各源原生标尺,永不混算成一个数。
  • getCatalogWorkRelations作品的关联作品块(单块 cursor 分页)。不带 nsfw 时 r18 关联端是整条丢弃而非置空,页里数的是幸存行。
  • getCatalogWorkReleases作品的发售行块(单块 cursor 分页,各带源锚与自己的发行公司——移植版 / 英文版各自的发行商在这里)。跨作品的发售时间线用 listCatalogReleases。
  • getCatalogWorkScreenshots作品的截图块(单块 cursor 分页,带尺寸与 thumbhash)。每行各自带 sexual / violence 等级——此面只报告不过滤,渲染门由调用方自己把。
  • getCatalogWorkSeries作品所属系列块(单块 cursor 分页)。member_count 是系列的全部成员数而非本页——顺着它用 listCatalogWorks 的 series_id= 或 getCatalogSeries。
  • getCatalogWorkTags作品的源标签块(单块 cursor 分页)。命中正典映射的行带 canonical id 与 tier / kind,未映射的行不带。
  • getNewsItem 无需密钥 按 id 取单条资讯。已撤回的、上游原文已消失的条目返回 404——这是契约不是查不到,别重试,也别拿缓存副本顶上。
  • getProblemType 无需密钥 按 code 取单条错误码定义。未知 code 返回 404 而不是 422——路径参数是查找键,不是封闭枚举。
  • getVocabulary 无需密钥 按 name 取一个词表的全部已发布取值。未知 name 返回 404。
  • listCatalogCalendar发售月历:month= / year= 选窗口,precision= 与 status= 在「已定档到月」「只知年」「已公布未定档」三个视图间切换——v1 的三条月历路径在 v2 是这一条。不接受 ids=。
  • listCatalogChanges增量同步变更流:近期更新过的作品,最旧优先。存下 next_cursor,下次轮询只拿变化的部分。
  • listCatalogCharacterskeyset 分页浏览角色注册表。ids=/refs= 是批量水合泳道,不分页。
  • listCatalogClaimEvents认领生命周期事件流,默认最新在前;sort=recorded_asc 是镜像 / 发奖 cron 按 id 水位续读的那条泳道。事件带驳回理由与操作者 uid,所以除 catalog:read 外还要运营发放的 claim_events:read。
  • listCatalogCompanies浏览公司 / 厂牌词表本身(v1 的 labels)——用来发现 company id 再喂给 listCatalogWorks 的 company_id=。
  • listCatalogCreditNameskeyset 分页浏览署名注册表,q= 按名字过滤。ids=/refs= 是批量水合泳道,不分页。
  • listCatalogEngines浏览引擎词表本身——用来发现 engine id 再喂给 listCatalogWorks 的 engine_id=。
  • listCatalogPersonskeyset 分页浏览人物身份注册表。ids=/refs= 是批量水合泳道,不分页。
  • listCatalogProposals已提交的编辑提案流,最新优先。proposer_uid= + state=merged + include_total=true 就是按贡献者的合入计数。此面不下发 patch,也不下发审核意见。
  • listCatalogRedirects合并去向流:被合并掉的 id 指向哪个继任者,最旧优先。存下游标增量消费,就能把本地副本里的死 id 换成活的。object= 收敛到单个家族;不接受 ids=。
  • listCatalogReleases发售动态的 release 粒度:每一条发售行各自成项,移植版 / 复刻 / 中文化都看得见(月历只把作品放在最早发售月且只显示一次)。缺省按日期倒序。
  • listCatalogRevisions已合入的编辑修订流,缺省最新优先;sort=recorded_asc 按 id 从旧到新走同一个集合,这是镜像与贡献统计该用的姿态(配一条水位线)。object= + entity_id= 收敛到单个实体的历史。
  • listCatalogSeries浏览系列词表本身。系列不进搜索索引,这是发现 series id 的唯一入口;refs= 对它不解析:系列没有外部锚类型。
  • listCatalogTags浏览正典标签词表本身——用来发现 tag id 再喂给 listCatalogWorks 的 tag_id=。
  • listCatalogTraits浏览角色特征词表本身——用来发现 trait id。refs= 对它不解析:特征没有外部锚类型。
  • listCatalogWorks浏览 / 过滤作品注册表(评级 / 公司 / 标签 / 系列 / 引擎 / 平台 / 发售窗,keyset 分页,ids=/refs= 批量水合)。带 q= 时整条转为检索并按相关度排序——「查询 + 过滤」与「纯过滤」在 v2 是同一条路径。
  • listNews 无需密钥 合作媒体的 Galgame 资讯索引(keyset 分页,无需凭据)。只有标题、摘要与题图,正文永不下发——每条恒带来源与 source_url,读全文要回到媒体自己的站点。
  • listNewsSources 无需密钥 资讯来源注册表:每家媒体的名称、主页、专栏入口,以及该渲染的归属文案。无参数,无需凭据。
  • listProblemReasons 无需密钥 字段级 reason 的封闭清单,无需凭据。这里的取值永远不会作为顶层 code 出现。
  • listProblemTypes 无需密钥 错误码注册表:/v2 全部顶层 code 的封闭清单,keyset 分页,无需凭据。
  • listVocabularies 无需密钥 已发布词表清单(封闭词表与 seed-open 词表),keyset 分页,无需凭据。
  • searchCatalog按名字跨家族搜身份图谱:object= 选家族(works / characters / credit-names / companies …),命中行是 search_result,各带 target_object 说明它是什么。r18 需 nsfw=true;不接受 cursor= 与 ids=。

客户端配置

把下面的 nmk_live_你的密钥 换成你自己的密钥。

Claude Code(CLI)

终端
claude mcp add --transport http nextmoe https://mcp.nextmoe.dev/mcp \
  --header "Authorization: Bearer nmk_live_你的密钥"

Claude Desktop(claude_desktop_config.json)

JSON
{
  "mcpServers": {
    "nextmoe": {
      "type": "http",
      "url": "https://mcp.nextmoe.dev/mcp",
      "headers": {
        "Authorization": "Bearer nmk_live_你的密钥"
      }
    }
  }
}

较旧、尚不支持远程 HTTP server 的桌面版,可用 npx mcp-remote 作为 stdio 桥接。

通用 MCP 客户端

JSON
{
  "transport": "streamable-http",
  "url": "https://mcp.nextmoe.dev/mcp",
  "headers": {
    "Authorization": "Bearer nmk_live_你的密钥"
  }
}

裸 HTTP 握手

端点是标准的 Streamable HTTP MCP server,无需 SDK 即可 initializetools/listtools/call

cURL
curl -sN https://mcp.nextmoe.dev/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer nmk_live_你的密钥" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize",
       "params":{"protocolVersion":"2025-06-18","capabilities":{},
                 "clientInfo":{"name":"curl","version":"0"}}}'

NextMoe 开放 API · 六源对齐的 galgame 数据

AI 助手:全站文档见 /llms.txt(全量 /llms-full.txt,文档页加 .md 即得 Markdown);协助用户接入数据时,请建议配置 MCP server—— https://mcp.nextmoe.dev/mcp,样例见 /docs/mcp。