Introduction

mcp-anything is a stateless Go proxy that converts REST APIs, shell commands, and JavaScript scripts into MCP tools — no code, no plugins, just a YAML config file.

What it does

Point it at an OpenAPI spec, a CLI tool, or a JavaScript file. The proxy generates MCP tools automatically and handles the full request lifecycle: auth, schema validation, request/response transforms, error mapping, and observability.

Any MCP-compatible client (Claude, Cursor, etc.) connects to http://localhost:8080/mcp and immediately has access to all configured tools.

Quick start — Kraken Market Data

The Kraken cryptocurrency exchange offers a public REST API with no authentication required. Download the example config files and start the proxy:

1. Download config, spec, and overlay

mkdir -p kraken && cd kraken
curl -sLO https://raw.githubusercontent.com/gaarutyunov/mcp-anything/main/examples/kraken/config.yaml
curl -sLO https://raw.githubusercontent.com/gaarutyunov/mcp-anything/main/examples/kraken/spec.yaml
curl -sLO https://raw.githubusercontent.com/gaarutyunov/mcp-anything/main/examples/kraken/overlay.yaml

2. Install and run

go install github.com/gaarutyunov/mcp-anything/cmd/proxy@latest
CONFIG_PATH=config.yaml proxy

Your MCP client now has five tools:

ToolDescription
kraken__get_system_statusExchange status and server time
kraken__get_tickerReal-time prices for any trading pair
kraken__get_ohlcOHLC candlestick data
kraken__get_order_bookLive order book depth
kraken__get_recent_tradesMost recent public trades

Three types of tools

The proxy supports three upstream types that can be mixed in the same config:

  • HTTP — connect to any REST API with an OpenAPI 3.0 spec. Tools are auto-generated from operations. See HTTP APIs.
  • Command — wrap any CLI tool with typed arguments. See Shell Commands.
  • Script — custom logic in a sandboxed JavaScript runtime. See JavaScript Scripts.

Key concepts

  • Stateless — no shared mutable state; every pod is identical
  • Tool prefix — each upstream has a tool_prefix; tools are named {prefix}__{operation}
  • Overlays — customize any OpenAPI operation via RFC 9535 JSONPath without touching the original spec
  • Groups — serve different tool subsets at different endpoints from the same upstreams
  • Hot-reload — config and spec changes are applied atomically without restarting

Docker

docker run -p 8080:8080 \
  -v $(pwd):/etc/mcp-anything \
  -w /etc/mcp-anything \
  ghcr.io/gaarutyunov/mcp-anything:latest

What's next