项目简介

MCP Facade Generator 是一个用于简化 MCP 服务器开发的工具,它通过注解处理器自动生成服务接口的门面 (Facade) 代码。开发者只需在现有的 Spring 服务类上添加少量注解,即可快速将其转换为符合 MCP 协议的服务接口,无需手动编写大量的 boilerplate 代码。通过该工具,可以方便地将现有的业务逻辑快速接入到 MCP 服务器中,降低开发和维护成本。

主要功能点

  • 自动生成 MCP 服务接口门面代码:通过编译时注解处理,自动生成符合 MCP 协议的 Facade 类,减少手动编写代码的工作量。
  • 支持 Spring Boot 项目,快速集成:无缝集成到 Spring Boot 项目中,利用 Maven 依赖和插件简化配置。
  • 基于注解驱动,配置简单:使用简洁的注解 ('@MCPService', '@MCPMethod') 标记需要生成 Facade 的服务类和方法,配置简单直观。
  • 生成示例 Demo 项目,快速上手:支持一键生成包含 Spring AI MCP 配置的 Demo 项目,方便用户快速了解和使用 MCP 服务器。

安装步骤

  1. 引入 Maven 依赖和编译插件

    在您的 Spring Boot 项目的 'pom.xml' 文件中,添加 'mcp-facade-generator' 依赖和 Maven 编译插件配置:

    <dependencies>
        <!-- MCP Facade Generator -->
        <dependency>
            <groupId>com.unionhole</groupId>
            <artifactId>mcp-facade-generator</artifactId>
            <version>1.0.1</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.11.0</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>com.unionhole</groupId>
                            <artifactId>mcp-facade-generator</artifactId>
                            <version>1.0.1</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
        </plugins>
    </build>
  2. 标记 Spring Service 类

    在您希望暴露为 MCP 服务的 Spring Service 类上添加 '@MCPService' 注解,并指定生成的 Facade 类的包名(可选):

    import com.unionhole.mcp.annotation.MCPService;
    import org.springframework.stereotype.Service;
    
    @MCPService(packageName = "com.example.demo.mcp") // 指定 Facade 类生成的包名
    @Service
    public class WeatherService {
        // ...
    }
  3. 标记需要暴露的方法

    在 Service 类中,使用 '@MCPMethod' 注解标记需要暴露为 MCP 工具的方法(可选)。如果不添加此注解,默认所有 public 方法都会被生成到 Facade 中。您可以通过 'description' 属性为方法添加描述信息,这将用于生成 MCP 工具的描述:

    import com.unionhole.mcp.annotation.MCPMethod;
    
    public class WeatherService {
        /**
         * 获取城市天气信息
         * @param cityName 城市名称
         * @return 天气信息
         */
        @MCPMethod(description = "获取指定城市的天气信息") // 添加方法描述
        public String getWeather(String cityName) {
            // ...
        }
    }
  4. 编译项目

    使用 Maven 编译您的项目 ('mvn compile'),MCP Facade 代码将自动生成在您指定的包目录下。

  5. (可选)生成 Demo 项目

    您可以通过配置 Maven 编译参数或 Spring Boot 配置文件启用 Demo 项目生成,快速创建一个可运行的 MCP 服务器示例项目。详细配置方法请参考仓库 README 文档。

服务器配置 (MCP 客户端配置)

MCP 客户端需要配置连接的 MCP 服务器信息。以下是一个示例配置,用于连接通过 'mcp-facade-generator' 生成的 Demo 项目启动的 MCP 服务器:

{
  "serverName": "mcp-demo-service",  // MCP 服务器名称 (在 application.properties 中配置)
  "command": "java",                 // 启动命令 (假设已配置好 Java 环境)
  "args": [                          // 启动参数
    "-jar",
    "mcp-demo-launcher.jar"         // Demo 项目的 JAR 文件名 (根据实际情况修改)
  ]
}

注释:上述配置假设 MCP 服务器以 Spring Boot JAR 包形式运行,并监听默认端口 8080。实际配置可能需要根据 Demo 项目的 'application.properties' 和打包方式进行调整。

基本使用方法

  1. 启动 MCP 服务器

    启动您生成的 Demo 项目或者集成了 Facade 代码的 MCP 服务器项目。

  2. 配置 MCP 客户端

    在 MCP 客户端中,配置上述服务器连接信息。

  3. 连接和调用工具

    使用 MCP 客户端连接到服务器,并调用服务器暴露的工具 (即您在 Service 类中定义并生成到 Facade 中的方法)。

信息

分类

开发者工具