项目简介
AJ-MCP 是一个基于 Java 语言开发的轻量级 Model Context Protocol (MCP) SDK。它旨在简化 MCP 服务器和客户端的开发过程,为开发者提供构建基于 AI 的上下文应用提供强大的基础框架。该 SDK 提供了资源管理、工具注册与执行以及 Prompt 模板定义和渲染等 MCP 核心功能,并支持 Stdio 和 SSE 等多种传输协议。
主要功能点
- 资源管理 (Resources):支持托管和管理各种类型的数据资源,并提供标准化的数据访问接口,使 LLM 客户端能够方便地获取上下文信息。
- 工具注册与执行 (Tools):允许开发者注册自定义工具,扩展 LLM 的能力边界,例如调用外部 API、访问数据库等,实现更复杂的功能。
- Prompt 模板 (Prompts):支持定义和渲染 Prompt 模板,实现可定制的 LLM 交互模式,提高 Prompt 的复用性和灵活性。
- JSON-RPC 协议通信:采用标准的 JSON-RPC 协议与客户端进行通信,确保了协议的通用性和易用性。
- 多种传输协议支持:支持 Stdio 和 SSE 传输协议,满足不同应用场景的需求。
- 会话管理与能力声明:服务器端负责会话管理和能力声明,为 LLM 应用提供安全、可扩展的上下文服务框架。
安装步骤
由于 AJ-MCP 主要以 SDK 的形式提供,服务器端的实现通常需要基于 SDK 进行二次开发。以下步骤描述了如何使用 AJ-MCP SDK 构建一个 MCP 服务器应用(以 Maven 项目为例):
-
添加 Maven 依赖
在你的 'pom.xml' 文件中添加 AJ-MCP Server SDK 的依赖:
<dependency> <groupId>com.ajaxjs</groupId> <artifactId>mcp-server</artifactId> <version>最新版本号</version> <!-- 请替换为 Maven Central 上的最新版本 --> </dependency>请访问 Maven Central 查找最新的版本号。
-
创建 MCP Server 代码
创建一个 Java 类,例如 'MyMcpServer.java',并使用 AJ-MCP SDK 提供的注解来定义资源、工具和 Prompt 模板。
示例代码片段 (参考仓库中的测试资源):
import io.quarkiverse.mcp.server.Prompt; import io.quarkiverse.mcp.server.PromptMessage; import io.quarkiverse.mcp.server.Resource; import io.quarkiverse.mcp.server.TextResourceContents; import io.quarkiverse.mcp.server.Tool; import io.quarkiverse.mcp.server.ToolArg; public class MyMcpServer { @Resource(uri = "file:///my-resource", description = "我的示例资源", mimeType = "text/plain") TextResourceContents myResource() { return TextResourceContents.create("file:///my-resource", "这是我的资源内容"); } @Tool(description = "示例工具:回声") public String echo(@ToolArg(description = "输入内容") String input) { return "工具回声: " + input; } @Prompt(description = "示例 Prompt 模板") PromptMessage simplePrompt() { return PromptMessage.withUserRole("你好!"); } public static void main(String[] args) { // 在这里启动你的 MCP Server 实现,具体启动方式取决于你选择的框架和传输协议 // 例如,如果使用 Quarkus,可以参考仓库中的测试用例来启动 Stdio 或 SSE 服务器 System.out.println("My MCP Server 启动!"); } } -
构建和运行服务器
使用 Maven 构建你的项目,并运行 'MyMcpServer.java' 中的 'main' 方法来启动 MCP 服务器。具体的运行方式取决于你选择的框架(例如,如果使用 Quarkus,可以使用 'mvn quarkus:dev' 或打包成可执行 JAR 文件运行)。
服务器配置
MCP 服务器主要需要配置启动命令,以便 MCP 客户端能够正确连接。以下是一个 JSON 格式的配置信息示例,客户端需要根据实际情况进行配置:
{ "serverName": "My-MCP-Server", "command": "java -cp your-server.jar com.foo.MyMcpServer", "args": [] }
配置项说明:
- 'serverName': MCP 服务器的名称,可以自定义,用于客户端识别。
- 'command': 启动 MCP 服务器的命令。需要根据你的服务器打包方式和主类进行调整。例如,如果你的服务器打包成了 'your-server.jar',并且主类是 'com.foo.MyMcpServer',则可以使用 'java -cp your-server.jar com.foo.MyMcpServer'。
- 'args': 启动命令的参数,如果服务器启动需要额外的参数,可以在这里配置。例如,如果需要指定端口号或配置文件路径。
注意: 上述配置仅为示例,实际配置需要根据你构建的 MCP 服务器的具体情况进行调整。 MCP 客户端需要根据这个配置来启动和连接 MCP 服务器进程。
基本使用方法
- 启动 MCP 服务器:根据上述安装步骤和服务器配置,启动你构建的 MCP 服务器。
- 配置 MCP 客户端:在 MCP 客户端中,配置连接到你的 MCP 服务器所需的信息,例如服务器启动命令、传输协议等。
- 客户端与服务器交互:使用 MCP 客户端 SDK 提供的 API,例如 'listResources()'、'readResource()'、'listTools()'、'executeTool()'、'listPrompts()'、'getPrompt()' 等,与 MCP 服务器进行交互,获取资源信息、调用工具、渲染 Prompt 等。
- 构建 LLM 应用:基于 MCP 客户端获取的上下文信息和工具能力,构建你的 LLM 应用。
请参考仓库中的 'aj-mcp-client' 模块和测试用例,了解 MCP 客户端 SDK 的详细使用方法。
信息
分类
开发者工具