Skip to main content
Glama

Fetch JSONPath MCP

PyPI Downloads 简体中文

A Model Context Protocol (MCP) server that provides tools for fetching JSON data and web content from URLs. Features intelligent content extraction, multiple HTTP methods, and browser-like headers for reliable web scraping.

🎯 Why Use This?

Reduce LLM Token Usage & Hallucination - Instead of fetching entire JSON responses and wasting tokens, extract only the data you need.

Traditional Fetch vs JSONPath Extract

❌ Traditional fetch (wasteful):

// API returns 2000+ tokens { "data": [ { "id": 1, "name": "Alice", "email": "alice@example.com", "avatar": "https://...", "profile": { "bio": "Long bio text...", "settings": {...}, "preferences": {...}, "metadata": {...} }, "posts": [...], "followers": [...], "created_at": "2023-01-01", "updated_at": "2024-01-01" }, // ... 50 more users ], "pagination": {...}, "meta": {...} }

✅ JSONPath extract (efficient):

// Only 10 tokens - exactly what you need! ["Alice", "Bob", "Charlie"]

Using pattern: data[*].name saves 99% tokens and eliminates model hallucination from irrelevant data.

Installation

For most IDEs, use the uvx tool to run the server.

{ "mcpServers": { "fetch-jsonpath-mcp": { "command": "uvx", "args": [ "fetch-jsonpath-mcp" ] } } }
claude mcp add fetch-jsonpath-mcp -- uvx fetch-jsonpath-mcp
{ "mcpServers": { "fetch-jsonpath-mcp": { "command": "uvx", "args": ["fetch-jsonpath-mcp"] } } }

Add this to your Windsurf MCP config file. See Windsurf MCP docs for more info.

Windsurf Local Server Connection

{ "mcpServers": { "fetch-jsonpath-mcp": { "command": "uvx", "args": ["fetch-jsonpath-mcp"] } } }
"mcp": { "servers": { "fetch-jsonpath-mcp": { "type": "stdio", "command": "uvx", "args": ["fetch-jsonpath-mcp"] } } }

Development Setup

1. Install Dependencies

uv sync

2. Start Demo Server (Optional)

# Install demo server dependencies uv add fastapi uvicorn # Start demo server on port 8080 uv run demo-server

3. Run MCP Server

uv run fetch-jsonpath-mcp

Demo Server Data

The demo server at http://localhost:8080 returns:

{ "foo": [{"baz": 1, "qux": "a"}, {"baz": 2, "qux": "b"}], "bar": { "items": [10, 20, 30], "config": {"enabled": true, "name": "example"} }, "metadata": {"version": "1.0.0"} }

Available Tools

fetch-json

Extract JSON data using JSONPath patterns with support for all HTTP methods.

{ "name": "fetch-json", "arguments": { "url": "http://localhost:8080", "pattern": "foo[*].baz", "method": "GET" } }

Returns: [1, 2]

Parameters:

  • url (required): Target URL

  • pattern (optional): JSONPath pattern for data extraction

  • method (optional): HTTP method (GET, POST, PUT, DELETE, etc.) - Default: "GET"

  • data (optional): Request body for POST/PUT requests

  • headers (optional): Additional HTTP headers

fetch-text

Fetch web content with intelligent text extraction. Defaults to Markdown format for better readability.

{ "name": "fetch-text", "arguments": { "url": "http://localhost:8080", "output_format": "clean_text" } }

Returns: Clean text representation of the JSON data

Output Formats:

  • "markdown" (default): Converts HTML to clean Markdown format

  • "clean_text": Pure text with HTML tags removed

  • "raw_html": Original HTML content

Parameters:

  • url (required): Target URL

  • method (optional): HTTP method - Default: "GET"

  • data (optional): Request body for POST/PUT requests

  • headers (optional): Additional HTTP headers

  • output_format (optional): Output format - Default: "markdown"

batch-fetch-json

Process multiple URLs with different JSONPath patterns concurrently.

{ "name": "batch-fetch-json", "arguments": { "requests": [ {"url": "http://localhost:8080", "pattern": "foo[*].baz"}, {"url": "http://localhost:8080", "pattern": "bar.items[*]"} ] } }

Returns: [{"url": "http://localhost:8080", "pattern": "foo[*].baz", "success": true, "content": [1, 2]}, {"url": "http://localhost:8080", "pattern": "bar.items[*]", "success": true, "content": [10, 20, 30]}]

