Token导航 LogoToken导航

MCP Server · AI代理

mcpspring (Mind Cres)

一个生产就绪的Spring Boot MCP服务器,用于将业务服务暴露为AI/LLM集成的工具。

stdio官方级别未说明来源级核验工具 17@modelcontextprotocol/inspector
JavaClaudeSpring Boot

快速开始

作者 / 组织
MindCres
提供方
MindCres
运行时
Node.js

工具数量

17

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

0

仓库热度

收录来源

1 个

MCP World

选型结论

mcpspring (Mind Cres) 属于AI代理类 MCP Server,公开资料标注 17 个工具,通过stdio 本地进程接入,适配 Claude,有可以直接复制的安装命令;接入前先确认权限范围。

分类

AI代理

传输方式

stdio

认证方式

无需认证

部署方式

公开资料未说明

安装与配置

安装命令

npx @modelcontextprotocol/inspector --url http://localhost:8080/sse

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Node.js,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 17 个工具,随便调一个只读工具确认能返回结果。

接入前确认

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

详细介绍

Spring Boot MCP服务器-完整指南

生产准备就绪 Spring Boot MCP(模型上下文协议)服务器 它将业务服务作为AI/LLM集成的工具。

______________________________________________________________________

目录

  1. 什么是MCP?
  2. 快速入门(5分钟)
  3. 项目概述
  4. 先决条件
  5. 安装和设置
  6. 运行服务器
  7. 测试您的服务器
  8. 理解代码
  9. 添加自己的服务(一步一步)
  10. 连接到真实API
  11. REST API(适用于非MPCP客户端)
  12. 连接到LLM
  13. 配置参考
  14. 故障排除
  15. 资源

______________________________________________________________________

什么是MCP?

模型上下文协议(MCP) 是Anthropic的一个开放标准,允许AI模型(如Claude、ChatGPT)将您的后端服务称为“工具”。

在MCP之前:

User: "What phones do you have?"
AI: "I don't have access to your inventory system."

MCP之后:

User: "What phones do you have?"
AI: [Calls your shop_get_all_phones tool]
AI: "We have iPhone 15 Pro Max ($799), Galaxy S24 Ultra ($798)..."

工作原理:

┌─────────────────┐     MCP Protocol      ┌─────────────────────┐
│   AI/LLM        │◄────────────────────► │  Your Spring Boot   │
│   (Claude)      │    (JSON-RPC)         │  MCP Server         │
└─────────────────┘                       └──────────┬──────────┘
                                                     │
                                          ┌──────────▼──────────┐
                                          │   Your Services     │
                                          │  - PhoneService     │
                                          │  - PlanService      │
                                          │  - External APIs    │
                                          └─────────────────────┘

______________________________________________________________________

快速入门(5分钟)

步骤1:克隆和构建

git clone 
cd mcpspring
./gradlew build

步骤2:运行服务器

# SSE Mode (HTTP-based, recommended for testing)
./gradlew bootRun --args='--spring.profiles.active=sse'

第三步:测试

打开一个新终端:

# Check server is running
curl http://localhost:8080/

# Test SSE endpoint
curl http://localhost:8080/sse

# Test REST API
curl http://localhost:8080/api/tools/phones

步骤4:使用MCP检查器(目视测试)

npx @modelcontextprotocol/inspector --url http://localhost:8080/sse

打开http://localhost:6274在浏览器中查看所有工具并对其进行测试!

______________________________________________________________________

项目概述

该项目包括 3示例服务 和 17个MCP工具:

服务类型工具描述
电话服务模拟数据5手机库存(苹果、三星等)
PlanService模拟数据7移动计划(5G、仅SIM卡等)
产品目录服务真实API5从FakeStore API获取

项目结构

