Skip to content

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:

application.yml
spring:
ai:
mcp:
server:
type: SYNC
name: my-mcp-server
version: 1.0.0

The 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:

claude_desktop_config.json (WRONG)
{
"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:

Start MCP server
./gradlew bootRun
# Or with Maven
./mvnw spring-boot:run

Your 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
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:

Multiple MCP servers config
{
"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:

mcp-remote proxy flow
┌─────────────────┐ ┌──────────────┐ ┌──────────────────────┐
│ 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:

MCP Jam config (no proxy needed)
{
"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

FeatureClaude Desktop + mcp-remoteMCP JamGoose
Direct HTTPNo (needs proxy)YesYes
Streamable HTTPYes (via proxy)YesYes
updateModelContextYesYesNo
Setup complexityHigherSimpleSimple

Common Mistakes

I made these mistakes when setting this up:

  1. Forgetting the -y flag - npx prompts for confirmation and Claude Desktop hangs
  2. Wrong URL format - Must include the /mcp path, not just http://localhost:3001
  3. Not starting the Spring AI server first - mcp-remote fails to connect
  4. 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:

Oh, and if you found these resources useful, don’t forget to support me by starring the repo on GitHub!

Comments