mcpField
M
MCP with OAuth

MCP with OAuth

本地服务
github.com/akshay12390媒体与设计076 周前更新

关于 MCP with OAuth

这是一个展示如何依据 MCP 规范使用 OAuth2 保护 MCP 服务的 Spring 示例,面向探索令牌访问机制的开发者,包含客户端凭据和浏览器 PKCE 授权流程。

主要功能

  1. 01受 OAuth2 保护的 MCP 服务
  2. 02客户端凭据令牌流程
  3. 03使用 PKCE 的浏览器授权
  4. 04访问令牌签发端点

适用场景

  1. 01测试基于令牌的 MCP 服务访问
  2. 02探索客户端凭据授权
  3. 03尝试基于浏览器的 PKCE 授权

MCP 相关

演示受 OAuth2 保护的 MCP 服务。MCP 客户端使用生成的访问令牌连接,可通过 MCP Inspector 测试。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"weather-oauth2-server": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/inspector"
]
}
}
}
启动命令npx -y @modelcontextprotocol/inspector

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@modelcontextprotocol/inspector

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

使用 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 支持需要添加:

  1. Spring Security(安全基础设施)
  2. Spring Authorization Server(签发令牌)
  3. Spring Security: OAuth2 Resource Server( 使用令牌进行身份验证)

请注意,Spring Auth Server 不支持响应式技术栈,因此只能在 Servlet 中签发令牌。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。