Skip to content

turlockmike/murl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

150 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

murl - MCP Curl

Tests

A curl-like CLI for Model Context Protocol (MCP) servers. Query tools, resources, and prompts using simple REST-like URLs.

LLM-friendly: compact JSON output, NDJSON streaming, structured errors to stderr, semantic exit codes. Built for agents to call from shell.

murl logo

Installation

Homebrew (Recommended)

brew install turlockmike/murl/murl

pip

pip install mcp-curl

Shell script

curl -sSL https://raw.githubusercontent.com/turlockmike/murl/master/install.sh | bash

To upgrade: brew upgrade turlockmike/murl/murl or murl --upgrade

Quick Start

# List tools on a server (NDJSON output — 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'

Public demo servers:

  • https://mcp.deepwiki.com/mcp — GitHub repository docs
  • https://remote.mcpservers.org/fetch/mcp — fetch web content

Usage

murl <url> [options]

URL Mapping

URL Path MCP Method
/tools tools/list
/tools/<name> tools/call
/resources resources/list
/resources/<path> resources/read
/prompts prompts/list
/prompts/<name> prompts/get

Examples

# List tools
murl http://localhost:3000/tools

# Call a tool
murl http://localhost:3000/tools/echo -d message=hello

# Multiple arguments (auto type-coerced)
murl http://localhost:3000/tools/weather -d city=Paris -d metric=true

# JSON data
murl http://localhost:3000/tools/config -d '{"settings": {"theme": "dark"}}'

# Custom headers
murl http://localhost:3000/tools -H "Authorization: Bearer token123"

# Verbose mode (pretty-prints output, shows request debug info)
murl http://localhost:3000/tools -v

# Pipe NDJSON to jq
murl http://localhost:3000/tools | jq -r '.name'

Options

Flag Description
-d, --data Add key=value or JSON data (repeatable)
-H, --header Add HTTP header (repeatable)
-v, --verbose Pretty-print output, show request debug info
--login Force OAuth re-authentication
--no-auth Skip all authentication
--version Show version info
--upgrade Upgrade to latest version

OAuth

murl supports OAuth 2.0 with Dynamic Client Registration (RFC 7591) and PKCE. Tokens are cached automatically.

# First call triggers browser-based OAuth flow
murl https://example.com/mcp/tools

# Skip auth for public servers
murl https://example.com/mcp/tools --no-auth

# Force re-authentication
murl https://example.com/mcp/tools --login

Documentation

Requirements

  • Python 3.10+

License

MIT

About

Curl like MCP cli program

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •