关于 MCP with OAuth
MCP with OAuth 是一个基于 Spring 的示例,演示如何按 MCP 规范使用 OAuth2 保护 MCP 服务。它展示客户端凭据和基于浏览器的 PKCE 授权,适合探索 MCP 身份验证连接的开发者。
主要功能
- 01通过 OAuth2 端点签发令牌
- 02演示客户端凭据流程
- 03演示基于浏览器的 PKCE 授权
- 04使用 MCP Inspector 连接
适用场景
- 01测试 MCP 服务的 OAuth2 保护
- 02尝试客户端凭据身份验证
- 03探索基于浏览器的 PKCE 授权
MCP 相关
演示受 OAuth2 保护的 MCP 服务,以及如何使用访问令牌通过 MCP Inspector 连接。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
使用 OAuth 的 MCP
此示例演示如何根据 MCP 规范使用 OAuth2 保护 MCP 服务。
开始使用
使用以下命令运行项目:
./mvnw spring-boot:run
客户端凭据
调用 /oauth2/token 端点获取令牌:
curl -XPOST "http://localhost:8080/oauth2/token" \
--data grant_type=client_credentials \
--user "mcp-client:secret"
# And copy-paste the access token
# Or use JQ:
curl -XPOST "http://localhost:8080/oauth2/token" \
--data grant_type=client_credentials \
--user "mcp-client:secret" | jq -r ".access_token"
使用浏览器流程的授权码(PKCE)
首先调用授权端点获取授权码
python3 pkce_generator.py
然后调用 /oauth2/token 端点获取访问令牌
python3 token_request.py
使用 MCP inspector
保存上一步生成的令牌,然后启动 MCP inspector:
npx @modelcontextprotocol/[email protected]
在 MCP inspector 中粘贴令牌。点击连接即可!
请注意,令牌的有效期为 15 分钟
实现注意事项
依赖项
在 Spring 中,为 MCP 服务提供 OAuth2 支持需要添加:
- Spring Security(安全基础设施)
- Spring Authorization Server(签发令牌)
- Spring Security: OAuth2 Resource Server( 使用令牌进行身份验证)
请注意,Spring Auth Server 不支持响应式技术栈,因此只能在 Servlet 中签发令牌。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。