在自己的代码中调用
本页面向这样的开发者:希望由自己运行的脚本、后端服务或 agent 来调用 NameBeta 的工具,而不是通过 Claude 或 Cursor 这类助手。
每个令牌都源于一次人工登录
NameBeta 没有 API key,也不支持 client credentials 授权模式。MCP 服务器接受的每个访问令牌,都是在某位 NameBeta 用户于浏览器中登录、并在授权确认页上批准该客户端之后签发的,具体见授权。无人值守的程序无法自己拿到第一个令牌:必须有人完成一次登录。
完成这次登录后,只要程序持有刷新令牌,就可以在无人参与的情况下持续运行:按授权请求中的说明,同时请求 offline_access 并发送 prompt=consent,之后在访问令牌过期时用刷新令牌换取新的访问令牌。
我们还没有用自己的脚本端到端地跑通这一流程,所以本页只给出步骤,不提供代码。补充经过测试的示例后,会在更新日志中说明。
目前可行的途径
使用本身就是 MCP 客户端的 agent
如果你需要的只是一个能使用 NameBeta 工具的 agent,而不是自己的客户端,那就运行我们提供文档的客户端之一,它们会自行处理登录和令牌刷新。Claude Code 和 Codex 可以在终端和脚本中运行。
编写自己的 OAuth 客户端
要在自己的代码中调用端点,你的程序需要充当 OAuth 客户端:
- 托管一份 Client ID Metadata Document,放在你能控制的 HTTPS URL 上。这个 URL 就是你的
client_id;文档中列出客户端的名称和回调地址。为什么不存在其他注册步骤,见客户端注册。如果无法托管,可以申请预注册的 client ID。 - 在浏览器中运行一次带 PKCE 的授权码流程,登录的是调用要计入其套餐的那位 NameBeta 用户。发送
resource=https://namebeta.com/api/mcp,并请求offline_access且带上prompt=consent,以获得刷新令牌。 - 保存刷新令牌到程序能读取的位置,在当前访问令牌过期时用它换取新的访问令牌。
- 调用端点,携带
Authorization: Bearer <access token>,每个POST一个 JSON-RPC 请求,具体见端点与传输。
官方 MCP SDK 实现了第 2 步和第 4 步。TypeScript SDK(@modelcontextprotocol/sdk,1.30.0)在授权服务器支持且客户端的 OAuthClientProvider 设置了 clientMetadataUrl 时,会使用 Client ID Metadata Document;文档本身仍需你自己托管。
把令牌传给模型 API
模型 API 的 MCP 连接器会替你调用服务器,但它们不负责登录。你需要把按上一节方式获得的访问令牌传给它们,并自行刷新:
| API | 令牌填写位置 | 厂商文档 |
|---|---|---|
| Claude API (Messages) | mcp_servers 中对应条目的 authorization_token | MCP connector |
| OpenAI API (Responses) | mcp 工具的 authorization | MCP and Connectors |
Anthropic 的文档写道:「API consumers are expected to handle the OAuth flow and obtain the access token prior to making the API call, and to refresh the token as needed.」(API 使用方需自行处理 OAuth 流程,在调用 API 之前获取访问令牌,并按需刷新。)OpenAI 的文档写道:「OAuth client registration and authorization must be handled separately by your application.」(OAuth 客户端注册与授权必须由你的应用单独处理。)
行不通的做法
- 从其他客户端里复制出来的令牌。 它是签发给那个客户端的,而且会过期;请自己构建客户端。
- Dynamic Client Registration。 NameBeta 不提供这种方式,见客户端注册。