DOCS NAV · CLIENTS & CODE SAMPLES ▾
CLIENTS & CODE SAMPLES
Drop-in configs for every major MCP-compatible client, plus raw HTTP examples in four languages.
CLAUDE DESKTOP
Edit your Claude Desktop config:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"weather": {
"url": "https://proxy.mcpmeter.com/weather",
"headers": {
"Authorization": "Bearer mcpm_live_…"
}
},
"currency": {
"url": "https://proxy.mcpmeter.com/currency",
"headers": { "Authorization": "Bearer mcpm_live_…" }
}
}
}
Restart Claude Desktop. The tools appear in the tool drawer next to the chat input.
CLAUDE CODE CLI
Anthropic's CLI tool. Two ways to add the listing — via the helper command or by editing the JSON directly.
Via CLI helper
claude mcp add weather \ --transport http \ https://proxy.mcpmeter.com/weather \ --header "Authorization: Bearer $MCPM_KEY"
Scope it to the current project (default), your user account, or all sessions with --scope project|user|local.
By editing the config file
Same shape as Claude Desktop. Edit ~/.claude.json (user) or .mcp.json in a project root:
{
"mcpServers": {
"weather": {
"url": "https://proxy.mcpmeter.com/weather",
"headers": {
"Authorization": "Bearer mcpm_live_…"
}
}
}
}
Run claude mcp list to confirm the server is registered, then claude to start a session — the tools appear in the tool drawer.
CURSOR
Cursor reads MCP servers from ~/.cursor/mcp.json. The shape is identical to Claude Desktop:
{
"mcpServers": {
"weather": {
"url": "https://proxy.mcpmeter.com/weather",
"headers": {
"Authorization": "Bearer mcpm_live_…"
}
}
}
}
Open a new chat (or reload the workspace) for the tools to appear.
GEMINI CLI
Google's open-source CLI for Gemini. Reads MCP servers from ~/.gemini/settings.json (user) or .gemini/settings.json (project). HTTP transport uses the httpUrl field:
{
"mcpServers": {
"weather": {
"httpUrl": "https://proxy.mcpmeter.com/weather",
"headers": {
"Authorization": "Bearer mcpm_live_…"
}
}
}
}
Restart the CLI, or run /mcp list inside the chat to confirm. Run /mcp refresh to re-discover tools after the proxy listing changes.
OPENAI CODEX CLI
OpenAI's codex CLI uses TOML at ~/.codex/config.toml. HTTP MCP servers are configured per slug:
[mcp_servers.weather] url = "https://proxy.mcpmeter.com/weather" [mcp_servers.weather.headers] Authorization = "Bearer mcpm_live_…"
Older Codex builds only support stdio MCPs. If yours doesn't recognise a remote url, bridge it with mcp-remote:
[mcp_servers.weather] command = "npx" args = ["-y", "mcp-remote", "https://proxy.mcpmeter.com/weather", "--header", "Authorization: Bearer ${MCPM_KEY}"]
Restart codex; the tools register on the next session.
CONTINUE.DEV
Continue uses ~/.continue/config.yaml. Add an mcpServers entry:
mcpServers: - name: weather url: https://proxy.mcpmeter.com/weather headers: Authorization: Bearer mcpm_live_…
OPENAI APPS SDK
Pass the proxy URL and bearer header to connect:
from openai_apps import connect import os mcp = connect( "https://proxy.mcpmeter.com/weather", headers={"Authorization": f"Bearer {os.environ['MCPM_KEY']}"}, )
OPENROUTER
OpenRouter exposes MCP servers via the tools array on chat-completions requests. Drop the proxy URL + bearer there:
{
"tools": [{
"type": "mcp",
"mcp": {
"server_url": "https://proxy.mcpmeter.com/weather",
"headers": {
"Authorization": "Bearer mcpm_live_…"
}
}
}]
}
RAW HTTP
If you're building a custom MCP client, the proxy speaks JSON-RPC 2.0 over HTTP and SSE. The minimal "list tools" call:
curl
curl -X POST https://proxy.mcpmeter.com/weather \ -H "Authorization: Bearer $MCPM_KEY" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Python (httpx)
import httpx, os r = httpx.post( "https://proxy.mcpmeter.com/weather", headers={"Authorization": f"Bearer {os.environ['MCPM_KEY']}"}, json={"jsonrpc": "2.0", "id": 1, "method": "tools/list"}, timeout=30, ) print(r.json()) print("billed:", r.headers["X-Mcpmeter-Billed"])
Node (fetch)
const res = await fetch("https://proxy.mcpmeter.com/weather", { method: "POST", headers: { "Authorization": `Bearer ${process.env.MCPM_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ jsonrpc: "2.0", id: 1, method: "tools/list" }), }); console.log(await res.json()); console.log("billed:", res.headers.get("X-Mcpmeter-Billed"));
Go
package main import ( "bytes"; "net/http"; "os"; "io"; "fmt" ) func main() { body := []byte(`{"jsonrpc":"2.0","id":1,"method":"tools/list"}`) req, _ := http.NewRequest("POST", "https://proxy.mcpmeter.com/weather", bytes.NewReader(body)) req.Header.Set("Authorization", "Bearer "+os.Getenv("MCPM_KEY")) req.Header.Set("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() out, _ := io.ReadAll(res.Body) fmt.Println(string(out)) fmt.Println("billed:", res.Header.Get("X-Mcpmeter-Billed")) }
CALLING A TOOL
Once you've listed tools, call one with tools/call:
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get_current",
"arguments": { "city": "Tbilisi" }
}
}
The exact tool names and argument schemas come from tools/list — or browse the listing's detail page on the marketplace.