项目简介

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 项目为例):

  1. 添加 Maven 依赖

    在你的 'pom.xml' 文件中添加 AJ-MCP Server SDK 的依赖:

    <dependency>
        <groupId>com.ajaxjs</groupId>
        <artifactId>mcp-server</artifactId>
        <version>最新版本号</version> <!-- 请替换为 Maven Central 上的最新版本 -->
    </dependency>

    请访问 Maven Central 查找最新的版本号。

  2. 创建 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 启动!");
        }
    }
  3. 构建和运行服务器

    使用 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 服务器进程。

基本使用方法

  1. 启动 MCP 服务器:根据上述安装步骤和服务器配置,启动你构建的 MCP 服务器。
  2. 配置 MCP 客户端:在 MCP 客户端中,配置连接到你的 MCP 服务器所需的信息,例如服务器启动命令、传输协议等。
  3. 客户端与服务器交互:使用 MCP 客户端 SDK 提供的 API,例如 'listResources()'、'readResource()'、'listTools()'、'executeTool()'、'listPrompts()'、'getPrompt()' 等,与 MCP 服务器进行交互,获取资源信息、调用工具、渲染 Prompt 等。
  4. 构建 LLM 应用:基于 MCP 客户端获取的上下文信息和工具能力,构建你的 LLM 应用。

请参考仓库中的 'aj-mcp-client' 模块和测试用例,了解 MCP 客户端 SDK 的详细使用方法。

信息

分类

开发者工具