mcpspring/
├── build.gradle                         # Gradle dependencies
├── settings.gradle                      # Gradle settings
├── gradlew                              # Gradle wrapper (Unix)
├── gradlew.bat                          # Gradle wrapper (Windows)
├── gradle/wrapper/                      # Gradle wrapper files
├── README.md                            # This file
│
└── src/main/
    ├── java/com/example/mcpserver/
    │   ├── McpServerApplication.java    # Main entry point
    │   │
    │   ├── config/
    │   │   ├── McpToolConfig.java       # ⭐ IMPORTANT: Tool registration
    │   │   └── CacheConfig.java         # Cache settings
    │   │
    │   ├── service/                     # ⭐ YOUR TOOLS GO HERE
    │   │   ├── PhoneService.java        # Example: Mock data service
    │   │   ├── PlanService.java         # Example: Mock data service
    │   │   └── ProductCatalogService.java # Example: Real API service
    │   │
    │   ├── client/
    │   │   └── ProductApiClient.java    # REST client for external APIs
    │   │
    │   ├── controller/
    │   │   ├── InfoController.java      # Health check endpoints
    │   │   └── ToolRestController.java  # REST API wrapper
    │   │
    │   ├── model/                       # Data models
    │   │   ├── PhoneModel.java
    │   │   └── MobilePlan.java
    │   │
    │   ├── dto/                         # Data Transfer Objects
    │   │   ├── ProductDTO.java
    │   │   └── RatingDTO.java
    │   │
    │   └── exception/
    │       └── ApiException.java        # Custom exceptions
    │
    └── resources/
        ├── application.properties       # STDIO mode config
        └── application-sse.properties   # SSE mode config

______________________________________________________________________

先决条件

在开始之前,请确保您已经:

要求版本检查命令
Java JDK17+java -version
Node.js18+(用于MCP检查器)node -version
注: Gradle通过Gradle包装器包含在内(gradlew),因此您不需要单独安装。

安装先决条件

macOS:

# Install Java 17
brew install openjdk@17

# Install Node.js
brew install node

窗户:

Linux(Ubuntu/Debian):

sudo apt update
sudo apt install openjdk-17-jdk nodejs npm

______________________________________________________________________

安装和设置

步骤1:克隆存储库

git clone 
cd mcpspring

步骤2:了解依赖关系(build.gradle)

关键依赖关系是 Spring AI MCP服务器启动器:

dependencies {
    // This enables MCP protocol support
    implementation 'org.springframework.ai:spring-ai-starter-mcp-server-webmvc'
}

所有依赖项均由Spring AI BOM(物料清单)管理:

dependencyManagement {
    imports {
        mavenBom "org.springframework.ai:spring-ai-bom:1.0.0"
    }
}

步骤3:构建项目

# Full build with tests
./gradlew build

# Quick build (skip tests)
./gradlew build -x test

# Clean and build
./gradlew clean build

预期产量:

BUILD SUCCESSFUL in Xs
5 actionable tasks: 5 executed

JAR文件将位于: build/libs/mcp-server-poc-0.0.1-SNAPSHOT.jar

______________________________________________________________________

运行服务器

选项1:SSE模式(建议用于测试)

SSE(服务器发送事件)模式作为HTTP服务器运行。在以下情况下使用此功能:

  • 您没有克劳德桌面
  • 您想通过浏览器/curl进行测试
  • 您正在与基于HTTP的客户端集成
# Using Gradle
./gradlew bootRun --args='--spring.profiles.active=sse'

# Using JAR
java -jar build/libs/mcp-server-poc-0.0.1-SNAPSHOT.jar --spring.profiles.active=sse

服务器启动时间: http://localhost:8080

选项2:STDIO模式(适用于克劳德桌面)

STDIO模式通过标准输入/输出进行通信。在以下情况下使用此功能:

  • 连接到克劳德桌面
  • 使用期望STDIO传输的MCP客户端
java -jar build/libs/mcp-server-poc-0.0.1-SNAPSHOT.jar

______________________________________________________________________

测试您的服务器

1.基本健康检查

curl http://localhost:8080/
# Returns: {"name":"shop-mcp-server","status":"running",...}

curl http://localhost:8080/health
# Returns: {"status":"UP"}

2.测试SSE端点

curl -N http://localhost:8080/sse
# Returns:
# id:abc123-def456...
# event:endpoint
# data:/mcp/message?sessionId=abc123-def456...

3.测试REST API

# Get all phones
curl http://localhost:8080/api/tools/phones

# Get Apple phones
curl http://localhost:8080/api/tools/phones/brand/Apple

# Get 5G plans
curl http://localhost:8080/api/tools/plans/5g

# Get products from external API
curl http://localhost:8080/api/tools/products

4.MCP检查员(最适合目视测试)

npx @modelcontextprotocol/inspector --url http://localhost:8080/sse
  1. 打开http://localhost:6274在浏览器中
  2. 点击“连接”
  3. 转到“工具”选项卡-您将看到所有17个工具
  4. 点击任何工具进行测试!

