# extracto-mcp [Health: Active]

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/massanaRoger/extracto-mcp  
**GitHub Stars:** 0  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/extracto-mcp

## Description
Turn any URL plus a schema into validated, typed JSON via the Extracto API.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "extracto-mcp": {
    "command": "npx",
    "args": ["-y","extracto-mcp"]
  }
}
```

## Documentation & README

# extracto-mcp

[Model Context Protocol](https://modelcontextprotocol.io) server for [Extracto](https://getextracto.dev). 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](https://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):

```json
{
  "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

```bash
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

| Tool            | What it does |
| --------------- | ------------ |
| `extract`       | Synchronous extraction from a single URL (up to ~90s). Returns `{ data, meta }`. |
| `extract_async` | Submit an async job for heavy or anti-bot pages. Returns a job id immediately. |
| `get_job`       | Poll an async job for status and result. |
| `list_jobs`     | List 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" } }`

```json
{
  "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:

| Variable             | Required | Description |
| -------------------- | -------- | ----------- |
| `EXTRACTO_API_KEY`   | yes      | Your key from [app.getextracto.dev/keys](https://app.getextracto.dev/keys). |
| `EXTRACTO_BASE_URL`  | no       | Override the API host (defaults to `https://app.getextracto.dev`). |
| `EXTRACTO_TIMEOUT_MS`| no       | Per-request timeout in ms (default `90000`). |

## Development

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

## Related

- [`extracto`](https://www.npmjs.com/package/extracto) — the official TypeScript/JavaScript SDK.
- [getextracto.dev](https://getextracto.dev) — docs and API reference.

## License

MIT

