Mcp Server Java Sse Http Demo

Mcp Server Java Sse Http Demo

🚀 天气 Java SSE 传输 MCP 服务

本项目是一个实现 Model Context Protocol (MCP) Java SDK 的工作示例,包含一个快速代理(fast-agent),用于与 Weather mcp-server 进行交互。它能帮助您了解如何构建一个完整的解决方案,利用多个 MCP 服务器(本地 Stdio 传输和远程 HTTP SSE 传输)。

项目亮点

  • 从头到尾展示完整解决方案,利用多种 MCP 服务器。
  • 避免引入过多 Spring 框架,满足不希望使用 Spring 的用户需求。

演示功能

在演示中,代理将完成以下操作:

  1. 全程使用 Claude Sonnet 3.7 处理大语言模型(LLM)部分。
  2. 调用 MCP 服务器上的 "fetch" 网络搜索工具,查找每个输入城市对应的经纬度。
  3. 使用经纬度值调用天气 MCP 服务器工具(本仓库实现),终端窗口上半部分可查看调用详细信息。
  4. 总结各个城市的天气预报,确定明天哪个城市最温暖。

代理会根据用户输入提示的内容上下文,自动决定要调用哪些工具。

相关链接

🚀 快速开始

✨ 主要特性

  • 实现 MCP Java SDK 的工作示例,可与 Weather mcp-server 交互。
  • 支持本地 Stdio 传输和远程 HTTP SSE 传输。
  • 自动根据用户输入上下文调用工具。

📦 安装指南

构建和启动 Weather MCP 服务器

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

安装、配置并启动 fast-agent

安装
pip install uv
uv pip install fast-agent-mcp
uv run agent.py
配置 Claude 和 OpenAI API 密钥

复制模板文件并进行编辑:

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

然后将您的 API 密钥添加到该配置文件中。

注意:Weather MCP 服务器配置

fastagent.config.yaml 中,我们已经为代理指定了可用的 MCP 服务器。在此示例中,我们的服务器使用 SSE HTTP 传输,这使得能够调用远程 MCP 服务器:

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

💻 使用示例

低级别测试

连接到 SSE 流
curl -v -H "Accept: text/event-stream" "http://localhost:8080/sse"
/mcp/messages 发送消息(注意:包含从 SSE 获取的 sessionId)
curl -X POST "http://localhost:8080/mcp/message?sessionId=b64ad193-6bb3-4e2e-b33c-27a23011acb4" -d '{"hi": "mynameis"}' | jq .

📚 详细文档

参考资料

🔧 技术细节

本项目主要使用 Java 实现 MCP 服务器,使用 Python 实现 fast-agent。在整个过程中,使用 Claude Sonnet 3.7 处理大语言模型部分,并通过调用 MCP 服务器上的工具完成网络搜索和天气查询等功能。

📄 许可证

文档未提及相关内容,故跳过该章节。

常用提示信息

⚠️ 重要提示

这并不是生产级别的代码,只是为了展示如何构建从头到尾的完整解决方案,使其能够利用多个 MCP 服务器(本地 Stdio 传输和远程 HTTP SSE 传输)。此外,还避免引入过多的 Spring 框架,以满足那些不希望使用 Spring 的用户的需求。

💡 使用建议

在使用前,请确保已经正确配置 Claude 和 OpenAI API 密钥,并按照文档中的步骤进行安装和配置。

  • 0 关注
  • 0 收藏,9 浏览
  • system 提出于 2025-09-20 17:54

相似服务问题