______________________________________________________________________

理解代码

如何创建MCP工具

MCP工具只是一个Java方法 @Tool 注释:

@Service
public class PhoneService {

    @Tool(name = "shop_get_phones_by_brand",
          description = "Get phone models filtered by brand")
    public List
 getPhonesByBrand(
            @ToolParam(description = "Brand name: Apple, Samsung, Google, Xiaomi")
            String brand) {

        // Your business logic here
        return phones.stream()
                .filter(phone -> phone.brand().equalsIgnoreCase(brand))
                .collect(Collectors.toList());
    }
}

关键注释:

  • @Tool(name, description) -将方法标记为MCP工具
  • @ToolParam(description) -描述AI的每个参数

注册工具(重要提示!)

在Spring AI 1.0.0中,您必须在 McpToolConfig.java:

@Configuration
public class McpToolConfig {

    @Bean
    public ToolCallbackProvider phoneToolCallbackProvider(PhoneService phoneService) {
        return MethodToolCallbackProvider.builder()
                .toolObjects(phoneService)
                .build();
    }

    // Add similar beans for each service...
}

为什么? Spring AI 1.0.0不会自动发现 @Tool 方法。您必须明确注册每个服务。

______________________________________________________________________

添加自己的服务(一步一步)

让我们添加一个新 订单服务 例如:

步骤1:创建数据模型

创建 src/main/java/com/example/mcpserver/model/Order.java:

package com.example.mcpserver.model;

import java.time.LocalDateTime;

public record Order(
    String orderId,
    String customerName,
    String phoneId,
    String planId,
    double totalPrice,
    String status,
    LocalDateTime createdAt
) {}

步骤2:使用@Tool方法创建服务

创建 src/main/java/com/example/mcpserver/service/OrderService.java:

package com.example.mcpserver.service;

import com.example.mcpserver.model.Order;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.*;

@Service
public class OrderService {

    private final Map orders = new HashMap<>();

    @Tool(name = "order_create",
          description = "Create a new order for a phone and plan combination")
    public Order createOrder(
            @ToolParam(description = "Customer's full name") String customerName,
            @ToolParam(description = "Phone ID (e.g., iphone-15-pro)") String phoneId,
            @ToolParam(description = "Plan ID (e.g., combo-plus-98)") String planId,
            @ToolParam(description = "Total price in SGD") double totalPrice) {

        String orderId = "ORD-" + UUID.randomUUID().toString().substring(0, 8).toUpperCase();
        Order order = new Order(orderId, customerName, phoneId, planId,
                               totalPrice, "PENDING", LocalDateTime.now());
        orders.put(orderId, order);
        return order;
    }

    @Tool(name = "order_get_by_id",
          description = "Get order details by order ID")
    public Order getOrderById(
            @ToolParam(description = "Order ID (e.g., ORD-ABC12345)") String orderId) {
        return orders.get(orderId);
    }

    @Tool(name = "order_list_all",
          description = "Get all orders")
    public List getAllOrders() {
        return new ArrayList<>(orders.values());
    }

    @Tool(name = "order_update_status",
          description = "Update order status")
    public Order updateOrderStatus(
            @ToolParam(description = "Order ID") String orderId,
            @ToolParam(description = "New status: PENDING, CONFIRMED, SHIPPED, DELIVERED, CANCELLED") String status) {

        Order existing = orders.get(orderId);
        if (existing == null) return null;

        Order updated = new Order(existing.orderId(), existing.customerName(),
                                  existing.phoneId(), existing.planId(),
                                  existing.totalPrice(), status, existing.createdAt());
        orders.put(orderId, updated);
        return updated;
    }
}

步骤3:在McpToolConfig中注册服务

编辑 src/main/java/com/example/mcpserver/config/McpToolConfig.java:

@Configuration
public class McpToolConfig {

    // ... existing beans ...

    @Bean
    public ToolCallbackProvider orderToolCallbackProvider(OrderService orderService) {
        return MethodToolCallbackProvider.builder()
                .toolObjects(orderService)
                .build();
    }
}

步骤4:(可选)添加REST端点

编辑 src/main/java/com/example/mcpserver/controller/ToolRestController.java:

// Add to existing controller

@Autowired
private OrderService orderService;

