使用说明
Mcpd-MCP动态客户端注册守护进程
Mcpd是一个。NET 10 OAuth2为MCP客户端提供的动态客户端注册服务。
当前的实现支持RFC 7591风格的注册、RFC 7592风格的具有注册访问令牌的客户端自我管理,以及 client_credentials 代币发行。
当前范围
此存储库当前实现 客户端级注册和范围. 服务器范围的授权和回调白名单已计划好,但尚未在代码中实现。
建筑
清洁建筑,包括四个项目:
src/
|- Mcpd.Domain/ # Entities, value objects, interfaces
|- Mcpd.Application/ # Use cases + in-process component interfaces/implementations
|- Mcpd.Infrastructure/ # External adapters (EF Core persistence repositories)
`- Mcpd.Api/ # FastEndpoints API + preprocessors
依赖流:
Mcpd.Domain没有项目引用。Mcpd.Application -> Mcpd.DomainMcpd.Infrastructure -> Mcpd.Domain(应用程序通过域合同使用的存储库实现)Mcpd.Api -> Mcpd.Application和Mcpd.Api -> Mcpd.Infrastructure
堆栈:
- .NET 10/C#
- 快速端点
- 中介(源生成的处理程序)
- EF核心内存
- Argon2d秘密散列
- RSA签名的JWT(
RS256)JWKS出版 - 流式验证
入门指南
先决条件:。NET 10 SDK(项目目标 net10.0).
dotnet build Mcpd.sln
dotnet run --project src/Mcpd.Api
如果你在测试时想要一个固定的本地URL:
dotnet run --project src/Mcpd.Api --urls http://localhost:5000
API终点
FastEndpoints路线位于 /oauth JSON使用 snake_case.
注册(RFC 7591/7592样式)
| 方法 | 路径 | 身份验证 | 描述 |
|---|---|---|---|
| 职位 | /oauth/register |
无 | 注册客户端 |
| 得到 | /oauth/register/{clientId} |
持有者注册访问令牌 | 读取注册 |
| PUT | /oauth/register/{clientId} |
承载者注册访问令牌 | 更新注册元数据 |
| 删除 | /oauth/register/{clientId} |
持有人注册访问令牌 | 撤销注册 |
代币
| 方法 | 路径 | 身份验证 | 描述 |
|---|---|---|---|
| 职位 | /oauth/token |
client_secret_post 或 client_secret_basic |
发放JWT访问令牌 |
令牌请求详细信息:
grant_type必须client_credentials- 凭据可能来自表单字段(
client_id,client_secret)或HTTP基本身份验证 scope是可选的,必须是已注册作用域的子集resource(RFC 8707)或audience可以作为象征性受众提供
管理员
| 方法 | 路径 | 身份验证 | 描述 |
|---|---|---|---|
| 职位 | /oauth/admin/clients/{clientId}/rotate-secret |
X-Admin-Key |
旋转客户端机密 |
发现/众所周知
| 方法 | 路径 | 描述 |
|---|---|---|
| 得到 | /.well-known/jwks.json |
公共签名密钥 |
| 得到 | /.well-known/oauth-authorization-server |
授权服务器元数据 |
| 得到 | /.well-known/openid-configuration |
OIDC样式元数据别名 |
示例
注册:
curl -s -X POST http://localhost:5000/oauth/register \
-H "Content-Type: application/json" \
-d '{
"client_name": "my-app",
"redirect_uris": ["https://app.contoso.com/oauth/callback"],
"grant_types": ["client_credentials"],
"token_endpoint_auth_method": "client_secret_post",
"scope": ["read", "write"]
}'
发行令牌:
curl -s -X POST http://localhost:5000/oauth/token \
-d "grant_type=client_credentials" \
-d "client_id=<CLIENT_ID>" \
-d "client_secret=<CLIENT_SECRET>" \
-d "scope=read" \
-d "resource=code-assist"
配置
看 src/Mcpd.Api/appsettings.json.
Mcpd 本节目前包括:
IssuerSigningKeyPath(可选PEM私钥路径)DefaultTokenLifetimeMinutesDefaultSecretLifetimeDaysAdminApiKeyAllowOpenRegistrationRequireHttpsCallbacks
RateLimiting 本节包括 Registration 和 Token 窗口/许可设置。
测试
dotnet test Mcpd.sln
存储库包括域、应用程序、基础结构和API集成/众所周知的行为的测试项目。
许可证
看 LICENSE.
