mcpField
E
Extracto

Extracto

Local
github.com/massanaRogerBrowser Automation0Updated 20w ago

About Extracto

Extracto is an MCP server that turns a URL and a typed schema into validated JSON for MCP clients. It offers synchronous and asynchronous extraction, with absent fields returned as null rather than guessed.

Key features

  1. 01Extract typed data from a URL
  2. 02Validate output against a schema
  3. 03Return missing fields as null
  4. 04Run asynchronous extraction jobs
  5. 05Check job status and list recent jobs

Use cases

  1. 01Collect structured fields from a web page
  2. 02Extract data from heavy or anti-bot pages asynchronously
  3. 03Retrieve article or product details in a defined JSON shape

MCP support

Exposes URL extraction and asynchronous job-management tools to MCP clients. The stdio server uses an Extracto API key.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"extracto": {
"command": "npx",
"args": [
"-y",
"extracto-mcp"
],
"env": {
"EXTRACTO_API_KEY": "<EXTRACTO_API_KEY>",
"EXTRACTO_BASE_URL": "<EXTRACTO_BASE_URL>",
"EXTRACTO_TIMEOUT_MS": "<EXTRACTO_TIMEOUT_MS>"
}
}
}
}
Run commandnpx -y extracto-mcp
Environment variables to set
EXTRACTO_API_KEYSecretYour Extracto API key from https://app.getextracto.dev/keys
EXTRACTO_BASE_URLOverride the API host (defaults to https://app.getextracto.dev)
EXTRACTO_TIMEOUT_MSPer-request timeout in milliseconds (default 90000)

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npmextracto-mcp0.1.2

Tools

4

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
urlstringYesThe public HTTPS URL to extract from.
schemaobjectYesAn object mapping each field name to a type. A type is one of the literals "string", "number", "boolean", "array", "object"; OR a one-element array for a list (e.g. ["string"] for a list of strings, or [{ "title": "string", "price": "number" }] for a list of objects); OR a nested object (e.g. { "author": { "name": "string" } }). Use the most specific shape you can. Example: { "title": "string", "price": "number", "tags": ["string"], "reviews": [{ "user": "string", "stars": "number" }] }.
examplesarrayNoUp to 3 few-shot examples to anchor the output format.

Details

From the project README

extracto-mcp

Model Context Protocol server for Extracto. It gives Claude, Cursor, Claude Code, and any MCP client the ability to turn a URL plus a schema into validated, typed JSON — no prompt engineering, no HTML parsing, and no hallucinated fields (missing data comes back as null).

Quick start

You need an Extracto API key. Get one at app.getextracto.dev/keys.

The server runs over stdio and is published to npm, so most clients just need this config block.

Claude Desktop

Edit claude_desktop_config.json (Settings → Developer → Edit Config):

{
  "mcpServers": {
    "extracto": {
      "command": "npx",
      "args": ["-y", "extracto-mcp"],
      "env": { "EXTRACTO_API_KEY": "exa_live_your_key_here" }
    }
  }
}
Cursor

Add to ~/.cursor/mcp.json (or the project .cursor/mcp.json) with the same block.

Claude Code
claude mcp add extracto -e EXTRACTO_API_KEY=exa_live_your_key_here -- npx -y extracto-mcp

Restart the client and ask it to extract something, e.g. "Use extracto to pull the title, language and star count from github.com/facebook/react."

Tools

ToolWhat it does
extractSynchronous extraction from a single URL (up to ~90s). Returns { data, meta }.
extract_asyncSubmit an async job for heavy or anti-bot pages. Returns a job id immediately.
get_jobPoll an async job for status and result.
list_jobsList your recent async jobs.
The schema argument

A schema is an object mapping field names to types. A type is:

  • a literal: "string", "number", "boolean", "array", "object"
  • a one-element array for a list: ["string"], or [{ "title": "string" }]
  • a nested object: { "author": { "name": "string" } }
{
  "title": "string",
  "price": "number",
  "tags": ["string"],
  "reviews": [{ "user": "string", "stars": "number" }]
}

Only fields that are actually found on the page are returned; anything missing is null rather than guessed.

Configuration

All configuration is via environment variables passed by your MCP client:

VariableRequiredDescription
EXTRACTO_API_KEYyesYour key from app.getextracto.dev/keys.
EXTRACTO_BASE_URLnoOverride the API host (defaults to https://app.getextracto.dev).
EXTRACTO_TIMEOUT_MSnoPer-request timeout in ms (default 90000).

Development

npm install
npm run dev        # run from source with tsx
npm run typecheck
npm run build      # bundle to dist/ with tsup

Related

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.