MCP ExplorerExplorer

Model Context Protocol Java Tutorial

@stantonkon 10 months ago
2 MIT
FreeCommunity
AI Systems
#agentic-ai#ai#java#jetty#mcp-server
model-context-protocol-java-tutorial

Overview

What is Model Context Protocol Java Tutorial

model-context-protocol-java-tutorial is a demonstration project that implements the Model Context Protocol using Java. It provides a working example of how to interact with multiple MCP Servers, both local and remote, through a fast-agent designed for weather data retrieval.

Use cases

Use cases include querying weather forecasts for multiple cities, summarizing weather data, and determining the warmest city based on user queries. It can be utilized in various domains such as travel planning, event management, and personal assistant applications.

How to use

To use model-context-protocol-java-tutorial, you need to build and start the Weather MCP Server using Maven, and then install and configure the fast-agent. You can run the agent after setting up the necessary API keys in the configuration files.

Key features

Key features include a fast-agent for efficient interaction with MCP Servers, the ability to fetch weather data based on user input, and integration with Claude Sonnet for LLM capabilities. It also supports both local (Stdio Transport) and remote (HTTP SSE Transport) MCP Servers.

Where to use

model-context-protocol-java-tutorial can be used in applications that require real-time weather data retrieval and processing, such as weather forecasting tools, chatbots, and other interactive applications that leverage LLMs.

Content

Weather Java SSE Transport MCP Service

A working implementation Model Context Protocol java-sdk. Includes
a fast-agent for the MCP Client to interact with the Weather mcp-server.

⚠️This isn’t remotely production grade, just demonstrating how to build
something working end to end that can leverage multiple MCP Servers both
local (Stdio Transport) and remote (HTTP SSE Transport). Also avoids
pulling in as much of Spring as possible, for those who don’t want it.

In the demo, you’ll see the agent:

  1. The agent uses Claude Sonnet 3.7 throughout for the LLM bits
  2. The agent calls out to the “fetch” websearch MCP Server tool to look up lat/long for each city I asked for.
  3. The agent then uses those lat/long values to call the weather MCP Server tool (implemented in this repository).
    You can see the calls being made in the upper half of the terminal split window.
  4. The agent summarizes the forecasts and determine which of the 4 cities is the warmest tomorrow.

The agent is figuring out which tools to call from the context of the user’s inputted prompts.

Description of image

build and start Weather MCP Server

mvn clean package
java -jar java -jar mcp-server/target/mcp-server-1.0-SNAPSHOT.jar

install, configure, and start fast-agent

install

pip install uv
uv pip install fast-agent-mcp
uv run agent.py

Configure Claude and OpenAI api keys

cp fastagent.secrets.yaml.TEMPLATE fastagent.secrets.yaml

then add your api keys to that config file.

Note: Weather MCP Server config

Note, in fastagent.config.yaml we’ve configured the MCP Servers available to the agent,
in this case our server uses the SSE HTTP Transport, this enables
calling remote MCP Servers :).

mcp:
    servers:
        weather:
            transport: "sse"
            read_timeout_seconds: 10
            url: "http://localhost:8080/sse"

Lower level for testing

Connect to SSE stream

curl -v -H "Accept: text/event-stream" "http://localhost:8080/sse"

Send messages to /mcp/messages (note, include sessionId from SSE)

curl -X POST "http://localhost:8080/mcp/message?sessionId=b64ad193-6bb3-4e2e-b33c-27a23011acb4" -d '{"hi": "mynameis"}' | jq .

Things to check out:

Tools

No tools

Comments

Recommend MCP Servers

View All MCP Servers