MCP服务器框架

uMCP是一个轻量级的Java框架,用于构建MCP(Model Context Protocol)服务器,提供简单的抽象层和TCP传输支持。

  • by cobach
  • Java
  • 本地部署
  • 1 星标
  • 更新于

使用说明

uMCP(超MCP)

一个用Java构建MCP(模型上下文协议)服务器的轻量级框架。uMCP在官方MCP Java SDK上提供了一个简单的抽象层,使创建和部署具有TCP传输的MCP服务器变得容易。

特性

  • 简单抽象:干净的接口(SyncCapability, AsyncCapability)用于实施MCP工具
  • 默认TCP传输:始终通过以下方式使用TCP传输 mcp-java桥
  • 类型安全:自动类型处理和JSON模式生成
  • 生成器模式:用于服务器配置的Fluent API
  • 最小依赖性:基于官方SDK构建的轻量级框架
  • 克劳德桌面就绪:使用桥接器与Claude Desktop无缝协作

安装

先决条件

  • Java 17或更高版本
  • Gradle 8.5+(用于从源代码构建)

作为依赖使用

将uMCP添加到您的项目中:

梅文

<dependency>
    <groupId>org.gegolabs</groupId>
    <artifactId>uMCP</artifactId>
    <version>1.0.0</version>
</dependency>

Gradle

implementation 'org.gegolabs:uMCP:1.0.0'

备注:目前在Maven Local中可用。跑 ./gradlew publishToMavenLocal 克隆后。

从源头构建

# Clone the repository
git clone https://github.com/cobach/uMCP.git
cd uMCP

# Build and install to local Maven repository
./gradlew publishToMavenLocal

# Run tests
./gradlew test

创建工具

uMCP中的工具实现 SyncCapability 或 AsyncCapability 接口:

@Name("my-tool")
@Description("Description of what my tool does")
public class MyTool implements SyncCapability<MyInput, MyOutput> {
    @Override
    public void initialize() throws CapabilityException {
        // Initialize resources if needed
    }
    
    @Override
    public void shutdown() throws CapabilityException {
        // Clean up resources if needed
    }
    
    @Override
    public MyOutput execute(MyInput input) throws CapabilityException {
        // Tool implementation
        return new MyOutput(result);
    }
}

服务器配置

uMCP服务器始终使用TCP传输。您可以配置主机和端口:

// Default: localhost:3000
MCPServer server = MCPServer.builder()
    .name("MyServer")
    .version("1.0.0")
    .tool(new MyTool())
    .build();

// Custom port
MCPServer server = MCPServer.builder()
    .name("MyServer")
    .version("1.0.0")
    .port(8080)
    .tool(new MyTool())
    .build();

// Custom host and port
MCPServer server = MCPServer.builder()
    .name("MyServer")
    .version("1.0.0")
    .host("0.0.0.0")
    .port(8080)
    .tool(new MyTool())
    .tool(new AnotherTool())
    .build();

// Start the server
server.start();

安装 Claude Desktop

构建MCP服务器后,您需要配置Claude Desktop以连接到它。MCP-java桥JAR包含一个用于此目的的CLI安装程序。

步骤1:访问Bridge JAR

使用uMCP时,桥JAR会自动作为依赖项包含在内。您可以通过两种方式访问它:

来自Maven仓库:

java -jar ~/.m2/repository/org/gegolabs/mcp/mcp-java-bridge/1.0.0/mcp-java-bridge-1.0.0.jar

或者使用Gradle任务复制它:

task copyBridgeJar(type: Copy) {
    from configurations.runtimeClasspath.filter { it.name.contains('mcp-java-bridge') }
    into 'install'
    rename { 'mcp-bridge.jar' }
}

然后: ./gradlew copyBridgeJar

步骤2:配置Claude桌面

从以下三个选项中选择一个:

选项A:交互式安装(推荐)

运行安装程序,不带参数,以进行引导安装:

java -jar mcp-java-bridge-1.0.0.jar

这将:

  • 自动检测JAR位置
  • 提示输入服务器名称(例如“我的服务器”)
  • 主机提示(默认:localhost)
  • 提示输入端口(默认值:3000)
  • 自动配置克劳德桌面
  • 创建现有配置的备份

选项B:命令行安装

对于自动设置,请使用特定参数:

java -jar mcp-java-bridge-1.0.0.jar install \
  -n "my-server" \
  -c mcp-java-bridge-1.0.0.jar \
  -h localhost \
  -p 3000

参数:

  • -n -Claude Desktop中的服务器名称(必填)
  • -c -充当连接器的JAR的路径
  • -h -服务器主机(默认:localhost)
  • -p -服务器端口(默认值:3000)

