Token导航 LogoToken导航TokenDH.com
MCP Server Oauth2 logo
安全风控stdio官方级别未说明来源级核验

MCP Server Oauth2

MCP Server

基于Spring Boot和Spring AI的微服务架构,集成OAuth2安全协议,适用于需要安全认证和授权的企业级应用开发。

工具数

5

提示词数

0

GitHub Stars

0

资源数

0
微服务安全认证JavaSpring Boot

安装说明

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

作者 / 组织

Diags

提供方

Diags

最后核验

2026/5/17 20:21

运行时

Docker

快速接入

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

命令预览

docker run -p 9000:8080 \

详细介绍

架构微服务MCP+OAuth2

基于Spring Boot 3.4.0和Spring AI 1.0.1的具有OAuth2安全性的MCP(模型上下文协议)的完整微服务架构。

建筑

┌─────────────────┐
│  Keycloak       │  Port 9000
│  (Auth Server)  │
└────────┬────────┘
         │
         │ OAuth2 JWT
         │
    ┌────┴────┐
    │         │
┌───▼───┐ ┌──▼────┐
│ MCP   │ │ MCP   │
│Server │ │Client │  Ports 8080, 8081
└───────┘ └───────┘

组件

  1. 钥匙斗篷 :授权服务器OAuth2(端口9000)
  2. mcp服务器 :受OAuth2资源服务器保护的MCP服务器(端口8080)
  3. mcp客户端 :具有OAuth2客户端和LLM集成的MCP客户端(端口8081)

先决条件

  • Java 21+
  • Maven 3.9+
  • Docker与Docker编写
  • OpenAI API密钥(用于MCP客户端)

配置密钥斗篷

1.启动KeyCloak

docker run -p 9000:8080 \
  -e KEYCLOAK_ADMIN=admin \
  -e KEYCLOAK_ADMIN_PASSWORD=admin \
  quay.io/keycloak/keycloak:26.0 start-dev

2.领域配置

  1. 访问http://localhost:9000
  2. Se连接器avec admin/admin
  3. 创建新领域: mcp-realm

3.客户端配置

  1. 在领域 mcp-realm,进去 客户
  2. 创建新客户端:

- 客户端ID : mcp-client - 客户端身份验证 : ON - 有效的重定向URI : http://localhost:8081/* - 网络起源 : http://localhost:8081

  1. 在选项卡中 凭证复印机 客户端密钥 : secret
  2. 在选项卡中 客户端范围,添加:

- mcp:read - mcp:write

4.范围配置

  1. 进去 客户端范围
  2. 创建范围 mcp:read
  3. 创建范围 mcp:write
  4. 将它们添加到客户端 mcp-client

本地启动

选项1:Docker Compose(推荐)

# Définir la clé API OpenAI
export OPENAI_API_KEY=your-api-key-here

# Démarrer tous les services
docker-compose up -d

# Vérifier les logs
docker-compose logs -f

选项2:手动启动

1.启动KeyCloak

docker run -p 9000:8080 \
  -e KEYCLOAK_ADMIN=admin \
  -e KEYCLOAK_ADMIN_PASSWORD=admin \
  quay.io/keycloak/keycloak:26.0 start-dev

2.启动MCP服务器

cd mcp-server
mvn spring-boot:run

3.启动MCP客户端

cd mcp-client
export OPENAI_API_KEY=your-api-key-here
mvn spring-boot:run

配置

环境变量

