该项目展示了如何使用Kotlin Multiplatform共享代码构建一个Model Context Protocol (MCP) 服务器,以便为LLM客户端(如Claude Desktop)提供上下文信息和功能。
项目简介
'PeopleInSpace' 是一个示例性的Kotlin Multiplatform项目,它拥有多个客户端(Android, iOS, Desktop, Web, Wear OS)和一个JVM后端。其中包含一个专门的 'mcp-server' 模块,实现了MCP协议,将项目共享代码中的功能以MCP工具的形式暴露给LLM客户端。
主要功能点
- 提供MCP工具: 实现了一个MCP工具,可供连接的LLM客户端调用,以获取当前在外太空(特别是国际空间站)的人员列表及其乘坐的飞船。
- 基于共享代码: 利用项目已有的Kotlin Multiplatform共享模块,复用数据获取和业务逻辑。
- 支持Stdio协议: 通过标准输入/输出来与MCP客户端通信,符合MCP协议的Stdio传输方式。
安装步骤
- 克隆仓库: 首先,将该GitHub仓库克隆到本地。
- 安装JDK 17+ 和 Gradle: 确保你的开发环境中安装了Java Development Kit (JDK) 版本 17 或更高,以及Gradle构建工具。
- 构建服务器可执行文件: 在仓库根目录下打开终端,执行以下Gradle命令来构建'mcp-server'模块的可执行JAR文件:
这将在 'mcp-server/build/libs/' 目录下生成一个名为 'serverAll.jar' 的文件。这个JAR文件就是可运行的MCP服务器。./gradlew :mcp-server:shadowJar
服务器配置
MCP服务器通常不直接运行,而是由MCP客户端(如支持MCP的LLM应用)通过配置来启动和管理。你需要将生成的服务器信息添加到你的MCP客户端的配置中。
配置通常是一个JSON文件或JSON片段,结构类似于:
{ "mcpServers": { // 这是一个用于定义MCP服务器的键 "kotlin-peopleinspace": { // 你可以为这个服务器自定义一个名称 "command": "java", // 启动服务器的命令,这里是java命令 "args": [ // 传递给启动命令的参数列表 "-jar", // java命令的参数:指定运行jar文件 "/path/to/your/PeopleInSpace/mcp-server/build/libs/serverAll.jar", // serverAll.jar文件的完整路径 "--stdio" // 传递给MCP服务器的参数:指定使用Stdio协议通信 ] } // 如果有其他MCP服务器,可以在这里添加更多条目 } }
请注意,你需要将 '/path/to/your/PeopleInSpace/' 替换为你实际克隆仓库并构建后 'serverAll.jar' 文件所在的路径。具体的配置方式和文件的位置取决于你使用的MCP客户端。例如,在Claude Desktop中,这通常在"Developer Settings"的"Edit Config"中进行。
基本使用方法
- 运行服务器 (由客户端启动): 按照上述“服务器配置”步骤,配置你的MCP客户端,使其知道如何启动PeopleInSpace MCP服务器的JAR文件。当MCP客户端需要与该服务器交互时,它会自动执行配置中指定的 'command' 和 'args' 来启动服务器。
- 通过LLM调用工具: 一旦MCP服务器成功被客户端启动并连接,支持工具使用的LLM模型就能够发现并调用该服务器提供的工具。例如,你可以向LLM提问:“告诉我当前在太空中有哪些人?” LLM客户端可能会通过MCP协议调用PeopleInSpace服务器提供的工具来获取答案。
关键词
Astronaut信息, 工具服务, Kotlin后端, LLM工具
信息
分类
AI与计算