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

Java MCP Server Example

MCP Server

一个基于Spring Boot的Todo管理服务,提供OAuth2认证和完整的CRUD操作,适用于AI助手和开发工具集成。

工具数

5

提示词数

0

GitHub Stars

0

资源数

0
CRUD操作JavaClaudeClaude DesktopClaudeVS Code

安装说明

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

作者 / 组织

muthuishere

提供方

muthuishere

最后核验

2026/5/17 20:19

快速接入

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

详细介绍

Todo MCP服务器-Spring Boot实现

A完整 模型上下文协议(MCP)服务器 使用Spring Boot实现,演示了通过代理服务器使用Firebase进行OAuth2身份验证。该服务器提供Todo管理工具,可供MCP客户端使用,如VS Code、Claude Desktop和其他AI助手。

🚀 特性

  • MCP服务器实现:使用Spring AI MCP框架的完全OAuth2保护的MCP服务器
  • Firebase身份验证:通过Firebase Auth服务器代理进行基于JWT的安全身份验证
  • 待办事项管理:使用用户隔离完成todo项的CRUD操作
  • 多个配置文件:支持不同的MCP通信模式(SSE、Streamable、无状态)
  • OAuth2发现:完全符合RFC的OAuth2元数据端点
  • 用户上下文:基于经过身份验证的电子邮件的自动用户隔离
  • 安全:全面的安全配置,具有适当的错误处理功能

🛠️ 技术栈

  • Java 21 带弹簧靴3.5.7
  • Spring Security 使用OAuth2资源服务器
  • Spring AI MCP服务器 框架
  • Firebase管理SDK 用于JWT验证

📋 先决条件

在运行此MCP服务器之前,您需要:

  1. Firebase身份验证服务器代理 在端口9000上运行

- 按照说明操作:https://github.com/muthuishere/mcp-firebase-auth-server

  1. 环境变量 (见配置部分)
  1. Java 17 已安装或更高

⚙️ 配置

环境变量

创建一个 .env 文件或设置这些环境变量:

# Firebase Configuration (same as your auth proxy)
FIREBASE_PROJECT_ID=your-firebase-project-id
FIREBASE_API_KEY=your-firebase-api-key
FIREBASE_SERVICE_ACCOUNT_KEY={"type":"service_account",...} # Your service account JSON

# MCP Server Configuration
MCP_SERVER_BASE_URL=http://localhost:8080
MCP_AUTH_SERVER_URL=http://localhost:9000

🏃‍♂️ 运行服务器

1.标准运行

task dev

🔧 MCP工具可用

此服务器公开了AI助手可以使用的以下MCP工具:

fetch-all-todos

  • 描述:获取经过身份验证的用户的所有Todo项目
  • 参数:无
  • 退货:Todo对象列表

fetch-todo-by-id

  • 描述:按ID获取特定的Todo项目
  • 参数: id (长)-待办事项的ID
  • 退货:可选Todo对象

make-todo

  • 描述:创建新的Todo项目
  • 参数:

- title (字符串)-待办事项的标题 - description (字符串)-Todo的描述 - completed (boolean)-待办事项完成了吗?

  • 退货:TodoToolResponse,带有创建的todo和成功消息

change-todo

  • 描述:更新现有Todo项目
  • 参数:

- id (长)-要更新的待办事项的ID - title (字符串)-新标题 - description (字符串)-新描述 - completed (boolean)-新的完成状态

  • 退货:可选的已更新Todo对象

remove-todo

  • 描述:按ID删除待办事项
  • 参数: id (长)-要删除的待办事项的ID
  • 退货:boolean表示成功

🔐 认证流程

1.OAuth2发现端点

服务器为MCP客户端公开这些发现端点:

GET /.well-known/oauth-protected-resource
GET /.well-known/oauth-authorization-server  
GET /.well-known/openid-configuration
GET /login/oauth

2.令牌验证过程

  1. 提取JWT:来自 Authorization: Bearer 头球
  2. 解析JWT:提取 firebase_token JWT有效载荷索赔
  3. 验证Firebase令牌:使用Firebase管理SDK
  4. 设置用户上下文:将用户电子邮件存储在 MCPContextHolder
  5. 访问控制:所有待办事项都通过经过身份验证的用户电子邮件进行过滤

3.错误处理

返回正确 WWW-Authenticate 身份验证失败的标头:

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer error="invalid_token", 
                  error_description="The access token provided is expired, revoked, malformed, or invalid",
                  resource_metadata="http://localhost:8080/.well-known/oauth-protected-resource/mcp/"

🗄️ 数据模型

所有实体

@Entity
public class Todo {
    private Long id;
    private String title;
    private String description;
    private boolean completed;
    private String email;        // User isolation
    private LocalDateTime createdAt;
    private LocalDateTime updatedAt;
}

🧪 测试

1.运行测试

./gradlew test

2.测试OAuth发现

# Test resource metadata
curl http://localhost:8080/.well-known/oauth-protected-resource

# Test auth server metadata  
curl http://localhost:8080/.well-known/oauth-authorization-server

# Test protected endpoint (should return 401)
curl -v http://localhost:8080/mcp

🔗 与MCP客户端集成

VS代码配置

  1. 安装MCP扩展
  2. 配置服务器URL: http://localhost:8080/mcp
  3. OAuth流将自动重定向到Firebase身份验证

📁 项目结构

src/main/java/tools/muthuishere/todo/
├── TodoApplication.java              # Main Spring Boot application
├── config/
│   ├── FirebaseConfig.java          # Firebase configuration
│   ├── FirebaseJwtDecoder.java      # JWT token decoder
│   └── SecurityConfig.java          # Security configuration
├── controller/
│   └── ResourceMetadataController.java # OAuth2 discovery endpoints
├── security/
│   └── McpAuthenticationEntryPoint.java # Auth error handling
├── todo/
│   ├── TodoTools.java               # MCP tool implementations
│   ├── TodoService.java             # Business logic
│   ├── TodoRepository.java          # Data access
│   ├── MCPContextHolder.java        # User context management
│   └── model/
│       ├── Todo.java                # Todo entity
│       └── TodoToolResponse.java    # Tool response model
└── utils/
    └── Sampling.java                # Utility classes

🔄 开发工作流程

  1. 启动Firebase身份验证代理:确保身份验证服务器在端口9000上运行
  2. 设置环境变量:配置Firebase凭据
  3. 运行MCP服务器:使用 ./gradlew bootRun 或特定的配置文件任务
  4. 测试集成:使用MCP检查器或直接调用API
  5. 连接MCP客户端:配置VS代码

📄 许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

______________________________________________________________________

备注:这是一个参考实现,演示了使用OAuth2身份验证的MCP服务器开发。根据您的特定用例调整配置和业务逻辑。

目录标签

目录标签

CRUD操作JavaClaudeTodo管理本地部署OAuth2认证SpringBootAI助手集成

支持客户端

Claude DesktopClaudeVS Code

接入字段

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

未说明

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

oauth

工具数量(toolCount,工具数)

5

资源数量(resourceCount,资源数)

0

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

0

权限和风险

未说明oauth部署方式未说明

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

安装前确认

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

仍需确认:installCommand

来源信息

继续浏览同类 MCP