SuperAPI AI 工具集

mcp-server

编程与开发

查看项目

更新于 10-30 06:48

技能介绍

该技能是一份实践指南,教你如何把远程 MCP 服务器开放给外部智能体使用,并顺利完成目录上架,目标是让下一个产品不必再重新摸索一遍。文档内容基于同一技术栈(Next.js + Supabase + Clerk + Netlify)上的若干产品经验,文中提到一个带鉴权的问答产品、一个 stdio 包加匿名 ChatGPT 插件,以及一个明确不做未鉴权暴露的监控产品,但这些产品仅作为示例出现。

用途与适用范围

该技能面向以下场景:在 Web 产品上线远程 MCP 服务器或工具之前、为其加入 OAuth 之前,或准备将其列入目录之前。它强调一次做对,并包含测试。

按产品分别记录的信息不放在本技能中,而应放在各产品自己的仓库里,包括:API 契约(每条 REST 路由与 MCP 工具,接受什么、返回什么、拒绝什么);分发记录(每个上架项一行,记录状态、日期与更新方式,以及每个已验证客户端及其验证日期和调用内容);决策日志(有真实选项的带日期决策及其重新开启条件);待办清单(被推迟的工作及重新开启的触发条件)。Clerk 中 OAuth 的具体设置也不在本技能内,而在 clerk-production 的 MCP OAuth 一节,写路由前应先读该节。

约束优先级

文档给出三层优先级:首先是 saas-authorization,工具即路由,调用方由三个函数解析,由确定性代码决定其可执行的操作,工具返回的由人撰写的内容一律视为不可信文本;其次是 clerk-production 中 MCP OAuth 的每一项设置,需按实例应用并复查;再次是本技能,覆盖服务器、工具、目录、客户端与包;同时目录自身的当前页面优先级最高,提交前必须重新阅读并记录阅读日期,若与本技能冲突以目录页面为准。

须先做出的决策

文档列出若干需在决策日志中先行确定的选项:是否允许任何未登录调用(默认否,每次调用都需鉴权,包括 initialize,使用 Clerk OAuth 或工作区 API token;匿名入口可带来无账号用户,但成本较高);谁可以连接(默认由签发新 API token 的权限准入,并通过三个函数在每次调用时检查);智能体绝不能做什么(以代码中的书面清单为准,并在说明与 README 中写明);从智能体发起的注册是否必须可用(若首个用户可能通过智能体到达,则应可用)。此外,/api/mcp 或 /mcp 路径需一次选定,OAuth audience 与两份 protected-resource 文档都需指向该确切 URL。

每次变更都要满足的规则

描述、标题与服务器说明属于产品文案,每句话都是一个声明,目录会对其评分并展示,智能体仅凭这些选择工具,因此应像代码一样审查。每个参数需有描述,每个工具需有 outputSchema,并用测试对照真实处理器验证。每个工具需带标题及目录要求的提示项(如 readOnlyHint、destructiveHint)。tools/list 有大小预算,需在测试中固定。所有调用(含被拒绝的)都需记录,服务器上架前就要开始。只有记录到与本产品之间成功路径的客户端才算已验证。工具面变更(含描述与 schema)会同时影响配套包与目录。所有内容从所有者账号发布,上架前需确认 CLI 登录的账号。

实施阶段

按顺序为:先写 REST 函数,使 MCP 与 REST 调用同一模块;再实现路由(无状态 Streamable HTTP、挑战、三层错误、限制、日志);然后是工具及其两项测试;接着按 clerk-production 完成 OAuth 并用真实授权与真实客户端验证;再编写文档(API 契约、面向开发者的公开页面并由测试与代码绑定、分发记录);随后发布并经过评审轮次;最后在生产上线后完成目录上架与配套包。

验收标准与文件

验收标准为:真实客户端连接已部署服务器、登录、列出工具并以成员身份调用其中一个,且测试覆盖每个工具的权限检查。文档附带五个参考文件:server.md(谁可调用、匿名入口成本、首次调用、路由、错误与传输、限制、日志、验证)、tools.md(命名、工具选择、描述、参数、结果、output schema、注解、说明、两项测试)、directories.md(各目录与注册表的要求、评分与保持更新)、clients.md(各客户端连接方式与验证要点)、companion-repo.md(公开仓库与 stdio 包的布局、README、规则、统一版本与发布流程)。

限制

该技能为通用方法文档,不提供可直接运行的服务端实现代码,也不提供 Clerk 设置细节(另见 clerk-production)。文中涉及平台或目录的行为均带日期,因其可能变化,需以最新页面为准。产品专属事实(上架状态、版本、已验证客户端等)应留在各产品仓库,不应写入本技能。