uMCP (ultraMCP)

by cobach

Not rated
GitHub

About

A lightweight Java framework for building MCP servers with TCP transport via mcp-java-bridge.

Details

Author
cobach
Categories
Developer Tools, Other, API

Setup

Install uMCP (ultraMCP) in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/cobach/uMCP

Follow the installation instructions in the repository README, then restart your MCP client.

A lightweight framework for building MCP (Model Context Protocol) servers in Java. uMCP provides a simple abstraction layer over the official MCP Java SDK, making it easy to create and deploy MCP servers with TCP transport.

- Simple Abstractions: Clean interfaces (SyncCapability,AsyncCapability) for implementing MCP tools
- TCP Transport by Default: Always uses TCP transport viamcp-java-bridge
- Type Safety: Automatic type handling and JSON schema generation
- Builder Pattern: Fluent API for server configuration
- Minimal Dependencies: Lightweight framework built on top of the official SDK
- Claude Desktop Ready: Works seamlessly with Claude Desktop using the bridge connector

- Java 17 or higher
- Gradle 8.5+ (for building from source)

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

Note: Currently available in Maven Local. Run./gradlew publishToMavenLocalafter cloning.

# 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

Tools in uMCP implement theSyncCapabilityorAsyncCapabilityinterface:

@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 servers always use TCP transport. You can configure the host and port:

// 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();

After building your MCP server, you need to configure Claude Desktop to connect to it. The mcp-java-bridge JAR includes a CLI installer for this purpose.

When using uMCP, the bridge JAR is automatically included as a dependency. You can access it in two ways:

java -jar ~/.m2/repository/org/gegolabs/mcp/mcp-java-bridge/1.0.0/mcp-java-bridge-1.0.0.jar
task copyBridgeJar(type: Copy) { from configurations.runtimeClasspath.filter { it.name.contains('mcp-java-bridge') } into 'install' rename { 'mcp-bridge.jar' } }

Option A: Interactive Installation (Recommended)

Run the installer without arguments for a guided setup:

- Auto-detect the JAR location
- Prompt for server name (e.g., "my-server")
- Prompt for host (default: localhost)
- Prompt for port (default: 3000)
- Automatically configure Claude Desktop
- Create a backup of existing configuration

For automated setups, use specific parameters:

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- Server name in Claude Desktop (required)
- -c- Path to the JAR that will act as connector
- -h- Server host (default: localhost)
- -p- Server port (default: 3000)

If you prefer to configure manually, edit~/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" ] } } }

- Start your MCP server (make sure it's running on the configured port)
- Restart Claude Desktop to load the new configuration
- Your server should now be available in Claude Desktop

The mcp-java-bridge JAR is included when you use uMCP. It's a multi-purpose tool with three modes:

Used by Claude Desktop to bridge 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
java -jar mcp-java-bridge-1.0.0.jar install -n <server-name> -c <jar-path> [-h <host>] [-p <port>]
java -jar mcp-java-bridge-1.0.0.jar --help

Create a new Gradle project with the followingbuild.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
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(); } }
# 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/ ├── 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

When you use uMCP in your project, it provides:

- Core abstractionsfor creating MCP tools
- MCPServer builderfor easy server setup
- Built-in TCP transportvia mcp-java-bridge
- Example implementationsto reference

- MCP Java SDK 0.10.0
- mcp-java-bridge 1.0.0
- Project Reactor (via SDK)
- SLF4J + Logback for logging
- Lombok for reducing boilerplate

While MCP Inspector expects stdio transport, you can test your uMCP server using the bridge:
- Start your uMCP server
- Use the mcp-java-bridge connector as an intermediary
- Point MCP Inspector to the connector

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

This installs uMCP to your local Maven repository (~/.m2/repository), making it available for your projects to use as a dependency.

This project is licensed under the MIT License - see theLICENSEfile for details.

This is a web browser that enables your coding agent, such as Claude Code, to visit websites on your behalf and assist you in identifying bugs or creating UI test cases.

A Spring Boot MCP server that provides company details, requiring the Claude Desktop application to function.

One shared context layer for AI agents and humans — live API specs, DB schemas, and versioned contracts across repos so every agent and teammate works from the same source of truth.

The MCP server for Bitrix24 provides AI assistants with structured access to the Bitrix24 API. It delivers up-to-date method descriptions, parameters, and valid values, allowing assistants to work with precise data instead of guesswork. This reduces code errors and accelerates Bitrix24 integration development.

Tool platform by IBM to build, test and deploy tools for any data source

One remote MCP server for 500+ production APIs — Stripe, HubSpot, Postgres, Gmail, and more. OAuth and API key auth, credential management, and a CLI.

An MCP server for interacting with the Postman API, requiring an API key.

Arbitrary code execution and tool-use platform for LLMs by Riza

A command-line tool for interacting with Shopify's Admin GraphQL API, Functions, and Polaris Web Components.

Single tool to control all 100+ API integrations, and UI components

Agent-native developer Q&A API with MCP + A2A endpoints for citations, job pickup, and answer submission.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.