bkeane/qurl
3.1
If you are the rightful owner of qurl and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
QURL is an OpenAPI v3 REST client and MCP server designed to facilitate API exploration and execution with ease.
qurl
OpenAPI v3 REST client and MCP server.
Install
Linux/macOS:
curl -sS https://raw.githubusercontent.com/bkeane/qurl/main/install.sh | bash
Windows:
iwr -useb https://raw.githubusercontent.com/bkeane/qurl/main/install.ps1 | iex
Manual: Download from releases.
Quick Start
# Try it with the Swagger Petstore
export QURL_OPENAPI=https://petstore3.swagger.io/api/v3/openapi.json
qurl --docs
🔍 Explore
Use --docs to browse your API. The same options that configure requests also act as documentation filters:
qurl --docs # All endpoints
qurl --docs /pet/ # Endpoints under /pet
qurl --docs -X GET /pet # Method documentation
qurl --docs -X GET -X DELETE # All GET and DELETE endpoints
qurl --docs -X POST /pet/ # POST endpoints under /pet
Tab completion knows your API:
qurl <TAB> # Complete paths: /pet, /store, /user
qurl -X <TAB> # Complete methods: GET, POST, PUT, DELETE
qurl --server <TAB> # Complete servers from OpenAPI spec
qurl /pet/findByStatus --query sta<TAB> # Complete params: status=
🚀 Execute
Make requests with curl-like syntax:
# Using QURL_OPENAPI environment variable (recommended)
export QURL_OPENAPI=https://petstore3.swagger.io/api/v3/openapi.json
qurl /pet/findByStatus --query status=available # GET with query param
qurl -X DELETE /pet/123 # Delete pet by ID
qurl -v /store/inventory # Verbose output
# Direct URL (old fashioned way)
qurl https://api.example.com/users # GET request
qurl -X POST https://api.example.com/users # POST request
🔐 AWS
Native AWS service integration:
# HTTP compatible Lambda function invocation
qurl lambda://my-function/users
# HTTP compatible Lambda function ivocation via OpenAPI spec
export QURL_OPENAPI=lambda://my-function/openapi.json
qurl --docs
# API Gateway with SigV4
qurl --aws-sigv4 /users
# Any AWS service with SigV4
AWS_REGION=us-east-1 qurl --aws-sigv4 --aws-service sts \
-X POST -d "Action=GetCallerIdentity&Version=2011-06-15" \
https://sts.amazonaws.com/
🤖 MCP
Start an MCP server for LLM integration. Request filters act as safety constraints:
qurl --mcp # Full API access
qurl --mcp -X GET # Read-only access
qurl --mcp /pet/ # Only /pet endpoints
qurl --mcp -X GET -X POST /pet # Only GET/POST on /pet
qurl --mcp -H "Authorization: Bearer $TOKEN" # Include header in all requests
Use with Claude Desktop, Cline, or any MCP client.
{
"mcpServers":{
"petstore":{
"command":"qurl",
"args":[
"--mcp",
"-X", "GET",
"-H", "Authorization: Bearer $TOKEN"
],
"env":{
"QURL_OPENAPI":"https://petstore3.swagger.io/api/v3/openapi.json",
"QURL_MCP_DESCRIPTION":"Petstore API - manage pets, orders, and users in the pet store"
}
}
}
}
Configuration
# OpenAPI and Server
export QURL_OPENAPI=https://api.example.com/openapi.yaml # OpenAPI spec URL
export QURL_SERVER=https://staging.api.com # Override server URL
# Logging
export QURL_LOG_LEVEL=debug # Log verbosity (debug, info, warn, error)
export QURL_LOG_FORMAT=json # Log format (json, pretty)
# MCP
export QURL_MCP_DESCRIPTION="API description and purpose" # Help LLM understand when to use this API