电影信息服务器

一个基于OMDB API的电影信息查询服务器,支持STDIO、SSE和Streamable HTTP三种传输协议。

  • by Shaamam
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 shaamam/movie-mcp-server

使用说明

电影MCP服务器

一种模型上下文协议(MCP)服务器,使用OMDB API提供电影信息。此服务器支持三种不同的传输协议:STDIO、SSE(服务器发送事件)和流式HTTP。

特性

  • 电影信息工具:获取电影的详细信息,包括情节、演员、收视率等
  • 多种传输协议:支持STDIO、SSE和流式HTTP传输
  • 基于配置文件的配置:在不同运输方式之间轻松切换

可用工具

  • getMovieInfo:按标题检索全面的电影信息

配置

先决条件

  1. 构建项目:

    ./gradlew build
    
  2. 服务器支持三种配置文件:

    • stdio (默认):标准输入/输出通信
    • sse:服务器通过HTTP发送事件
    • streamable:可流式HTTP传输

MCP客户端配置

将以下配置之一添加到MCP客户端配置文件中:

选项1:STDIO传输(推荐)

{
  "mcpServers": {
    "movie-mcp-server": {
      "type": "stdio",
      "command": "java",
      "args": [
        "-Dspring.profiles.active=stdio",
        "-jar",
        "/Users/shaama/Documents/openai-mcp-demo/movie-mcp-server/build/libs/movieserver_streamable-0.0.1-SNAPSHOT.jar"
      ]
    }
  }
}

方案2:苏格兰和南方能源公司运输

{
  "mcpServers": {
    "movie-mcp-server-sse": {
      "type": "sse",
      "url": "http://localhost:8080/sse"
    }
  }
}

启动SSE服务器:

java -Dspring.profiles.active=sse -jar build/libs/movieserver_streamable-0.0.1-SNAPSHOT.jar

选项3:流式HTTP传输

{
  "mcpServers": {
    "movie-mcp-server-streamable": {
      "type": "http",
      "url": "http://localhost:8080/mcp"
    }
  }
}

启动Streamable服务器:

java -Dspring.profiles.active=streamable -jar build/libs/movieserver_streamable-0.0.1-SNAPSHOT.jar

建设与发展

使用任务文件

此项目包括一个用于常见操作的任务文件:

# Build all profiles
task build

# Build specific profile
task build-stdio
task build-sse  
task build-streamable



# Run specific profile
task run-stdio
task run-sse
task run-streamable

手动构建

# Build with specific profile
./gradlew bootJar -Pprofile=stdio
./gradlew bootJar -Pprofile=sse
./gradlew bootJar -Pprofile=streamable

# Run tests
./gradlew test

配置文件

  • application.properties:通用配置(默认stdio配置文件)
  • application-stdio.properties:STDIO特定设置
  • application-sse.properties:SSE特定设置
  • application-streamable.properties:可流式传输的HTTP特定设置

API配置

服务器对电影数据使用OMDB API。API密钥在中配置 application.properties:

movie.api.url=http://www.omdbapi.com/?apikey=
movie.api.key=dummy

传输协议详细信息

STDIO传输

  • 最适合:与MCP客户端直接集成
  • 沟通:标准输入/输出流
  • 端口:不适用(无HTTP服务器)
  • 日志记录:仅限文件,以避免干扰STDIO通信

SSE 运输

  • 最适合:需要实时更新的基于Web的客户端
  • 沟通:带有服务器发送事件响应的HTTP POST请求
  • 端口: 8080
  • 端点: /sse

可流式HTTP传输

  • 最适合:具有保持活动连接的基于HTTP的客户端
  • 沟通:使用分块传输编码的HTTP POST/GET请求
  • 端口: 8080
  • 端点: /mcp
  • 特性:会话管理,可恢复连接

示例用法

配置后,您可以在MCP客户端中使用电影工具:

Get information about "The Matrix"

服务器将返回详细的电影信息,包括情节、演员、导演、收视率等。

故障排除

STDIO模式

  • 检查日志文件: ~/mcp-server-stdio.log
  • 确保没有其他输出写入stdout

HTTP模式(SSE/流式传输)

  • 验证服务器是否正在运行: curl http://localhost:8080/actuator/health
  • 检查服务器日志是否有任何启动错误
  • 确保端口8080可用

发展

集成测试

默认情况下,集成测试处于禁用状态,可以手动运行:

# Run specific integration test
./gradlew test --tests "McpServerStdioE2ETest"
./gradlew test --tests "McpServerSseE2ETest" 
./gradlew test --tests "McpServerStreamableE2ETest"

电影API测试

# Test movie info functionality
./gradlew test --tests "MovieInfoIntegrationTest"