Spring AI MCP Server 示例项目

Spring AI MCP Server 示例项目

CrxusDonts

研究与数据
访问服务器

README

MCP 服务器演示项目

这是一个基于Spring Boot的Model Context Protocol (MCP) 服务器演示项目,提供了计算器、天气查询以及数据模型和API接口工具的功能。

项目概述

本项目是一个简单的MCP服务器实现,使用Spring Boot和WebFlux构建,提供了以下功能:

  1. 计算器工具 - 可以计算数学表达式
  2. 天气查询工具 - 可以查询指定城市的实时天气
  3. 系统信息资源 - 提供系统基础信息
  4. 数据模型查找工具 - 根据用户描述查找匹配的数据模型
  5. API接口查找工具 - 根据数据模型查找对应的API接口
  6. API执行工具 - 根据用户输入构造参数并调用实际接口

技术栈

  • Java 17
  • Spring Boot
  • Spring WebFlux
  • Model Context Protocol (MCP)
  • Server-Sent Events (SSE)

快速开始

前置条件

  • JDK 17 或更高版本
  • Maven 3.6 或更高版本
  • 和风天气API密钥(用于天气查询功能)

配置

  1. 克隆项目到本地
  2. src/main/resources/application.yml 中配置和风天气API密钥

构建与运行

# 编译项目
mvn clean package

# 运行项目
java -jar target/donts-ai-0.0.1-SNAPSHOT.jar

API 端点

SSE 连接

  • 端点: /sse
  • 方法: GET
  • 描述: 建立SSE连接,用于接收服务器发送的事件

消息发送

  • 端点: /mcp/messages
  • 方法: POST
  • 描述: 发送消息到MCP服务器

工具功能

计算器工具

计算器工具可以处理各种数学表达式,包括:

  • 基本运算(加减乘除)
  • 复杂表达式计算

示例:

2 + 2
(3 * 4) / 2
sqrt(16) + 5

天气查询工具

天气查询工具可以获取指定城市的实时天气信息,包括:

  • 温度
  • 天气状况
  • 风向风速
  • 湿度等

示例:

北京
shanghai
guangzhou

数据模型和API工具

项目新增了三个相互关联的工具,用于模拟数据模型查找、API接口查找和API执行的流程:

数据模型查找工具

根据用户的描述查找匹配的数据模型,支持以下功能:

  • 关键词匹配和相似度计算
  • 返回匹配度评分
  • 支持详细信息查看

示例:

{
  "description": "用户账号",
  "maxResults": 3,
  "includeDetails": true
}

API接口查找工具

根据数据模型查找对应的API接口,支持以下功能:

  • 按操作类型(查询、创建、更新、删除)过滤
  • 返回匹配度评分
  • 支持详细参数信息查看

示例:

{
  "modelId": "model_user",
  "operationType": "查询",
  "maxResults": 5,
  "includeDetails": true
}

API执行工具

根据用户输入构造参数并调用实际接口,支持以下功能:

  • 参数验证和类型转换
  • 模拟API调用并生成响应
  • 支持详细元数据输出

示例:

{
  "apiId": "api_user_get",
  "parameters": {"userId": "u123456"},
  "validateParameters": true,
  "detailedResponse": true
}

模拟数据案例

系统预置了三种业务场景的模拟数据:

  1. 用户模型 - 包含用户基本信息及相关API
  2. 订单模型 - 包含订单信息及相关API
  3. 商品模型 - 包含商品信息及相关API

系统架构

项目基于Spring Boot和Model Context Protocol构建,使用Server-Sent Events (SSE) 作为通信机制。主要组件包括:

  1. MCP服务器 - 处理客户端请求并返回响应
  2. 工具实现 - 提供具体功能的实现
  3. 资源配置 - 定义系统资源
  4. 模拟数据仓库 - 存储和检索模拟数据
  5. 服务实现 - 实现业务逻辑

贡献指南

欢迎提交问题和改进建议!请遵循以下步骤:

  1. Fork 本仓库
  2. 创建您的特性分支 (git checkout -b feature/amazing-feature)
  3. 提交您的更改 (git commit -m 'Add some amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 打开一个 Pull Request

许可证

本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件

推荐服务器

Crypto Price & Market Analysis MCP Server

Crypto Price & Market Analysis MCP Server

一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。

精选
TypeScript
MCP PubMed Search

MCP PubMed Search

用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。

精选
Python
mixpanel

mixpanel

连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

精选
TypeScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Nefino MCP Server

Nefino MCP Server

为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。

官方
Python
Vectorize

Vectorize

将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。

官方
JavaScript
Mathematica Documentation MCP server

Mathematica Documentation MCP server

一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。

本地
Python
kb-mcp-server

kb-mcp-server

一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。

本地
Python
Research MCP Server

Research MCP Server

这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

本地
Python
Cryo MCP Server

Cryo MCP Server

一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取,允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。

本地
Python