模型上下文协议服务器

一个基于Spring Boot和Spring AI构建的MCP服务器,集成ChatGPT和Claude Desktop,提供天气查询、计算器工具和系统信息查询等功能。

  • by nam0102ht
  • Shell
  • 本地部署
  • 更新于
在 GitHub 查看 nam0102ht/mcp_demo

使用说明

MCP演示服务器 - Spring Boot

一个使用Spring Boot和Spring AI构建的演示MCP(模型上下文协议)服务器,该服务器与……集成 ChatGPT 并且 Claude Desktop(可译为“Claude桌面版”或保持原样,根据上下文判断是否需要具体翻译软件名称)。

支持的客户端

  • ChatGPT (通过HTTP/SSE连接器)
  • Claude Desktop(可译为“Claude桌面版”或保持原样,若“Desktop”在此处特指某种平台或版本,则根据具体语境翻译) (通过STDIO)
  • 任何兼容MCP的客户端

特点/特性

这个MCP服务器提供:

工具

  • 天气工具

    • getWeather(cityName) - 获取某城市的当前天气
    • getWeatherForecast(cityName) - 获取3天天气预报
    • getTemperature(cityName, unit) - 获取温度并进行单位转换
  • 计算器工具

    • add(a, b) - 加两个数
    • subtract(a, b) - 减法运算
    • multiply(a, b) - 乘以数字
    • divide(a, b) - 分割数字
    • power(a, b) - 计算功率
    • sqrt(a) - 计算平方根

资源

  • system://info - 系统信息(操作系统、Java版本、内存)
  • server://info - MCP服务器信息

提示

  • greeting - 个性化的问候提示
  • weather-query - 天气查询提示模板

先决条件

  • Java 17 或更高版本
  • Gradle 8.x
  • Claude 桌面应用程序

构建项目

# Build the project
./gradlew build

# Run the application
./gradlew bootRun

创建可执行的JAR文件

# Build the JAR
./gradlew bootJar

# The JAR will be created at: build/libs/mcp_demo-1.0-SNAPSHOT.jar

设置说明

选项1:ChatGPT(推荐给网页用户)

ChatGPT 使用 HTTP/SSE 协议与 MCP 服务器进行通信。这是默认配置。

步骤1:构建并运行服务器

# Build the JAR
./gradlew bootJar

# Run the server (HTTP mode - default)
java -jar build/libs/mcp_demo-1.0-SNAPSHOT.jar

服务器将在 http://localhost:8080

步骤2:配置ChatGPT连接器

  1. 打开ChatGPT (网页或桌面应用程序)

  2. 进入设置 → 点击您的个人资料/头像

  3. 导航至“连接器” 在设置侧边栏中

  4. 点击“创建” 添加一个新的MCP连接器

  5. 选择“开发者模式” (如可用)或“自定义连接器”

  6. 请输入以下详细信息:

    • 姓名: 演示MCP服务器
    • 基本URL: http://localhost:8080
    • SSE 端点: /sse
    • 消息端点: /mcp/message
  7. 保存 连接器

步骤3:测试连接

在ChatGPT中,尝试提问:

  • “东京的天气怎么样?”
  • “计算25加17”
  • “144的平方根是多少?”
  • “给我看看系统信息”

选项2:Claude桌面版(STDIO传输)

Claude Desktop 使用 STDIO 传输协议与本地 MCP 服务器进行通信。

步骤1:构建JAR文件

./gradlew bootJar

步骤2:配置Claude桌面版

macOS:

  1. 找到Claude桌面配置文件:

    ~/Library/Application Support/Claude/claude_desktop_config.json
    
  2. 编辑文件并添加:

{
  "mcpServers": {
    "demo-mcp-server": {
      "command": "java",
      "args": [
        "-jar",
        "/absolute/path/to/mcp_demo/build/libs/mcp_demo-1.0-SNAPSHOT.jar",
        "--spring.profiles.active=claude"
      ]
    }
  }
}

