How to Connect Spring AI MCP Apps to Claude Desktop with mcp-remote Proxy
Problem
When I tried to connect my Spring AI MCP server to Claude Desktop, I couldn’t make it work. I had my MCP server running on localhost:3001, but Claude Desktop just wouldn’t see it.
I checked my Spring AI configuration:
spring: ai: mcp: server: type: SYNC name: my-mcp-server version: 1.0.0The server was running fine. But Claude Desktop couldn’t connect to it.
Environment
- Spring AI 1.0.0
- Claude Desktop (latest)
- Java 21
- macOS
What happened?
I was trying to connect Claude Desktop to my Spring AI MCP server. My server uses the Streamable HTTP transport, which is the default for Spring AI MCP servers.
But when I configured Claude Desktop’s claude_desktop_config.json:
{ "mcpServers": { "my-app": { "url": "http://localhost:3001/mcp" } }}Claude Desktop just ignored it. No connection, no tools visible.
The problem is: Claude Desktop doesn’t support the Streamable HTTP or SSE transports that Spring AI MCP servers use. Claude Desktop expects MCP servers to use a stdio-based protocol—where it launches the server as a subprocess and communicates via stdin/stdout.
How to solve it?
I found the solution: use mcp-remote, an npm package that acts as a proxy between Claude Desktop’s stdio protocol and HTTP-based MCP servers.
Step 1: Start your Spring AI MCP server
First, make sure your Spring AI MCP server is running:
./gradlew bootRun
# Or with Maven./mvnw spring-boot:runYour server should be running on port 3001 (or whichever port you configured).
Step 2: Configure Claude Desktop with mcp-remote
Edit your Claude Desktop configuration file:
- macOS/Linux:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{ "mcpServers": { "my-spring-ai-app": { "command": "npx", "args": [ "-y", "mcp-remote", "http://localhost:3001/mcp" ] } }}Note the -y flag—it’s important! Without it, npx will prompt for confirmation and Claude Desktop will hang.
Step 3: Restart Claude Desktop
Close and reopen Claude Desktop. It will now launch mcp-remote as a subprocess, which connects to your HTTP-based MCP server.
Now when I chat with Claude, I can see my MCP tools are available.
Multiple MCP Servers
If you have multiple Spring AI MCP apps, you can configure them all:
{ "mcpServers": { "app-one": { "command": "npx", "args": ["-y", "mcp-remote", "http://localhost:3001/mcp"] }, "app-two": { "command": "npx", "args": ["-y", "mcp-remote", "http://localhost:3002/mcp"] } }}How mcp-remote Works
Here’s what happens when Claude Desktop connects to your Spring AI MCP app:
┌─────────────────┐ ┌──────────────┐ ┌──────────────────────┐│ Claude Desktop │ stdio │ mcp-remote │ HTTP │ Spring AI MCP Server ││ │ ◄─────► │ proxy │ ◄─────► │ (localhost:3001) │└─────────────────┘ └──────────────┘ └──────────────────────┘ │ │ │ │ Launch subprocess │ │ │ ─────────────────────────►│ │ │ │ HTTP POST /mcp │ │ │ ─────────────────────────►│ │ │ │ │ Tool request (stdio) │ │ │ ─────────────────────────►│ Forward via HTTP │ │ │ ─────────────────────────►│ │ │ │ │ │ Tool response (HTTP) │ │ Tool response (stdio) │ ◄─────────────────────────│ │ ◄─────────────────────────│ │The mcp-remote package bridges the gap between Claude Desktop’s stdio-based protocol and your HTTP-based MCP server.
Alternative: MCP Jam
If you want a simpler setup without the proxy, try MCP Jam. It’s an MCP client that supports direct HTTP connections:
{ "mcpServers": { "spring-ai-app": { "transport": "streamable-http", "url": "http://localhost:3001/mcp" } }}MCP Jam supports the Streamable HTTP transport natively, so no proxy is needed.
Client Comparison
| Feature | Claude Desktop + mcp-remote | MCP Jam | Goose |
|---|---|---|---|
| Direct HTTP | No (needs proxy) | Yes | Yes |
| Streamable HTTP | Yes (via proxy) | Yes | Yes |
| updateModelContext | Yes | Yes | No |
| Setup complexity | Higher | Simple | Simple |
Common Mistakes
I made these mistakes when setting this up:
- Forgetting the
-yflag - npx prompts for confirmation and Claude Desktop hangs - Wrong URL format - Must include the
/mcppath, not justhttp://localhost:3001 - Not starting the Spring AI server first - mcp-remote fails to connect
- Wrong config file location - Make sure you’re editing the correct path for your OS
Summary
In this post, I showed how to connect Spring AI MCP Apps to Claude Desktop using the mcp-remote proxy. The key point is Claude Desktop uses a stdio-based protocol and cannot directly connect to HTTP-based MCP servers—you need the mcp-remote npm package to bridge the gap. The configuration is straightforward: npx -y mcp-remote http://localhost:3001/mcp.
Final Words + More Resources
My intention with this article was to help others share my knowledge and experience. If you want to contact me, you can contact by email: Email me
Here are also the most important links from this article along with some further resources that will help you in this scope:
- 👨💻 Spring AI MCP Documentation
- 👨💻 mcp-remote npm package
- 👨💻 MCP Jam
Oh, and if you found these resources useful, don’t forget to support me by starring the repo on GitHub!
Comments