extrapify
by christ0pper
README.md
# Extrapify MCP
Extract structured JSON from any public webpage inside Claude Desktop, Cursor, or any MCP-compatible client.
Define a schema. Point it at a URL. Get back validated, typed JSON.
**Get an API key → [extrapify.com](https://extrapify.com)**
---
## What this is
A thin, stateless MCP server that bridges MCP clients to the hosted [Extrapify API](https://extrapify.com).
Extraction does not happen inside this package. The MCP server forwards requests to the Extrapify API, which handles fetching, Browserless rendering for JS-heavy pages, Claude-powered extraction, schema validation, quota accounting, and observability on the backend.
- MCP protocol server over stdio
- One tool: `extract_structured_data`
- Production-ready bridge, not a scraping framework
- No extraction logic, no state, no side effects
---
## Install
```bash
npm install
```
Copy `.env.example` to `.env` and fill in your credentials:
```bash
EXTRAPIFY_API_BASE_URL=https://extrapify.com
EXTRAPIFY_API_KEY=sk_live_your_key_here
```
Start the server:
```bash
npm run mcp:start
```
---
## Claude Desktop setup
Add this block to your Claude Desktop config (`claude_desktop_config.json`):
```json
{
"mcpServers": {
"extrapify": {
"command": "node",
"args": ["/absolute/path/to/extrapify-mcp/mcp/server.mjs"],
"env": {
"EXTRAPIFY_API_BASE_URL": "https://extrapify.com",
"EXTRAPIFY_API_KEY": "sk_live_your_key_here"
}
}
}
}
```
Restart Claude Desktop. The `extract_structured_data` tool will appear automatically.
---
## Cursor setup
Cursor supports stdio MCP servers. Point it at `node` and the local `mcp/server.mjs` entrypoint with the same two environment variables.
See [docs/mcp-install-examples.md](./docs/mcp-install-examples.md) for copy-paste configs.
---
## Tool: `extract_structured_data`
Retrieve structured JSON from any public webpage using a schema you define.
**Input:**
```json
{
"url": "https://example.com/article",
"mode": "auto",
"schema": {
"title": "string",
"author": "string",
"published_at": "date",
"tags": "string[]"
}
}
```
**Output:**
```json
{
"extracted": {
"title": "How Claude Agents Are Changing Developer Workflows",
"author": "Jane Smith",
"published_at": "2026-04-15",
"tags": ["AI", "agents", "developer tools"]
},
"type": "single",
"count": 1,
"confidence": 0.96,
"tokens_used": 1820
}
```
**Supported schema types:**
`string`, `number`, `integer`, `float`, `boolean`, `date`, `datetime`, `url`, and any of these as arrays using `[]` suffix (e.g. `string[]`).
**Supported `mode` values:**
- `auto` — let Extrapify decide based on page structure
- `single` — extract the primary item only
- `list` — extract all matching items as an array
---
## Schema templates
Starter schemas for common use cases (product pages, job listings, articles, company data) are in [docs/schema-templates.md](./docs/schema-templates.md).
---
## Example workflows
Agent patterns and demo workflows are in [docs/demo-workflows.md](./docs/demo-workflows.md).
---
## Other compatible clients
Any MCP client that supports stdio transport works with this package. Typically you only need:
- `command`: `node`
- `args`: absolute path to `mcp/server.mjs`
- `env`: `EXTRAPIFY_API_BASE_URL` and `EXTRAPIFY_API_KEY`
---
## Troubleshooting
| Symptom | Fix |
|---|---|
| Server exits immediately | Verify `EXTRAPIFY_API_BASE_URL` is a valid absolute URL |
| Tool calls return `401` or `403` | Check your API key at [extrapify.com/dashboard](https://extrapify.com/dashboard) |
| Client cannot discover tools | Confirm it is launching `node` against `mcp/server.mjs` over stdio |
| Requests time out | Verify the Extrapify API is reachable from your machine |
| JS-heavy pages return empty content | Extrapify handles Browserless fallback automatically — no action needed |
---
## Repository layout
```
mcp/
server.mjs ← MCP stdio server entrypoint
tool-registry.mjs ← tool definitions
extrapify-client.mjs ← minimal Extrapify API client
tools/
extract-structured-data.mjs
configs/
claude-desktop.local.example.json
claude-desktop.production.example.json
docs/
mcp-install-examples.md
schema-templates.md
demo-workflows.md
mcp-marketplace-copy.md
```
---
## Links
- API and pricing: [extrapify.com](https://extrapify.com)
- Docs: [extrapify.com/docs](https://extrapify.com/docs)
- Dashboard: [extrapify.com/dashboard](https://extrapify.com/dashboard)
TDQS
A4.8/5.0
Scored across 1 tool
Disambiguation5/5
Only one tool exists, so there is no possibility of confusion or ambiguity among tools.
Naming Consistency5/5
With a single tool, naming consistency is not an issue; the name 'extract_structured_data' is clear and descriptive.
Tool Count3/5
The server has only one tool, which is thin for most domains. However, as a specialized extraction service, it is borderline acceptable.
Completeness4/5
The single tool covers the core extraction use case well, but lacks supporting features like schema management or pagination support, leaving minor gaps.
Maintenance
ActivityInactive
ResponsivenessNo issues