mcp服务器

  • SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI :授权服务器URI(默认值: http://localhost:9000/realms/mcp-realm)

mcp客户端

  • OPENAI_API_KEY :OpenAI API密钥(必需)
  • SPRING_SECURITY_OAUTH2_CLIENT_PROVIDER_AUTHSERVER_ISSUER_URI :授权服务器URI
  • SPRING_AI_MCP_CLIENT_STREAMABLE_HTTP_CONNECTIONS_MATH_SERVER_URL :MCP服务器的URL

使用

测试MCP服务器

# Obtenir un token JWT depuis Keycloak
curl -X POST http://localhost:9000/realms/mcp-realm/protocol/openid-connect/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "client_id=mcp-client" \
  -d "client_secret=secret" \
  -d "grant_type=client_credentials" \
  -d "scope=mcp:read mcp:write"

# Utiliser le token pour appeler le serveur MCP
curl -X POST http://localhost:8080/mcp \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"tools/list","id":1}'

测试员客户端MCP

# Poser une question via l'API
curl "http://localhost:8081/api/ask?question=What%20is%202%20plus%202?"

微服务架构

mcp服务器

终点:

  • POST /mcp MCP主端点(受保护)

可用工具:

  • add :添加两个数字(范围: mcp:read)
  • subtract :两个数字的减法(范围: mcp:read)
  • multiply :两个数字的乘法(范围: mcp:write)
  • divide :两个数字的除法(范围: mcp:write)
  • power :数字的幂(范围: mcp:write)

安全:

  • 具有JWT验证的OAuth2资源服务器
  • 观众验证
  • 工具的精细授权 @PreAuthorize

mcp客户端

终点:

  • GET /api/ask?question=... :使用MCP工具向LLM提问

功能:

  • 使用OAuth2身份验证自动连接到MCP服务器
  • 磁通混合: authorization_code 对于用户请求, client_credentials 对于系统调用
  • LLM(OpenAI)与自动MCP工具的集成

安全

Flux OAuth2混合

MCP客户端使用混合流:

  • 授权码 :对于用户验证的请求
  • 客户端证书 :用于启动时的系统调用

范围验证

MCP工具受作用域保护:

  • mcp:read :读取操作(添加、子字段)
  • mcp:write :写入操作(多重、分割、功率)

审计验证

MCP服务器验证JWT的受众,以确保令牌用于正确的服务。

测试

执行测试

# Tous les tests
mvn test

# Tests du serveur uniquement
cd mcp-server && mvn test

# Tests du client uniquement
cd mcp-client && mvn test

发展

项目结构

mcp-microservices/
├── pom.xml                 # POM parent
├── docker-compose.yml      # Orchestration Docker
├── mcp-server/            # Microservice serveur MCP
│   ├── src/
│   │   ├── main/
│   │   │   ├── java/
│   │   │   └── resources/
│   │   └── test/
│   └── Dockerfile
└── mcp-client/            # Microservice client MCP
    ├── src/
    │   ├── main/
    │   │   ├── java/
    │   │   └── resources/
    │   └── test/
    └── Dockerfile

添加新的MCP工具

mcp-server/src/main/java/com/mcp/server/service/MathTools.java :

@McpTool(description = "Your tool description")
@PreAuthorize("hasAuthority('SCOPE_mcp:write')")  // Optionnel
public ReturnType yourMethod(@McpToolParam ParamType param) {
    // Implémentation
}

故障排除

OAuth2连接问题

  1. 检查KeyCloak是否已启动: curl http://localhost:9000/health
  2. 检查KeyCloak中的客户端配置
  3. 检查日志: docker-compose logs mcp-serverdocker-compose logs mcp-client

令牌问题

  1. 验证令牌是否包含必要的范围
  2. 检查令牌的到期时间
  3. 检查观众验证

MCP连接问题

  1. 检查MCP服务器是否可访问: curl http://localhost:8080/actuator/health
  2. 检查客户端中的URL配置
  3. 验证日志

技术

  • Spring Boot 3.4.0
  • Java 21
  • 春季AI 1.0.1
  • Spring Security OAuth2
  • 钥匙斗篷 26.0
  • OpenAI API (通过Spring AI)
  • 梅文 3.9+
  • 码头工人 &Docker编写

许可证

本项目作为使用OAuth2的MCP架构的示例提供。

目录标签

目录标签

微服务安全认证JavaSpring Boot本地部署OAuth2SpringBoot企业级应用

接入字段

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

stdio

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

token

运行时(runtime,运行环境)

Docker

工具数量(toolCount,工具数)

5

资源数量(resourceCount,资源数)

0

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

0

权限和风险

stdiotoken部署方式未说明

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

安装前确认

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

来源信息

继续浏览同类 MCP