Back to browse
GitHub Repository

Curl like MCP cli program

19 starsPython

Murl – Curl for MCP Servers

by turlockmike·Feb 21, 2026·5 points·2 comments

AI Analysis

●●SolidShip ItSolve My Problem

curl-for-MCP removes JSON-RPC boilerplate, but only works if you already know MCP servers.

Strengths
  • Genuinely solves friction: MCP is JSON-RPC-heavy and murl's virtual path mapping is elegant (e.g., `/tools/fetch` → `tools/call` + method name)
  • NDJSON streaming output + semantic exit codes make it agent-friendly; Homebrew install is frictionless
Weaknesses
  • MCP ecosystem is nascent; unclear if enough servers exist or will adopt murl-compatible interfaces
  • No examples of murl output; integration story with real agents (e.g., Claude, Anthropic SDK) is undocumented
Target Audience

AI agents, MCP server operators, AI engineers building autonomous workflows, CLI power users

Similar To

curl · HTTP client libraries

Post Description

I built murl because interacting with MCP (Model Context Protocol) servers from the command line was way more painful than it needed to be. MCP uses JSON-RPC 2.0 over HTTP, so every request means hand-crafting payloads with method names, params objects, and id fields. I wanted something that felt like curl.

Given an MCP server at https://mcp.deepwiki.com/mcp, murl lets you append virtual paths like /tools or /tools/read_wiki_structure that map to MCP methods. These aren't real HTTP endpoints — murl translates them into the right JSON-RPC calls behind the scenes:

# List all tools on a server (NDJSON — one JSON object per line) murl https://mcp.deepwiki.com/mcp/tools | jq -r '.name'

# Call a tool and extract the result murl https://remote.mcpservers.org/fetch/mcp/tools/fetch -d url=https://example.com | jq -r '.text'

# Query a repo's wiki structure murl https://mcp.deepwiki.com/mcp/tools/read_wiki_structure -d repoName=anthropics/claude-code | jq -r '.text'

The -d flags work like curl — key=value pairs get auto-coerced into typed JSON arguments. You can also pass raw JSON directly.

A few things beyond convenience:

MCP from plain Bash. Any agent with shell access can call MCP tools — no SDK, no client library, no MCP session management. Vercel recently wrote about replacing 80% of their agent's tools with bash and getting better results (https://vercel.com/blog/we-removed-80-percent-of-our-agents-...). murl makes MCP servers accessible in that same pattern.

OAuth built in. MCP servers behind OAuth (like Glean, or anything using RFC 7591 dynamic client registration) just work. First call opens the browser, tokens get cached and auto-refresh. --no-auth for public servers.

LLM-friendly by default. Compact NDJSON to stdout, structured JSON errors to stderr, semantic exit codes. -v for human-readable output.

Handles transport quirks. Streamable HTTP, session-based SSE (mcp-proxy), regular JSON responses — murl detects and handles them all.

You can try it right now against public servers:

brew install turlockmike/murl/murl murl https://mcp.deepwiki.com/mcp/tools | jq -r '.name'

https://github.com/turlockmike/murl

Similar Projects

Developer Tools●●Solid

CasperAI – A local MCP server for cross-platform engineering context

It stitches Slack threads, PRs, tickets and docs into a local "context lake" and can point a mention like handlePayment() straight to the file and related PRs — very practical for debugging and postmortems. The use of SQLite FTS5 for local full-text search plus MCP for a unified context layer is a smart, pragmatic combo; success will hinge on connector reliability and search/ranking quality, not the README.

Niche GemSolve My Problem
chose166
113mo ago