MCP服务器教程(Spring Boot)
一个最小的Spring Boot MCP服务器,展示了一个通过YouTube Data API v3获取最新CS50 YouTube视频的工具。使用Spring Boot 3.5、Java 21和Spring AI MCP服务器(WebVC)启动器构建。
先决条件
- Java 21(JDK 21)
- Maven包装器(包括:
mvnw,mvnw.cmd) - YouTube数据API密钥
- Windows PowerShell(以下命令适用于Windows;根据需要适应macOS/Linux)
项目布局
src/
main/
java/com/example/mcp_server_tutorial/
McpServerTutorialApplication.java
McpTools.java
resources/
application.yaml
pom.xml依赖关系(pom.xml)
使用的关键依赖关系:
- spring boot starter web——web+MVC运行时
- spring ai starter mcp服务器webmvc——spring ai mcp服务器(WebVC传输)
- org.json:json——最小json解析
- 弹簧靴起动机试验试验支架
Java和BOM属性:
- java版本:21
- 春季版:1.1.0-M3(通过
spring-ai-bom)
配置(application.yaml)
服务器配置集中在 src/main/resources/application.yaml:
spring:
ai:
mcp:
server:
name: mcp-server-tutorial
version: 0.0.1
protocol: streamable
annotation-scanner:
enabled: trueserver:
port: 9999youtube:
api:
key: ${YOUTUBE_API_KEY}笔记:
- MCP服务器在端口上运行
9999. - 协议设置为
streamable. - 注释扫描仪已启用,可以自动显示带有注释的工具
@McpTool. YOUTUBE_API_KEY是从您的环境中读取的。
暴露的MCP工具
McpTools 定义单个工具:
@Component
public class McpTools {
private static final Logger log = LoggerFactory.getLogger(McpTools.class);
@Value("${YOUTUBE_API_KEY}")
private String youtubeApiKey;
private static final String CHANNEL_ID = "UCcabW7890RKJzL968QWEykA"; // CS50 channel
@McpTool(name = "CS50 latest videos", description = "Fetches the latest CS50 videos from YouTube")
public String getLastVideos(@McpToolParam Integer limit) {- 工具名称:
CS50 latest videos - 参数:
limit(整数)——要获取的视频数量 - 输出:格式化的标题列表+YouTube网址
环境变量(Windows PowerShell)
在运行之前设置YouTube API密钥:
$env:YOUTUBE_API_KEY = "YOUR_YOUTUBE_API_KEY"要为当前用户(PowerShell配置文件)保留它,请执行以下操作:
[Environment]::SetEnvironmentVariable("YOUTUBE_API_KEY", "YOUR_YOUTUBE_API_KEY", "User")设置用户级环境变量后重新启动终端。
构建、运行和测试
- 构建(无测试):
mvn clean install- 运行(开发模式):
mvn spring-boot:run服务器将侦听 http://localhost:9999/.
使用MCP检查器
您可以使用MCP检查器交互式地探索和调用MCP工具。
选项A:桌面应用程序(推荐)
- 安装MCP检查器(桌面)。如果您没有,请从MCP社区网站获取最新版本。
- 打开MCP检查器。
- 单击“添加服务器”。
- 配置:
- 传输:HTTP - 网址: http://localhost:9999/ - 协议: streamable - 标题:留空
- 保存,然后连接。您应该看到该工具:
CS50 latest videos. - 使用参数调用工具。,
limit = 5.
选项B:Web/CLI变体
如果您使用支持HTTP MCP的CLI或基于web的Inspector变体:
- 在本地启动服务器(请参阅上面的运行)。
- 运行此命令在浏览器中启动mcpinspector
''' npx@modelcontextprotocol/检查器 '''
- 添加具有以下功能的服务器:
- 运输: http - 网址: http://localhost:9999/ - 协议: streamable
- 发现并调用该工具,传递
limit根据需要。
故障排除提示:
- 确保
YOUTUBE_API_KEY在启动服务器之前,在您的环境中设置。 - 验证端口
9999自由或调整server.port在application.yaml. - 如果检查员无法发现工具,请确认
annotation-scanner.enabled: true.
检查器工具调用示例
CS50 latest videos随着limit = 3应该返回CS50频道的三个最新视频。- 如果超过YouTube API配额或密钥无效,该工具将返回错误消息字符串。
常见问题
- 缺失/无效
YOUTUBE_API_KEY:设置环境变量并重新启动应用程序。 - 网络限制:确保出站HTTPS
www.googleapis.com是允许的。 - 端口冲突:更改
server.port在application.yaml.
许可证
此项目是一个教程示例。请自行决定使用。
