使用说明
项目简介
mcp4k 是一个基于 Kotlin 的框架,旨在简化 Model Context Protocol (MCP) 客户端和服务器的开发。它通过编译时注解处理,自动生成 JSON-RPC 处理程序和模式元数据,并提供完整的生命周期管理。使用 mcp4k,开发者可以更专注于业务逻辑的实现,而无需过多关注 MCP 协议的底层细节。
主要功能点
- 资源管理: 提供资源托管和访问能力,支持文件资源提供器,允许客户端读取服务器端提供的文件资源。
- 工具注册与执行: 允许注册和调用外部工具,通过简单的注解即可将 Kotlin 函数暴露为 MCP 工具,供客户端调用执行。
- Prompt 模板: 支持定义和使用 Prompt 模板,通过注解定义 Prompt 函数,方便客户端获取预定义的 Prompt 模板。
- JSON-RPC 通信: 基于 JSON-RPC 协议与客户端通信,处理客户端的请求并返回响应。
- 传输协议: 目前主要支持 Stdio 传输,未来计划支持 HTTP-SSE 等更多传输协议。
- 上下文管理: 允许服务器工具和 Prompt 共享上下文状态,方便在多个工具或 Prompt 之间共享数据。
- 请求取消: 支持客户端取消正在进行中的请求,提高了交互的灵活性。
- 采样 (客户端): 客户端可以提供 SamplingProvider 来处理服务器发起的采样请求,支持客户端参与 LLM 的采样过程。
安装步骤
- 添加插件: 在你的 'build.gradle.kts' 文件中,添加 mcp4k 插件和 Kotlin 序列化插件。确保你的项目已经配置了 Kotlin 环境。
plugins { kotlin("multiplatform") version "2.1.0" // 或 kotlin("jvm") kotlin("plugin.serialization") version "2.1.0" id("sh.ondr.mcp4k") version "0.3.6" } - 同步 Gradle: 同步 Gradle 项目,确保插件和依赖被正确添加到项目中。
服务器配置
MCP 客户端需要配置 MCP 服务器的启动命令才能连接并与之通信。对于 mcp4k 服务器,由于其是 Kotlin 应用,通常需要将其打包成 JAR 文件后通过 'java -jar' 命令运行。以下是一个典型的 MCP 客户端服务器配置示例,假设您已将 mcp4k 服务器打包为 'mcp4k-server.jar',并且使用 Stdio 传输协议:
{ "serverName": "mcp4k-server", "command": "java", "args": ["-jar", "mcp4k-server.jar"] }
配置参数说明:
- 'serverName': 服务器名称,用于在客户端标识和管理不同的 MCP 服务器连接。
- 'command': 启动 MCP 服务器进程的命令。对于 mcp4k 打包的 JAR 文件,通常使用 'java' 命令。
- 'args': 启动命令的参数列表。这里包含了 '-jar' 参数以及服务器 JAR 文件的名称 'mcp4k-server.jar'。请务必根据您实际打包的 JAR 文件名修改 'mcp4k-server.jar'。 如果服务器启动需要其他 JVM 参数,也可以添加到 'args' 列表中。
注意: 上述配置假设 mcp4k 服务器使用 Stdio 作为传输协议,并且客户端和服务器在同一台机器上或可以通过 Stdio 进行通信。实际部署时,您可能需要根据 mcp4k 未来支持的更多传输协议 (如 HTTP-SSE) 和网络环境进行调整。
基本使用方法
- 定义 MCP 组件: 使用 '@McpTool' 和 '@McpPrompt' 注解 Kotlin 函数,定义你的工具和 Prompt。
- 构建服务器: 使用 'Server.Builder' 构建 MCP 服务器实例,注册你定义的工具、Prompt 和资源提供器。选择合适的传输协议,例如 'StdioTransport'。
- 启动服务器: 调用 'server.start()' 方法启动 MCP 服务器,开始监听客户端请求。
- 构建客户端: 在客户端应用中,使用 'Client.Builder' 构建 MCP 客户端实例,配置相同的传输协议,并连接到 MCP 服务器。
- 客户端交互: 客户端通过 'client' 对象提供的方法 (如 'listTools', 'callTool', 'getPrompt', 'readResource' 等) 按照 MCP 协议与服务器进行交互,发送请求并处理服务器返回的响应。
通过 mcp4k 框架,开发者可以高效地构建符合 MCP 协议的服务器和客户端应用,实现 LLM 应用的上下文管理和功能扩展。
信息
分类
开发者工具