extrapify
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
What this is
A thin, stateless MCP server that bridges MCP clients to the hosted Extrapify API.
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_dataProduction-ready bridge, not a scraping framework
No extraction logic, no state, no side effects
Related MCP server: Haunt API
Install
npm installCopy .env.example to .env and fill in your credentials:
EXTRAPIFY_API_BASE_URL=https://extrapify.com
EXTRAPIFY_API_KEY=sk_live_your_key_hereStart the server:
npm run mcp:startClaude Desktop setup
Add this block to your Claude Desktop config (claude_desktop_config.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 for copy-paste configs.
Tool: extract_structured_data
Retrieve structured JSON from any public webpage using a schema you define.
Input:
{
"url": "https://example.com/article",
"mode": "auto",
"schema": {
"title": "string",
"author": "string",
"published_at": "date",
"tags": "string[]"
}
}Output:
{
"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 structuresingle— extract the primary item onlylist— 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.
Example workflows
Agent patterns and demo workflows are in docs/demo-workflows.md.
Other compatible clients
Any MCP client that supports stdio transport works with this package. Typically you only need:
command:nodeargs: absolute path tomcp/server.mjsenv:EXTRAPIFY_API_BASE_URLandEXTRAPIFY_API_KEY
Troubleshooting
Symptom | Fix |
Server exits immediately | Verify |
Tool calls return | Check your API key at extrapify.com/dashboard |
Client cannot discover tools | Confirm it is launching |
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.mdLinks
API and pricing: extrapify.com
Docs: extrapify.com/docs
Dashboard: extrapify.com/dashboard
Available Tools
1 toolextract_structured_dataA
Extract structured JSON from any public webpage using Extrapify's schema-guided extraction engine. Define the fields you want (title, price, author, tags, etc.) and their types, point the tool at a URL, and get back validated, typed JSON. Handles JavaScript-heavy pages via Browserless rendering. Ideal for scraping product pages, articles, job listings, company data, search results, and any other structured web content. Returns extracted fields, confidence score, item count, and tokens used.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Fully qualified public webpage URL to extract structured data from (e.g. https://example.com/article). Must be publicly accessible. Does not support login-protected or paywalled pages. | |
| schema | Yes | Schema definition that controls what fields to extract. Each key is the field name and each value is the field type. Supported types: "string", "number", "integer", "float", "boolean", "date", "datetime", "url", and array variants using [] suffix (e.g. "string[]"). Example: { "title": "string", "price": "number", "tags": "string[]", "published_at": "date" }. Nested objects are supported for grouped fields. | |
| mode | No | Extraction mode controlling how many items are returned. "auto" detects automatically based on page structure (recommended). "single" forces extraction of one primary item only (use for product pages, articles, profiles). "list" extracts all matching items as an array (use for search results, directories, tables). Default: "auto". | auto |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully covers behavioral traits. It explains the extraction process (schema-guided, handles JS with Browserless), return format (validated typed JSON), and what is returned ('extracted fields, confidence score, item count, and tokens used'). It also discloses that it only works on public pages, setting clear expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured: it starts with the primary purpose, then elaborates on features and ideal use cases, and ends with return values. Every sentence adds unique information without redundancy. It is front-loaded with the most important detail (what it extracts) and fits within a few sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 parameters, one being a complex object schema) and no output schema, the description is remarkably complete. It covers all input parameters with usage guidance, explains the extraction engine's capabilities, and lists the output fields. No critical information is missing for an agent to decide and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant value beyond the schema's property descriptions. For 'url', it specifies must be public and no login-protected. For 'schema', it provides supported types, examples, and notes nested object support. For 'mode', it explains each enum value with concrete use cases. This extra context is critical for correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Extract structured JSON from any public webpage' using a schema-guided engine. It specifies the verb (extract), resource (structured JSON), and context (public webpages, JavaScript-heavy handling). Since there are no sibling tools, it effectively distinguishes its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Ideal for scraping product pages, articles, job listings, company data, search results, and any other structured web content.' It also clarifies limitations: 'Does not support login-protected or paywalled pages.' The mode parameter description provides additional guidance on when to use 'single' vs 'list' modes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
1 tool update
v0.1.2- Changed
extract_structured_data4 fields changed- changed
Input schema / properties / mode / descriptionPrevious value: -"Extraction mode. Use auto unless you need a forced single object or list."New value: +"Extraction mode controlling how many items are returned. \"auto\" detects automatically based on page structure (recommended). \"single\" forces extraction of one primary item only (use for product pages, articles, profiles). \"list\" extracts all matching items as an array (use for search results, directories, tables). Default: \"auto\"." - changed
Input schema / properties / schema / descriptionPrevious value: -"Schema-guided extraction definition using Extrapify field types and nested objects."New value: +"Schema definition that controls what fields to extract. Each key is the field name and each value is the field type. Supported types: \"string\", \"number\", \"integer\", \"float\", \"boolean\", \"date\", \"datetime\", \"url\", and array variants using [] suffix (e.g. \"string[]\"). Example: { \"title\": \"string\", \"price\": \"number\", \"tags\": \"string[]\", \"published_at\": \"date\" }. Nested objects are supported for grouped fields." - changed
Input schema / properties / url / descriptionPrevious value: -"Public webpage URL to extract structured data from."New value: +"Fully qualified public webpage URL to extract structured data from (e.g. https://example.com/article). Must be publicly accessible. Does not support login-protected or paywalled pages." - changed
Input schema / requiredPrevious value: -[ - "schema", - "url" -]New value: +[ + "url", + "schema" +]
1 tool update
v0.1.0- First observed
extract_structured_data
TDQS
Only one tool exists, so there is no possibility of confusion or ambiguity among tools.
With a single tool, naming consistency is not an issue; the name 'extract_structured_data' is clear and descriptive.
The server has only one tool, which is thin for most domains. However, as a specialized extraction service, it is borderline acceptable.
The single tool covers the core extraction use case well, but lacks supporting features like schema management or pagination support, leaving minor gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- mcpOAuthcom.sequentum
Turn the web into structured, reliable, actionable enterprise data for AI Agents
Cloud scraping & crawling API for AI agents. Turn any URL into clean, LLM-ready markdown.
Structured web research tool for AI agents: search, fetch and shape web data into the JSON schema…
Web scraping for AI agents. Extract text and metadata from any URL worldwide. $0.005/page.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceThe web data platform for AI agents. Fetch, search, crawl, extract, monitor, and screenshot any URL. 55+ domain extractors, 65-98% token savings. 7 MCP tools included.33212AGPL 3.0
- AlicenseAqualityFmaintenanceStructured web extraction for AI agents. Pass any URL and a prompt, get clean JSON data back. Native MCP server with 100 free requests/month.3794MIT
- AlicenseAqualityBmaintenanceMCP server that extracts structured JSON from public URLs for AI agents using schemas like product, article, and company.645MIT
- AlicenseAqualityBmaintenanceAn agent-agnostic web extraction and fetch layer that turns URLs into verified, typed data with confidence scores via MCP, REST, or SDK, orchestrating scraping engines behind a resilience ladder and supporting structured extraction against any schema.52Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/christ0pper/extrapify-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server