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 的客户端可直接接入,无需自托管。
鉴权
不带密钥也能用:除 listCatalogClaimEvents 外的工具都按你自己的 IP 限流(默认每分钟 30 次、每天 1,000 次)。要更高的额度,就在端点上带 Authorization: Bearer nmk_live_… 。与直连同一把密钥, 在控制台 领取。
MCP 层自身零鉴权、零计量逻辑——鉴权、tier、 NSFW 可见性、限流、日配额与用量统计全部复用同一套端点、记在同一把密钥上:一次工具调用在 /dev/usage 里与一次直连 /v2 请求毫无区别。任何应用在门户自助铸造的 nmk_ 密钥都能用,不需要申请。不带密钥时,MCP 把你的来源地址转交给 API,额度按你自己的 IP 计,不会和其他 MCP 用户共用一个桶。
工具(60 个)
每个工具对应一条公开 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(缺省为前一条)的字段级变更集。getCatalogRole无需密钥 按 id 取署名职务注册表的一行。未知 id 为 404。getCatalogSchema无需密钥 一个实体家族的可编辑字段 schema 与 include 令牌全集(含 FULL_SET)。无需凭据,且不评估调用方权限——它描述的是形状,不是许可。getCatalogSeries无需密钥 按 id 取系列(身份、源锚与简介);成员作品用 listCatalogWorks 的 series_id= 取——回答「这个系列按什么顺序玩」。getCatalogStats无需密钥 全库计数:各家族 LIVE 实体总量。无参数,无需凭据。getCatalogTag无需密钥 按 id 取正典标签——跨源标签词表的一行。getCatalogTagExclusion无需密钥 解析一组排除 tag:给 exclude_tag_id / exclude_tag_tree,返回展开后的 tag id 与带有其中任一 tag 的全部作品 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——路径参数是查找键,不是封闭枚举。getRating按评分 id 取这一条。一个人、一部作品、所有 NextMoe 站点只有一条评分;没有这条,包括已删除的,是 404。需要应用密钥,或带 catalog:read 的用户令牌。getVocabulary无需密钥 按 name 取一个词表的全部已发布取值。未知 name 返回 404。listCatalogCalendar无需密钥 发售月历:month= / year= 选窗口,precision= 与 status= 在「已定档到月」「只知年」「已公布未定档」三个视图间切换——v1 的三条月历路径在 v2 是这一条。不接受 ids=。listCatalogChanges无需密钥 增量同步变更流:近期更新过的作品,最旧优先。存下 next_cursor,下次轮询只拿变化的部分。listCatalogCharacters无需密钥 keyset 分页浏览角色注册表。ids=/refs= 是批量水合泳道,不分页。listCatalogClaimEvents认领生命周期事件流,默认最新在前;sort=recorded_asc 是镜像 / 发奖 cron 按 id 水位续读的那条泳道。事件带驳回理由与操作者 uid,所以除 catalog:read 外还要运营发放的 claim_events:read。listCatalogCompanies无需密钥 浏览公司 / 厂牌词表本身(v1 的 labels)——用来发现 company id 再喂给 listCatalogWorks 的 company_id=。listCatalogCreditNames无需密钥 keyset 分页浏览署名注册表,q= 按名字过滤。ids=/refs= 是批量水合泳道,不分页。listCatalogEngines无需密钥 浏览引擎词表本身——用来发现 engine id 再喂给 listCatalogWorks 的 engine_id=。listCatalogPersons无需密钥 keyset 分页浏览人物身份注册表。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= 收敛到单个实体的历史。listCatalogRoles无需密钥 浏览署名职务注册表本身(全表约 231 行)——key 与署名组的 role_key 相接。refs= 对它不解析:职务没有外部锚类型。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 分页,无需凭据。listRatings一个人在一部作品上的评分,全 NextMoe 站点共用一条。work_id= 或 user_id= 至少给一个,两个都给就是这个账号对这部作品的那一条;按创建时间从新到旧。需要应用密钥,或带 catalog:read 的用户令牌。listVocabularies无需密钥 已发布词表清单(封闭词表与 seed-open 词表),keyset 分页,无需凭据。searchCatalog无需密钥 按名字跨家族搜身份图谱:object= 选家族(works / characters / credit-names / companies …),命中行是 search_result,各带 target_object 说明它是什么。r18 需 nsfw=true;不接受 cursor= 与 ids=。
客户端配置
下面的配置都不带密钥,粘贴就能用,额度按你自己的 IP 计(默认每分钟 30 次、每天 1,000 次)。量大了再按下方「带上密钥」加一个请求头。
Claude Code(CLI)
claude mcp add --transport http nextmoe https://mcp.nextmoe.dev/mcpClaude Desktop(claude_desktop_config.json)
{
"mcpServers": {
"nextmoe": {
"type": "http",
"url": "https://mcp.nextmoe.dev/mcp"
}
}
} 较旧、尚不支持远程 HTTP server 的桌面版,可用 npx mcp-remote 作为 stdio 桥接。
通用 MCP 客户端
{
"transport": "streamable-http",
"url": "https://mcp.nextmoe.dev/mcp"
}带上密钥
用量超过匿名额度,或者你的 MCP 客户端跑在云端(同一家厂商的用户共用它机房的出口 IP,也就共用那一份匿名额度)时,加一个 Authorization 请求头。密钥在 控制台 自助铸造。Claude Code:
claude mcp add --transport http nextmoe https://mcp.nextmoe.dev/mcp \
--header "Authorization: Bearer nmk_live_你的密钥"JSON 配置在 server 条目里加上:
"headers": {
"Authorization": "Bearer nmk_live_你的密钥"
}裸 HTTP 握手
端点是标准的 Streamable HTTP MCP server,无需 SDK 即可 initialize → tools/list → tools/call。
curl -sN https://mcp.nextmoe.dev/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize",
"params":{"protocolVersion":"2025-06-18","capabilities":{},
"clientInfo":{"name":"curl","version":"0"}}}'