MCPInstall
mcpx4j logo

mcpx4j

by dylibso 29 stars dylibso/mcpx4j

Java client library for https://mcp.run - call portable and secure tools for your AI Agents and Apps

READMEmain

MCPX4J

The MCP.RUN client library for Java!

Installation

<dependencies>
    <dependency>
       <groupId>com.dylibso.mcpx4j</groupId>
        <artifactId>mcpx4j</artifactId>
        <version>${mcpx4j.version}</version>
    </dependency>
</dependencies>

Quick Start

Create a new Mcpx instance with your API key and start invoking your installed tools.

import com.github.dylibso.mcpx4j.Mcpx;

Mcpx mcpx = Mcpx.forApiKey(apiKey).build();
mcpx.refreshInstallations();
var servlet = mcpx.get("my-servlet-id");
var tool = servlet.get("my-tool-id");
var bytes = servlet.call("""
{
    "method": "tools/call",
    "params": {
        "name": "my-tool-id",
        "arguments": {
            ...
        }  
    }
}
""");

Detailed examples are available in the examples directory.

Plugin Updates

Mcpx keeps a cache of installations. You can refresh the cache by calling refreshInstallations(). The internal store is thread-safe, so you can schedule a refresh in a separate thread.

var scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleAtFixedRate(mcpx::refreshInstallations, 0, 5, TimeUnit.MINUTES);

Configuration

It is possible to provide an alternative base URL for the mcp.run service (defaults to https://www.mcp.run).

var mcpx = Mcpx.forApiKey(apiKey)
    .withBaseUrl(jsonDecoder)
    ...
    .build();

The Mcpx builder allows to customize the JSON decoder and the HTTP client.

JSON Decoder

var mcpx = Mcpx.forApiKey(apiKey)
    .withBaseUrl("https://localhost:8080")
    ...
    .build();

The default JSON decoder is JacksonDecoder, using Jackson Databind. We also provide an alternative implementation based on Jakarta JSON-P.

Both dependencies are optional, so you should make sure to include them in your project if you want to use them.

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson-databind.version}</version>
    </dependency>

    <!-- Eclipse Parsson is an implementation of the Jakarta JSON-P API  -->
    <dependency>
        <groupId>org.eclipse.parsson</groupId>
        <artifactId>parsson</artifactId>
        <version>${parsson.version}</version>
    </dependency>

HTTP Client

var mcpx = Mcpx.forApiKey(apiKey)
    .withHttpClientAdapter(httpClientAdapter)
    ...
    .build();

The default HTTP client is JdkHttpClientAdapter, using the JDK HTTP client, there is also a lighter-weight implementation using an HttpURLConnection, called HttpUrlConnectionClientAdapter.

var mcpx = Mcpx.forApiKey(apiKey)
    .withHttpClientAdapter(new JdkHttpClientAdapter())
    .withHttpClientAdapter(new HttpUrlConnectionClientAdapter()) // alternatively
    ...
    .build();

The HttpClientAdapter interface is currently borrowed from the Chicory Extism SDK. This might change in the future.

Servlet Options

It is also possible to provide predefined options for the Servlet implementation: these config options are propagated to the Chicory Extism SDK upon creation of each Servlet.

var mcpx = Mcpx.forApiKey(apiKey)
    .withServletOptions(McpxServletOptions.builder()
        .withChicoryHttpConfig(...)
        .withChicoryLogger(...)
        .withAoT() 
        .build())
    .build();
  • ChicoryHttpConfig controls the HTTP client and Json decoder used by the Chicory SDK: usually these should match the ones used by the MCPX4J client.
  • ChicoryLogger is a logger implementation for the Chicory SDK.
  • AoT enables the Ahead-of-Time compilation for the Chicory SDK.

More AI Chatbot MCP servers

Similar servers from the same category.

Jentic

jentic

Enables AI assistants to discover and execute external APIs and workflows through a Python SDK that leverages the Open Agentic Knowledge repository for standardized API access and execution.

AI Chatbot

Provides a bridge to the Flyworks AI lipsync service, enabling creation of digital avatar videos synchronized with audio inputs through a simple API.

git

Official JavaScript implementation that integrates with MiniMax's multimodal capabilities for image generation, video creation, text-to-speech, and voice cloning across multiple transport modes.

APIVideo+7

Provides a bridge to Mureka.ai's music generation capabilities, enabling on-demand creation of lyrics, complete songs, and instrumental tracks without requiring specialized music production knowledge.

AI Chatbot