饮料查询服务

一个基于Kotlin的JSON-RPC 2.0协议的服务,提供饮料菜单查询和详细信息获取功能。

  • by GutiNicolas
  • Kotlin
  • 本地部署
  • 更新于
在 GitHub 查看 gutinicolas/mcp-stdio

使用说明

MCP标准🚀

概述📝

这是一个基于普通Kotlin的MCP(模型上下文协议)服务器,通过stdin/stdout使用JSON-RPC 2.0。它公开了两个工具:

  • 🔍 getMenu:查找菜单上列出的饮料,允许按成本、成分、制备和可用性或两者都不过滤。
  • 🎯 get饮料:显示所需饮料的完整信息。

需求✅

  • 📦 Java 17+(确保 JAVA_HOME 已设置)。
  • 🛠️ 可执行Gradle包装器(./gradlew).
  • (可选)🐚 jq 用于在控制台中漂亮地打印JSON。
  • (可选)🎛️ npx @modelcontextprotocol/inspector 用于交互式测试。

构建🔧

# From the project root:
./gradlew build shadowJar

这会在以下位置生成一个“胖”JAR build/libs/mcpstdio-all.jar 📦.

跑🚀

# From the project root:
./gradlew run

回声和管道快速测试🎯

初始化服务器

echo '{"jsonrpc":"2.0","id":1,"method":"initialize"}' \
  | java -jar build/libs/mcpstdio-all.jar | jq .

列出可用工具

echo '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
  | java -jar build/libs/mcpstdio-all.jar | jq .

呼叫 getBeverage

echo '{
  "jsonrpc":"2.0",
  "id":3,
  "method":"tools/call",
  "params":{
    "name":"getBeverage",
    "arguments":{
      "name": "Americano,
    }
  }
}' | java -jar build/libs/mcpstdio-all.jar | jq .

嵌入到另一个Kotlin项目(Daemon)中🤖

// Start the MCP server process:
val process = ProcessBuilder(
    "java", "-jar", "/path/to/mcpstdio-all.jar"
).start()

// Read JSON-RPC responses from stdout:
val reader = BufferedReader(InputStreamReader(process.inputStream))
reader.lines().forEach { line ->
    println("MCP Response: $line")
}

// Write JSON-RPC requests to process.outputStream when needed.

与Inspector一起使用🕵️‍♂️

CLI模式💻

npx @modelcontextprotocol/inspector --cli -- \
  java -jar build/libs/mcpstdio-all.jar

连接后,您可以运行以下命令:

initialize
notifications/initialized
tools/list

UI模式(仪表板)🌐

npx @modelcontextprotocol/inspector ./gradlew run -q

如果。/grandlew run不起作用,用这个代替

  • 选择 标准输入输出 连接🎛️
  • 命令: java ⚙️
  • 论据: -jar build/libs/mcpstdio-all.jar 📦
  • 输入您的 会话令牌 🔑 在仪表板设置中。

现在,您可以通过浏览器UI交互式测试MCP服务器! 🚀