Request Object Parameters:

  • url (required): Target URL

  • pattern (optional): JSONPath pattern

  • method (optional): HTTP method - Default: "GET"

  • data (optional): Request body

  • headers (optional): Additional HTTP headers

batch-fetch-text

Fetch content from multiple URLs with intelligent text extraction.

{ "name": "batch-fetch-text", "arguments": { "requests": [ "http://localhost:8080", {"url": "http://localhost:8080", "output_format": "raw_html"} ], "output_format": "markdown" } }

Returns: [{"url": "http://localhost:8080", "success": true, "content": "# Demo Server Data\n\n..."}, {"url": "http://localhost:8080", "success": true, "content": "{\"foo\": [{\"baz\": 1, \"qux\": \"a\"}, {\"baz\": 2, \"qux\": \"b\"}]..."}]

Supports:

  • Simple URL strings

  • Full request objects with custom methods and headers

  • Mixed input types in the same batch

JSONPath Examples

This project uses jsonpath-ng for JSONPath implementation.

Pattern

Result

Description

foo[*].baz

[1, 2]

Get all baz values

bar.items[*]

[10, 20, 30]

Get all items

metadata.version

["1.0.0"]

Get version

For complete JSONPath syntax reference, see the jsonpath-ng documentation.

🚀 Performance Benefits

  • Token Efficiency: Extract only needed data, not entire JSON responses

  • Faster Processing: Smaller payloads = faster LLM responses

  • Reduced Hallucination: Less irrelevant data = more accurate outputs

  • Cost Savings: Fewer tokens = lower API costs

  • Better Focus: Clean data helps models stay on task

  • Smart Headers: Default browser headers prevent blocking and improve access

  • Markdown Conversion: Clean, readable format that preserves structure

Configuration

Set environment variables to customize behavior:

# Request timeout in seconds (default: 10.0) export JSONRPC_MCP_TIMEOUT=30 # SSL verification (default: true) export JSONRPC_MCP_VERIFY=false # Follow redirects (default: true) export JSONRPC_MCP_FOLLOW_REDIRECTS=true # Custom headers (will be merged with default browser headers) export JSONRPC_MCP_HEADERS='{"Authorization": "Bearer token"}' # HTTP proxy configuration export JSONRPC_MCP_PROXY="http://proxy.example.com:8080"

Default Browser Headers: The server automatically includes realistic browser headers to prevent blocking:

  • User-Agent: Chrome browser simulation

  • Accept: Standard browser content types

  • Accept-Language, Accept-Encoding: Browser defaults

  • Security headers: Sec-Fetch-* headers for modern browsers

Custom headers in JSONRPC_MCP_HEADERS will override defaults when there are conflicts.

Development

# Run tests pytest # Check code quality ruff check --fix # Build and test locally uv build

What's New in v1.1.0

  • Multi-Method HTTP Support: GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS

  • 🔄 Tool Renaming: get-jsonfetch-json, get-textfetch-text

  • 📄 Markdown Conversion: Default HTML to Markdown conversion with markdownify

  • 🌐 Smart Browser Headers: Automatic browser simulation headers

  • 🎛️ Format Control: Three output formats for text content (markdown, clean_text, raw_html)

  • 🚀 Enhanced Batch Processing: Support for different methods in batch operations

Deploy Server
A
security – no known vulnerabilities
F
license - not found
A
quality - confirmed to work

Related MCP Servers

  • -
    security
    -
    license
    -
    quality
    Extract structured data from any website with a simple SDK call. No scraping code, no headless browsers - just prompt and get JSON.
    Last updated -
    49
  • -
    security
    F
    license
    -
    quality
    Provides functionality to fetch and transform web content in various formats (HTML, JSON, plain text, and Markdown) through simple API calls.
    Last updated -
    113,232
    1
  • A
    security
    A
    license
    A
    quality
    A powerful tool for fetching and extracting text content from web pages and APIs, supporting web scraping, REST API requests, and Google Custom Search integration.
    Last updated -
    4
    9
    MIT License
    • Linux
  • A
    security
    A
    license
    A
    quality
    Extract content from URLs, documents, videos, and audio files using intelligent auto-engine selection. Supports web pages, PDFs, Word docs, YouTube transcripts, and more with structured JSON responses.
    Last updated -
    1
    87
    MIT License
    • Apple

View all related MCP servers

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/ackness/fetch-jsonpath-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server