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/listUI模式(仪表板)🌐
npx @modelcontextprotocol/inspector ./gradlew run -q如果。/grandlew run不起作用,用这个代替
- 选择 标准输入输出 连接🎛️
- 命令:
java⚙️ - 论据:
-jar build/libs/mcpstdio-all.jar📦 - 输入您的 会话令牌 🔑 在仪表板设置中。
现在,您可以通过浏览器UI交互式测试MCP服务器! 🚀
