MCP服务器生成工具

一个基于Java的工具,用于从UI配置生成模型上下文协议(MCP)服务器,支持代码生成、实时预览和自定义工具配置。

  • by aiswaryamshr966
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 aiswaryamshr966/mcp-server-builder

使用说明

MCP服务器生成器

一种基于Java的工具,用于从UI配置生成模型上下文协议(MCP)服务器。

特性

  • 🎨 基于Web的用户界面 -用于配置MCP服务器的直观界面
  • 🛠️ 工具配置 -使用参数定义自定义工具
  • 📦 资源支持 -向MCP服务器添加资源
  • 📝 代码生成 -自动生成TypeScript MCP服务器
  • 👀 实时预览 -在构建之前预览生成的代码
  • 🔧 100%开源 -内置Spring Boot、FreeMarker和MCP SDK

技术栈

  • 后端:弹簧靴3.2.0
  • 前端:HTML5、CSS3、JavaScript
  • 模板:FreeMarker
  • MCP-SDK:@modelcontextprotocol/sdk(TypeScript)
  • 构建工具:Maven

先决条件

  • Java 17或更高版本
  • Maven 3.6+
  • Node.js 18+(用于运行生成的服务器)

快速开始

1.构建应用程序

cd mcp-server-builder
mvn clean package

2.运行应用程序

mvn spring-boot:run

或者直接运行JAR:

java -jar target/mcp-server-builder-1.0.0.jar

3.打开Web用户界面

导航到: http://localhost:8080

用法

  1. 配置您的服务器

    • 输入服务器名称和描述
    • 添加带有参数的工具
    • (可选)添加资源
  2. 预览您的代码

    • 点击“预览代码”查看生成的TypeScript
  3. 生成服务器

    • 点击“生成服务器”
    • 将在中创建服务器文件 generated-servers/[your-server-name]/
  4. 构建和使用生成的服务器

    cd generated-servers/[your-server-name]
    npm install
    npm run build
    
  5. 配置Claude桌面版 添加到您的 claude_desktop_config.json:

    {
      "mcpServers": {
        "your-server-name": {
          "command": "node",
          "args": ["/absolute/path/to/generated-servers/your-server-name/build/index.js"]
        }
      }
    }
    

示例:天气工具

以下是一个配置示例:

工具名称: get_weather 描述:获取某个地点的当前天气 参数:

  • location (string,必填):城市名称
  • units (字符串,可选):温度单位(摄氏度/华氏度)

实施:

const result = `The weather in ${args.location} is sunny!`;
return result;

API终点

  • POST /api/servers/generate -生成新的MCP服务器
  • POST /api/servers/preview -预览生成的代码
  • GET /api/servers/health -健康检查

项目结构

mcp-server-builder/
├── src/
│   ├── main/
│   │   ├── java/com/mcpbuilder/
│   │   │   ├── controller/       # REST controllers
│   │   │   ├── model/            # Data models
│   │   │   ├── service/          # Business logic
│   │   │   └── McpServerBuilderApplication.java
│   │   └── resources/
│   │       ├── templates/        # FreeMarker templates
│   │       │   ├── package.json.ftl
│   │       │   ├── server.ts.ftl
│   │       │   └── README.md.ftl
│   │       ├── static/           # Web UI files
│   │       │   ├── index.html
│   │       │   └── app.js
│   │       └── application.properties
├── generated-servers/            # Output directory
├── pom.xml
└── README.md

发展

监视模式

mvn spring-boot:run

为生产而建

mvn clean package -DskipTests

开发者笔记

  • Lombok已从代码库中删除,以避免与某些JDK/工具设置的注释处理器兼容性问题。模型类现在包括显式getter和setter。
  • 要求:Java 17+,Maven 3.6+。该项目是用 mvn clean package 并且可以与一起运行 mvn spring-boot:run 或 java -jar target/mcp-server-builder-1.0.0.jar.
  • 如果您希望重新启用Lombok,请添加Lombok依赖项并在中配置注释处理 pom.xml 或者使用匹配的JDK/工具链;有关详细信息,请参阅项目的问题跟踪器。

贡献

欢迎投稿!请随时提交拉取请求。

支持

有关问题和疑问,请在GitHub上打开问题。


建于❤️ 使用Spring Boot和MCP SDK

重新生成并测试生成的服务器(辅助脚本)

提供了一个方便的脚本,用于为每个生成的服务器安装、构建和运行烟雾测试 generated-servers/.

要运行脚本(需要Node.js和npm):

cd mcp-server-builder
node ./scripts/regenerate_and_test_all.mjs

这将迭代中的所有子文件夹 generated-servers/,跑 npm install 和 npm run build,然后运行每个服务器的 test-client.mjs 吸烟测试并打印总结。

摩纳哥当地供应商(可选)

如果您需要Monaco Editor在本地提供服务(用于离线或企业网络演示),则会提供一个帮助脚本,将Monaco供应商添加到web静态资产中。

要求:本地安装Node.js和npm。

从存储库根目录运行:

node ./scripts/vendor_monaco.mjs

这将使摩纳哥处于 src/main/resources/static/vendor/monaco/min/vs 因此UI将在回退到CDN之前尝试在本地加载它。

将生成的服务器下载为ZIP

UI现在包括 下载ZIP 工具栏中的按钮;它调用后端端点 POST /api/servers/download 其返回所生成服务器的ZIP存档。这需要后端正在运行(端点在中实现) McpServerController).

# Example: generate server and download zip via curl (server running locally)
curl -X POST http://localhost:8080/api/servers/download -H 'Content-Type: application/json' -d @config.json --output myserver.zip

将UI部署到GitHub页面

您可以发布静态UI(前端下 src/main/resources/static)使用随附的GitHub Actions工作流访问GitHub页面。这将复制静态资产并将其发布到 gh-pages 每当您按下时,都会自动分支 main.

步骤:

  1. 确保您的存储库已推送到GitHub(源代码)。
  2. 工作流程 .github/workflows/deploy-gh-pages.yml 运行推送 main 并将发布 public 目录到 gh-pages 使用内置 GITHUB_TOKEN.
  3. 工作流完成后,在您的GitHub存储库中,转到设置->页面,并确保源分支 gh-pages 和目录 /.

注意事项和警告:

  • GitHub Pages仅支持静态托管。这 Download ZIP 和 Generate Server UI中的功能调用后端端点(Spring Boot),在纯静态Pages站点上无法工作。
  • 要获得完整功能(生成、下载zip),请在服务器(Heroku、Render、AWS、DigitalOcean或VM)上托管后端,并通过更新将UI指向后端URL API_BASE 在 src/main/resources/static/app.js 或者通过添加一个小型反向代理。

手动部署(备选):

  • 建立一个 public/ 包含静态资产的文件夹(src/main/resources/static)并推动他们 gh-pages 分支(示例):
# From repository root
git checkout --orphan gh-pages
git --work-tree public add --all
git --work-tree public commit -m "Deploy static site"
git push origin gh-pages --force
# return to main branch
git checkout main

如果你想控制发布的内容,这种手动方法很有用。