YouTube视频获取工具

一个基于Spring Boot的MCP服务器,通过YouTube Data API v3获取最新的CS50 YouTube视频。

  • by aymenhmid
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 aymenhmid/My_CS50_Youtube_Latest_Videos_MCP_Server_Tut00011

使用说明

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: true
server:
  port: 9999
youtube:
  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:桌面应用程序(推荐)

  1. 安装MCP检查器(桌面)。如果您没有,请从MCP社区网站获取最新版本。
  2. 打开MCP检查器。
  3. 单击“添加服务器”。
  4. 配置:
    • 传输:HTTP
    • 网址: http://localhost:9999/
    • 协议: streamable
    • 标题:留空
  5. 保存,然后连接。您应该看到该工具: CS50 latest videos.
  6. 使用参数调用工具。, 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.

许可证

此项目是一个教程示例。请自行决定使用。