Prerequisites
Before you start, make sure you have:
- A Spring Boot app with at least one
@RestController - Claude Desktop installed (claude.ai/download)
- A free MCP Forge account — sign up here
Copy your controller
Open your Spring Boot project and copy the source of a @RestController. Here's a typical example — yours will look similar:
@RestController @RequestMapping("/api/orders") public class OrderController { @GetMapping("/{id}") public Order getOrder(@PathVariable String id) { ... } @GetMapping public List<Order> listOrders( @RequestParam("status") String status) { ... } @PostMapping public Order createOrder(@RequestBody CreateOrderRequest req) { ... } @PutMapping("/{id}/status") public Order updateStatus(@PathVariable String id, @RequestBody StatusUpdate update) { ... } @DeleteMapping("/{id}") public void cancelOrder(@PathVariable String id) { ... } }
Paste into the dashboard
Sign in to your dashboard, go to the Deploy tab, and paste your controller code into the editor. The label reads "Spring Boot, Express.js, or FastAPI" — all three are auto-detected.
Click Generate + Deploy MCP Server →. MCP Forge will scan your annotations and generate tool definitions for every endpoint it finds.
Review the generated tools
Within a few seconds the dashboard shows the tools extracted from your controller:
Your MCP server is now live at a URL like https://api.main-duck.com/mcp/{tenantId}/sse — visible in the dashboard under Your MCP Endpoint.
Add to Claude Desktop
Open Claude Desktop → Settings → Developer → Edit Config. Add your MCP server to claude_desktop_config.json:
{
"mcpServers": {
"my-orders-api": {
"url": "https://api.main-duck.com/mcp/YOUR_TENANT_ID/sse"
}
}
}
Replace YOUR_TENANT_ID with the value shown in your dashboard. Save the file and restart Claude Desktop.
Optional: Auto-sync on push
If you add or rename endpoints, you'd normally re-paste. Instead, connect GitHub auto-sync so MCP Forge re-deploys your tools every time you push:
- Go to Dashboard → GitHub Sync
- Paste your repo URL and a GitHub Personal Access Token (read scope)
- Set the branch you want watched (default:
main) - Copy the webhook URL and add it in GitHub → Settings → Webhooks
Every push to the configured branch now triggers an automatic re-deploy with no manual steps.