MCP协议客户端连接工具

一个用于连接Model Context Protocol (MCP)服务器的Kotlin客户端工具,支持通过标准输入输出进行通信,适用于开发与测试场景。

  • by VeraSkokova
  • Kotlin
  • 本地部署
  • 更新于
在 GitHub 查看 VeraSkokova/AI-Advent-Challenge-MCP

使用说明

🎄 AI降临挑战——第11天:连接到MCP

此任务实现Kotlin客户端连接到 模型上下文协议(MCP) 标准I/O(STDIO)服务器。

参考服务器用作测试服务器 文件系统服务器 (@modelcontextprotocol/server-filesystem)通过 npx.

📋 任务

  1. 为Kotlin安装MCP SDK。
  2. 提升MCP服务器(本地版本通过STDIO)。
  3. 编写创建连接并获取可用工具列表的代码。

🛠 技术

  • 语言: Kotlin 2.0+
  • 构建系统: Gradle(Kotlin DSL)
  • 图书馆:
    • io.modelcontextprotocol:kotlin-sdk (官方SDK)
    • io.ktor:ktor-client-cio (HTTP客户端引擎)
    • kotlinx-coroutines
  • 外部工具: Node.js&npx(用于运行基于JS的MCP服务器)

🚀 如何启动

先决条件

  1. JDK 17+ 已安装。
  2. Node.js 安装(检查命令) node -v 和 npx -v).
    • 对于Windows很重要: 安装Node.js时,请确保选中“添加到路径”选项。

推出IntelliJ IDEA

  1. 打开文件 src/main/kotlin/ru/skokova/aiadventchallenge/Day11McpTest.kt.
  2. 单击绿色图标 跑 (▶) 功能旁边 main.

通过Gradle启动

./gradlew运行

文本

🧩 销售

代码执行以下操作:

  1. 启动子进程: 自动启动命令 npx -y @modelcontextprotocol/server-filesystem . 过 ProcessBuilder.
  2. 运输: 初始化 StdioClientTransport,将进程的I/O线程与客户端关联。
    • 修复: 使用 asSource().buffered() 和 asSink().buffered() 从 kotlinx-io 正确处理线程。
  3. 握手: 方法 client.connect() 自动执行协议初始化(发送) initialize 等待 initialized).
  4. 请求: 方法 client.listTools() 请求服务器提供可用的工具。

✅ 预期成果

必须在控制台中显示文件系统工具列表:

🎄 AI降临挑战赛-第11天 🚀 正在启动MCP服务器进程。.. 🔄 连接。.. ✅ 有联系的!

🎉 === 可用的MCP工具===🎉 🛠 read_file 📝 从文件系统读取文件的完整内容。 🛠 读取多个文件 📝 从文件系统读取多个文件。 🛠 write_file 📝 创建新文件或完全覆盖现有文件。 ...