Windows:

  1. 找到Claude Desktop的配置文件:

    %APPDATA%\Claude\claude_desktop_config.json
    
  2. 编辑文件并添加:

{
  "mcpServers": {
    "demo-mcp-server": {
      "command": "java",
      "args": [
        "-jar",
        "C:\\absolute\\path\\to\\mcp_demo\\build\\libs\\mcp_demo-1.0-SNAPSHOT.jar",
        "--spring.profiles.active=claude"
      ]
    }
  }
}

重要提示: 将路径替换为您的实际项目目录路径。

步骤3:重启Claude桌面版

彻底退出并重新打开Claude Desktop。

步骤4:验证与测试

  • 在Claude Desktop中查找MCP服务器图标(🔌)
  • 你应该能看到“demo-mcp-server”列在其中
  • 试着问:“巴黎的天气怎么样?”

测试MCP服务器

对于ChatGPT(HTTP模式 - 默认)

  1. 构建并运行:

    ./gradlew bootJar
    java -jar build/libs/mcp_demo-1.0-SNAPSHOT.jar
    
  2. 测试服务器:

    ./test-server.sh
    
  3. 在ChatGPT中进行配置 (详见CHATGPT_SETUP.md中的详细说明)

  4. 测试工具: 试试问问ChatGPT:

    • “纽约的天气怎么样?”
    • “计算15加27”
    • “144的平方根是多少?”

对于Claude Desktop(STDIO模式)

  1. 构建JAR文件:

    ./gradlew bootJar
    
  2. 配置Claude桌面版 (见上文选项2)

  3. 重启Claude桌面版 完全(退出并重新打开)

  4. 测试工具: 试试问问克劳德:

    • “巴黎的天气怎么样?”
    • “计算25乘以16”

项目结构

mcp_demo/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/
│   │   │       └── ntnn/
│   │   │           ├── Main.java                    # Spring Boot application
│   │   │           ├── config/
│   │   │           │   └── McpConfiguration.java    # MCP server configuration
│   │   │           └── service/
│   │   │               ├── WeatherService.java      # Weather tools
│   │   │               └── CalculatorService.java   # Calculator tools
│   │   └── resources/
│   │       └── application.yml                      # Application configuration
│   └── test/
├── build.gradle                                     # Gradle build configuration
└── README.md                                        # This file

配置

MCP服务器已配置在 src/main/resources/application.yml:

spring:
  ai:
    mcp:
      server:
        enabled: true
        stdio: true                    # Use STDIO transport
        name: demo-mcp-server
        version: 1.0.0
        type: SYNC                     # Synchronous server
        capabilities:
          tool: true                   # Enable tools
          resource: true               # Enable resources
          prompt: true                 # Enable prompts

故障排除

Claude Desktop 不显示 MCP 服务器

  1. 检查指定路径下是否存在该JAR文件
  2. 验证路径中的(内容/设置等,具体根据上下文确定) claude_desktop_config.json 是绝对的
  3. 完全重启Claude桌面版
  4. 检查Claude Desktop的日志(如果可用)

工具无法正常工作

  1. 验证服务器是否正在运行(检查日志)
  2. 确保所有功能都已启用 application.yml
  3. 尝试重新构建项目: ./gradlew clean bootJar

构建错误

  1. 确保已安装 Java 17 或更高版本: java -version
  2. 清理并重建: ./gradlew clean build
  3. 检查所有依赖项是否已下载

发展

添加新工具

  1. 在(某处)创建一个新的服务类 src/main/java/com/ntnn/service/
  2. 添加带有注解的方法 @Tool
  3. 在(某处)注册该服务 McpConfiguration.java

示例:

@Service
public class MyService {
    @Tool(description = "My custom tool")
    public String myTool(String input) {
        return "Result: " + input;
    }
}

添加新资源

添加资源规格 McpConfiguration.mcpResources():

var myResource = new McpSchema.Resource(
    "my://resource",
    "My Resource",
    "Description",
    "application/json"
);

参考文献

许可证

这是一个用于教育目的的演示项目。