@PostMapping("/orders")
public Order createOrder(@RequestBody Map request) {
    return orderService.createOrder(
        (String) request.get("customerName"),
        (String) request.get("phoneId"),
        (String) request.get("planId"),
        ((Number) request.get("totalPrice")).doubleValue()
    );
}

@GetMapping("/orders")
public List getAllOrders() {
    return orderService.getAllOrders();
}

@GetMapping("/orders/{id}")
public Order getOrderById(@PathVariable String id) {
    return orderService.getOrderById(id);
}

步骤5:重建和测试

# Rebuild
./gradlew clean build -x test

# Run
./gradlew bootRun --args='--spring.profiles.active=sse'

# Test with MCP Inspector
npx @modelcontextprotocol/inspector --url http://localhost:8080/sse

您的新工具将出现: order_create, order_get_by_id, order_list_all, order_update_status

______________________________________________________________________

连接到真实API

这 ProductCatalogService 显示了如何连接到外部API:

1.创建API客户端

@Component
public class ProductApiClient {

    private final WebClient webClient;

    public ProductApiClient(@Value("${api.product.base-url}") String baseUrl) {
        this.webClient = WebClient.builder()
                .baseUrl(baseUrl)
                .build();
    }

    @Cacheable(value = "products", key = "'all'")
    public List
 getAllProducts() {
        return webClient.get()
                .uri("/products")
                .retrieve()
                .bodyToFlux(ProductDTO.class)
                .collectList()
                .timeout(Duration.ofSeconds(10))
                .block();
    }
}

2.在application.properties中配置

api.product.base-url=https://fakestoreapi.com
api.product.timeout-seconds=10

3.在您的服务中使用

@Service
public class ProductCatalogService {

    private final ProductApiClient apiClient;

    @Tool(name = "catalog_get_all_products",
          description = "Get all products from catalog")
    public List
 getAllProducts() {
        return apiClient.getAllProducts();
    }
}

______________________________________________________________________

REST API(适用于非MPCP客户端)

所有工具也可通过REST API访问 /api/tools/:

API指数

GET http://localhost:8080/api/tools

电话端点

GET /api/tools/phones                    # All phones
GET /api/tools/phones/brand/{brand}      # By brand
GET /api/tools/phones/{id}               # By ID
GET /api/tools/phones/search?minPrice=0&maxPrice=500
GET /api/tools/phones/in-stock

规划端点

GET /api/tools/plans                     # All plans
GET /api/tools/plans/category/{category} # By category
GET /api/tools/plans/5g                  # 5G only
GET /api/tools/plans/recommend?dataUsageGB=50&budget=100&needs5G=true

产品端点

GET /api/tools/products                  # All products
GET /api/tools/products/{id}             # By ID
GET /api/tools/products/categories       # List categories
GET /api/tools/products/search?keyword=jacket
GET /api/tools/products/stats            # Statistics

______________________________________________________________________

连接到LLM

克劳德桌面版

  1. 构建JAR:
   ./gradlew clean build -x test
  1. 编辑Claude配置文件:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 窗户: %APPDATA%\Claude\claude_desktop_config.json

   {
     "mcpServers": {
       "shop-service": {
         "command": "java",
         "args": [
           "-jar",
           "/full/path/to/mcpspring/build/libs/mcp-server-poc-0.0.1-SNAPSHOT.jar"
         ]
       }
     }
   }
  1. 重新启动克劳德桌面
  1. 测试:问克劳德“有什么手机?”

ChatGPT/OpenAI(通过函数调用)

将REST API与OpenAI函数调用一起使用:

import openai
import requests

# Define tools as OpenAI functions
tools = [{
    "type": "function",
    "function": {
        "name": "get_phones_by_brand",
        "description": "Get phones filtered by brand",
        "parameters": {
            "type": "object",
            "properties": {
                "brand": {"type": "string", "enum": ["Apple", "Samsung", "Google"]}
            },
            "required": ["brand"]
        }
    }
}]

# When GPT calls the function, forward to your REST API
def call_tool(name, args):
    if name == "get_phones_by_brand":
        response = requests.get(f"http://localhost:8080/api/tools/phones/brand/{args['brand']}")
        return response.json()

# Use with OpenAI
response = openai.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "Show me Apple phones"}],
    tools=tools
)

______________________________________________________________________

配置参考

application.properties(STDIO模式)

