模型上下文协议服务器

一个基于Spring AI构建的MCP(模型上下文协议)演示服务器,提供KCDC(堪萨斯城开发者大会)会议和演讲者信息。

  • by danvega
  • Java
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 danvega/kcdc-mcp

使用说明

进入MCP

使用Spring AI构建的演示MCP(模型上下文协议)服务器,提供有关KCDC(堪萨斯城开发者大会)会议和演讲者的信息。

什么是MCP?

模型上下文协议(MCP)是一种将AI模型连接到外部数据源和工具的标准化方法。将其视为一座桥梁,使克劳德(和其他人工智能模型)能够访问实时信息并执行超出训练数据的操作。

此演示服务器展示了如何使用Spring AI构建MCP服务器,该服务器公开了:

  • 工具:Claude可以调用函数来获取数据
  • 提示:预构建提示模板
  • 资源:可以检索的静态内容

特性

此MCP服务器提供三种主要功能:

工具

  • kcdc-sessions-by-date:获取按会议日期分组的会话计数
  • kcdc-sessions:检索所有KCDC 2025会话及其详细信息

提示

  • 针对特定会议的会议建议提示模板

资源

  • 演讲者信息和背景

快速开始

先决条件

  • Java 21+
  • Maven 3.6+

构建并运行

# Build the project
mvn clean package -DskipTests

# Run the server
java -jar target/kcdc-mcp-0.0.1-SNAPSHOT.jar

测试服务器

# Use the MCP Inspector to test your server
npx @modelcontextprotocol/inspector

使用Claude Desktop

配置

将此服务器添加到您的Claude Desktop配置文件中:

位置:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 窗户: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "kcdc-conference": {
      "command": "java",
      "args": [
        "-jar",
        "/Users/vega/Downloads/kcdc-mcp/target/kcdc-mcp-0.0.1-SNAPSHOT.jar"
      ]
    }
  }
}

备注:更新路径以匹配您的实际项目位置。

查询示例

配置后,您可以向Claude提出以下问题:

  • “今年KCDC将举行多少次会议?”
  • “你能为Java开发人员推荐会话吗?”
  • “对人工智能和MCP感兴趣的人可以参加哪些课程?”
  • “Dan Vega的背景和专业知识是什么?”

Claude将自动使用MCP服务器的工具和资源来提供准确、最新的答案。

项目结构

src/main/java/dev/danvega/kcdc/
├── Application.java          # Main Spring Boot application with MCP configuration
├── Conference.java           # Conference data model
├── Session.java             # Session data model
├── SessionTools.java        # MCP tools for session queries
├── ConferencePrompts.java   # MCP prompt templates
└── SpeakersResource.java    # MCP resource for speaker information

src/main/resources/
└── data/
    └── sessions.json        # Conference session data

关键组件

  • 会话工具:为会话数据检索提供可调用函数
  • 会议比较:常见会议相关查询模板
  • 扬声器资源:包含说话者信息的静态资源
  • sessions.json:包含工具查询的所有KCDC 2025会话数据

公共MCP服务器(HTTP+SSE)

默认情况下,此MCP服务器以STDIO模式运行,以便与Claude Desktop直接集成。但是,您也可以使用服务器发送事件(SSE)将其作为公共HTTP服务器运行,以实现更广泛的可访问性。

配置

该项目包括两个配置文件:

默认值(STDIO): application.properties

  • 使用标准输入/输出进行通信
  • 非常适合与Claude Desktop集成
  • 无网络暴露

公共(HTTP+SSE): application-sse.yaml

  • 在端口8080上作为web服务器运行
  • 使用服务器发送的事件进行实时通信
  • 远程客户端可以通过HTTP访问

作为公共服务器运行

# Build the project
mvn clean package -DskipTests

# Run with SSE profile
java -jar target/kcdc-mcp-0.0.1-SNAPSHOT.jar --spring.profiles.active=sse

测试公共服务器

运行后,您可以测试MCP服务器端点:

# Check server status
curl http://localhost:8080/mcp/status

# List available tools
curl http://localhost:8080/mcp/tools

# Test a tool call
curl -X POST http://localhost:8080/mcp/tools/kcdc-sessions-by-date \
  -H "Content-Type: application/json"

这允许MCP服务器公开部署,并由任何兼容MCP的客户端通过HTTP访问。

议程

  • 幻灯片
  • 演示从这里开始
    • 浏览器选项卡:
      • https://claude.ai/new
      • https://start.spring.io/
      • https://docs.spring.io/spring-ai/reference/index.html
      • https://modelcontextprotocol.io/docs/getting-started/intro
  • 问克劳德(网络或桌面)今年KCDC有多少次会议
    • 模型没有根据这些数据进行训练
    • 它现在将调用工具来尝试收集回答该问题所需的数据
  • 创建MCP服务器
    • start.spring.io
    • Web、MCP服务器
    • application.properties(STDIO与SSE-代码相同,配置不同)
    • 显示会话数据
  • 模型
    • 会议
    • 会话
  • 工具
    • 会话工具
    • 讨论其他工具,但不实施
    • 添加工具回调
    • 构建 mvn clean package -DskipTests
    • 测试 npx @modelcontextprotocol/inspector
  • 提示
    • 会议提示
    • 构建与测试
  • 资源
    • 扬声器资源
    • 构建与测试
  • 克劳德桌面
    • 配置
    • 演示提示
      • 今年KCDC将举办多少场会议?
      • 我是一名对AI和MCP感兴趣的Java开发人员。你能为我推荐今年在KCDC的任何课程吗?
      • 与丹·维加的那次会面听起来很有趣,你能给我一些关于他的背景信息吗?
    • 提示
    • 资源
  • HTTP+SSE
    • 将其转换为公共MCP服务器