关于 MCP with OAuth
这是一个展示如何依据 MCP 规范使用 OAuth2 保护 MCP 服务的 Spring 示例,面向探索令牌访问机制的开发者,包含客户端凭据和浏览器 PKCE 授权流程。
主要功能
- 01受 OAuth2 保护的 MCP 服务
- 02客户端凭据令牌流程
- 03使用 PKCE 的浏览器授权
- 04访问令牌签发端点
适用场景
- 01测试基于令牌的 MCP 服务访问
- 02探索客户端凭据授权
- 03尝试基于浏览器的 PKCE 授权
MCP 相关
演示受 OAuth2 保护的 MCP 服务。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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。