spring.main.web-application-type=none
spring.ai.mcp.server.name=shop-mcp-server
spring.ai.mcp.server.version=1.0.0
spring.ai.mcp.server.stdio=true

application-se.properties(sse模式)

spring.main.web-application-type=servlet
spring.ai.mcp.server.name=shop-mcp-server
spring.ai.mcp.server.version=1.0.0
spring.ai.mcp.server.stdio=false
spring.ai.mcp.server.type=SYNC
server.port=8080

# External API
api.product.base-url=https://fakestoreapi.com
api.product.timeout-seconds=10

# Caching
spring.cache.type=caffeine
spring.cache.caffeine.spec=maximumSize=100,expireAfterWrite=5m

# Logging (set to DEBUG for troubleshooting)
logging.level.com.example.mcpserver=DEBUG
logging.level.org.springframework.ai.mcp=DEBUG

______________________________________________________________________

故障排除

构建失败

问题: Gradle构建失败

# Check Java version
java -version  # Should be 17+

# Clear Gradle cache and rebuild
./gradlew clean build --refresh-dependencies

服务器无法启动

问题: 端口8080已在使用中

# Find and kill process on port 8080
lsof -ti:8080 | xargs kill -9

# Or use a different port
./gradlew bootRun --args='--spring.profiles.active=sse --server.port=9090'

SSE端点返回404

问题: 工具未注册

解决方案: 确保您的服务已在中注册 McpToolConfig.java:

@Bean
public ToolCallbackProvider myServiceToolCallbackProvider(MyService myService) {
    return MethodToolCallbackProvider.builder()
            .toolObjects(myService)
            .build();
}

MCP检查器无法连接

问题: 连接被拒绝

解决方案:

  1. 确保服务器正在运行: curl http://localhost:8080/health
  2. 检查SSE端点: curl http://localhost:8080/sse
  3. 尝试使用显式URL: npx @modelcontextprotocol/inspector --url http://127.0.0.1:8080/sse

工具未出现

问题: 已定义但不可见的工具

检查表:

  • \[\]方法有 @Tool 注释
  • \[\]班级有 @Service 注释
  • \[\]服务已在中注册 McpToolConfig.java
  • \[\]服务器在更改后重新启动

______________________________________________________________________

资源

官方文件

工具

例子

______________________________________________________________________

许可证

麻省理工学院许可证-您可以自由使用和修改您的项目。

______________________________________________________________________

问题?

如果您有任何疑问或问题:

  1. 检查 故障排除 章节
  2. 查看 MCP文件
  3. 在此存储库中打开问题

工具与能力

工具数量

17

资源数量

0

提示词数量

0

能力标签

AI集成Java本地部署业务服务SpringBootMCP协议工具化服务

支持客户端

Claude

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

多步任务编排

把拆解、检索、执行串成一条链,模型按步骤调用工具。

长期上下文

把会话、笔记和知识放到外部存储,换个会话还能接着做。

接自有流程

把内部系统和模型连起来,让助手调用已有的工作流。

选择建议

值得选的地方

  • 工具数量 17 个,一次接入能覆盖的操作比单点工具更全。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • stdio 方式要求本地装好 Node.js,换机器要重新装一遍。
  • 公开摘要偏短,具体能力和限制要回到仓库确认。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在AI代理场景里让模型直接调用外部能力的人。
  • 已经在用 Claude 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
mcpspring (Mind Cres)

MCP World · 本页

17stdio有1 个2026-05-17
Everything Claude Code

MCP World

0stdio有1 个2026-05-17
Filesystem 560c4363

MCP World

13未说明未标注2 个2026-05-17
Time 7365cb6d

MCP.so

2SSE有2 个2026-05-17
Server Everything (everything)

MCP World

11stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

mcpspring (Mind Cres) 怎么安装?

公开资料给出的安装命令是 npx @modelcontextprotocol/inspector --url http://localhost:8080/sse,运行环境为 Node.js。装完后按客户端要求写进 MCP 配置,重启客户端生效。

mcpspring (Mind Cres) 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Node.js;保存后完全退出客户端再打开,配置才会生效。

mcpspring (Mind Cres) 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

mcpspring (Mind Cres) 需要 API Key 吗?

公开资料标注为无需认证,装好就能连;如果实际调用时报鉴权错误,按官方文档补上凭据。

mcpspring (Mind Cres) 支持哪些客户端?

公开资料标注支持 Claude;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP