Token导航 LogoToken导航TokenDH.com
MCP Registry API Client Poc logo
安全风控未说明官方级别未说明来源级核验

MCP Registry API Client Poc

MCP Server

一个基于Go的概念验证客户端,演示了完整的OAuth 2.1授权流程,包括动态客户端注册(DCR),用于访问MCP注册表API。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
GoClaude安全Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

g-linville

提供方

g-linville

最后核验

2026/5/17 20:23

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

MCP注册表OAuth客户端-概念证明

一个基于Go-的概念验证客户端,它演示了完整的OAuth 2.1授权流程,带有动态客户端注册(DCR),用于访问MCP注册表API。

注意:整个repo都是用Claude Code生成的。该代码尚未经过彻底的安全审查。请勿在生产环境中使用。仅与本地运行的服务器一起使用。

特性

  • 完全支持OAuth 2.1:使用PKCE实现完整的授权代码流(S256)
  • 动态客户端注册:使用RFC 7591自动向OAuth服务器注册
  • OAuth发现:通过RFC 8414发现授权服务器元数据
  • 本地回拨服务器:处理上的OAuth回调 localhost:3000
  • MCP注册API:通话 /v0/servers 具有承载令牌身份验证的端点
  • 安全:实现CSRF保护的状态参数PKCE,并遵循MCP授权规范

建筑

.
├── main.go              # CLI orchestration and main flow
├── oauth/
│   ├── pkce.go         # PKCE code verifier/challenge generation
│   ├── discovery.go    # OAuth server discovery (RFC 8414)
│   ├── client.go       # OAuth client with DCR and token exchange
│   └── callback.go     # Local HTTP server for OAuth callbacks
└── registry/
    └── client.go       # MCP Registry API client

需求

  • 转到1.21或更高版本
  • OAuth服务器正在运行 http://localhost:8080 与:

- /.well-known/oauth-authorization-server/.well-known/openid-configuration - 动态客户端注册端点 - S256方法支持PKCE - mcp-registry:read 范围

构建

go build -o mcp-registry-client

./mcp-registry-client

OAuth流

应用程序执行以下步骤:

  1. 发现:从已知端点获取OAuth服务器元数据
  2. PKCE 一代:创建加密随机码验证器(128个字符)和S256挑战
  3. 客户注册:使用RFC 7591动态注册为OAuth客户端
  4. 回拨服务器:在端口3000上启动本地HTTP服务器
  5. 授权:打开浏览器,使用PKCE和状态参数访问授权URL
  6. 用户授权:用户进行身份验证并授予同意
  7. 回调:通过回调接收授权码,验证状态参数
  8. 代币交换:使用PKCE验证器交换访问令牌的授权码
  9. API调用:通话 /v0/servers 持票人代币
  10. 输出:将JSON响应打印到stdout并退出

配置

此PoC的所有配置都是硬编码的:

  • 注册表URL: http://localhost:8080
  • 回拨端口: 3000
  • 回拨路径: /callback
  • 范围: mcp-registry:read

要修改这些值,请在中编辑常量 main.go:

const (
    registryURL  = "http://localhost:8080"
    callbackPort = 3000
    callbackPath = "/callback"
    scope        = "mcp-registry:read"
)

安全功能

  • PKCE(S256):使用SHA-256进行代码交换的强制证明密钥
  • 状态参数:回调时验证随机CSRF令牌
  • 持有者令牌:访问令牌仅在Authorization标头中发送(从不在URL中发送)
  • 资源参数:在授权和令牌请求中包含规范注册表URI
  • 精确重定向URI匹配:验证回调URL是否与注册匹配

MCP授权规范合规性

此实施遵循 MCP授权规范:

  • ✓ 具有强制PKCE的OAuth 2.1(S256方法)
  • ✓ RFC 8414 OAuth授权服务器元数据发现
  • ✓ RFC 7591动态客户端注册
  • ✓ RFC 8707资源指示器(resource 参数)
  • ✓ CSRF保护状态参数
  • ✓ 公共客户端(无客户端秘密)
  • ✓ 承载令牌身份验证

输出示例

MCP Registry OAuth Client PoC
==============================
Registry URL: http://localhost:8080
Scope: mcp-registry:read

Step 1: Discovering OAuth authorization server...
✓ Found authorization server: http://localhost:8080
  - Authorization endpoint: http://localhost:8080/oauth/authorize
  - Token endpoint: http://localhost:8080/oauth/token
  - Registration endpoint: http://localhost:8080/oauth/register

Step 2: Generating PKCE challenge...
✓ Generated PKCE challenge (method: S256)

Step 3: Registering OAuth client...
✓ Client registered with ID: abc123def456

...

Results:
========
{
  "servers": [
    {
      "server": { ... },
      "_meta": { ... }
    }
  ],
  "metadata": {
    "count": 10
  }
}

故障排除

浏览器不会自动打开

如果浏览器无法打开,应用程序将打印授权URL。手动复制并粘贴到浏览器中。

端口3000已在使用中

更改 callbackPort 常数in main.go 并重建。

找不到OAuth服务器

确保注册表正在运行 http://localhost:8080 并公开OAuth发现端点。

许可证

这是一个概念验证演示。请自行决定使用。

目录标签

目录标签

GoClaude安全OAuth2.1本地部署动态客户端注册PKCEAPI认证概念验证

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

oauth

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明oauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP