Skip to main content

Messora MCP Server

Messora exposes a Model Context Protocol (MCP) remote server over Streamable HTTP. It lets LLM agents (Claude, Codex, Cursor and other MCP clients) call scrape, crawl, search and query jobs and usage — reusing the same account, API key and credit pool as the REST API.

Endpoint

The /health endpoint is independent of the backend and returns {"status": "ok", "service": "messora-mcp"} without requiring authentication.

Authentication

The MCP uses only the Authorization: Bearer header:
The X-API-Key header used by the REST API is not accepted by the MCP. Always use Authorization: Bearer.
You need a Messora API key. If you don’t have one yet, create it at www.messora.dev/auth/signupAPI Keys.

Configuring clients

Claude Desktop

Claude Desktop uses a JSON config at ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
Restart Claude Desktop after saving. The Messora tools appear in the tool picker.
Claude Desktop does not support environment variable interpolation in config. Use a placeholder and replace it, or set the key directly — the file is local and not versioned.

Cursor

Cursor uses an .mcp.json file at the project root or ~/.cursor/mcp.json:
Restart Cursor or run Cursor → Settings → MCP → Refresh to load the server.

Codex CLI

Codex uses a config.toml file at ~/.codex/config.toml:
Export the API key before starting Codex:

MCP Inspector

In the Inspector, configure:
  • Transport type: Streamable HTTP
  • URL: https://mcp.messora.dev/mcp
  • Authentication: Bearer token
  • Token env var: MESSORA_API_KEY
Never hardcode your API key in versioned config files. For Codex, always use an environment variable ($MESSORA_API_KEY). For Claude Desktop and Cursor, the config is local (not versioned) — replace the placeholder with your key.

Available tools

The server exposes exactly five tools:

scrape_url

Extracts content from a URL. Consumes credit only when the backend returns scrape_status = success.

start_crawl

Starts an async crawl and returns job_id. Poll get_job until the state becomes SUCCESS, FAILURE or REVOKED. Starts an async premium search and returns job_id.

get_job

Queries the state of a crawl or search job. States: PENDINGSTARTEDSUCCESS | FAILURE | REVOKED
We recommend polling every 2 seconds with backoff. The MCP adapter does not perform internal polling or automatic retries of charged operations.

get_usage

Queries plan, credits used and account balance. No product arguments. Same payload as the REST GET /account/usage.

Async flow: start_*get_job

Crawl and search are async in the backend. The recommended flow is:

Response size

Every tool response is capped at 100,000 characters. If it exceeds that, text fields (markdown, rawHtml) are truncated while preserving structure, status, metering and valid JSON:

Errors

The MCP is a thin adapter: auth, billing, rate limiting and jobs belong to the FastAPI backend. The same limits and costs as the REST API apply.