选项C:手动配置

如果您更喜欢手动配置,请编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "my-server": {
      "command": "java",
      "args": [
        "-jar",
        "/path/to/mcp-java-bridge-1.0.0.jar",
        "--connector",
        "localhost",
        "3000"
      ]
    }
  }
}

步骤3:启动服务器

  1. 启动MCP服务器(确保它在配置的端口上运行)
  2. 重新启动Claude Desktop以加载新配置
  3. 您的服务器现在应该可以在Claude Desktop中使用

MCP网桥JAR命令

使用uMCP时,会包含mcp-java桥JAR。这是一个多功能工具,有三种模式:

1.交互式安装程序(默认)

java -jar mcp-java-bridge-1.0.0.jar

2.连接器模式

Claude Desktop用于桥接stdio↔TCP:

# Default settings (localhost:3000)
java -jar mcp-java-bridge-1.0.0.jar --connector

# Custom host/port
java -jar mcp-java-bridge-1.0.0.jar --connector 192.168.1.100 8080

3.安装命令

java -jar mcp-java-bridge-1.0.0.jar install -n <server-name> -c <jar-path> [-h <host>] [-p <port>]

4.帮助

java -jar mcp-java-bridge-1.0.0.jar --help

创建MCP服务器

步骤1:创建新项目

使用以下内容创建新的Gradle项目 build.gradle:

plugins {
    id 'java'
    id 'application'
}

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    implementation 'org.gegolabs:uMCP:1.0.0'
}

application {
    mainClass = 'com.example.MyMCPServer'
}

java {
    sourceCompatibility = JavaVersion.VERSION_17
}

// Task to copy mcp-java-bridge JAR for easy Claude Desktop installation
task installBridge(type: Copy) {
    from configurations.runtimeClasspath.filter { it.name.contains('mcp-java-bridge') }
    into 'install'
    rename { 'mcp-bridge.jar' }
    doLast {
        println "Bridge JAR copied to: install/mcp-bridge.jar"
        println "Run installer: java -jar install/mcp-bridge.jar"
    }
}

// Run installBridge after build
build.finalizedBy installBridge

步骤2:创建服务器应用程序

package com.example;

import org.gegolabs.mcp.MCPServer;
import org.gegolabs.mcp.impl.DomainAvailability;
import org.gegolabs.mcp.impl.SystemInformation;

public class MyMCPServer {
    public static void main(String[] args) throws Exception {
        int port = args.length > 0 ? Integer.parseInt(args[0]) : 3000;
        
        MCPServer server = MCPServer.builder()
            .name("MyMCPServer")
            .version("1.0.0")
            .port(port)
            .tool(new DomainAvailability())
            .tool(new SystemInformation())
            .build();
            
        server.start();
        System.out.println("MCP Server running on port " + port);
        
        // Keep running until interrupted
        Thread.currentThread().join();
    }
}

步骤3:构建和配置

# Build your project (this also copies the bridge JAR)
./gradlew build

# Configure Claude Desktop using the bridge installer
java -jar install/mcp-bridge.jar

# Run your server
./gradlew run

# Or run the JAR directly
java -jar build/libs/your-project.jar 3000

uMCP库结构

uMCP/
├── src/
│   ├── main/java/org/gegolabs/mcp/
│   │   ├── protocol/          # Core interfaces (SyncCapability, AsyncCapability)
│   │   ├── impl/              # Example tool implementations
│   │   ├── bridge/            # Bridge integration (from mcp-java-bridge)
│   │   └── MCPServer.java     # Main server builder class
│   └── test/                  # Unit tests
├── docs/                      # Additional documentation
└── build.gradle               # Build configuration

当您在项目中使用uMCP时,它提供:

  • 核心抽象 用于创建MCP工具
  • MCPServer构建器 便于服务器设置
  • 内置TCP传输 通过mcp-java桥
  • 示例实现 参考

依赖项

  • MCP Java SDK 0.10.0
  • mcp java桥1.0.0
  • Project Reactor(通过SDK)
  • SLF4J+Logback用于日志记录
  • 龙目岛减少样板

MCP检验员测试

虽然MCP Inspector需要stdio传输,但您可以使用网桥测试uMCP服务器:

  1. 启动uMCP服务器
  2. 使用mcp-java桥连接器作为中介
  3. 将MCP检查员指向连接器

地方发展

在本地使用uMCP进行开发时:

# Clone and install uMCP to local Maven repository
git clone https://github.com/cobach/uMCP.git
cd uMCP
./gradlew publishToMavenLocal

这将uMCP安装到您的本地Maven存储库(~/.m2/repository),使其可供您的项目用作依赖项。

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

贡献

[将添加贡献指南]