# Fitter

An MCP server that has the agent write declarative scraping configs for sites and APIs, then run them right away.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 133
- Author: PxyUp
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/PxyUp/fitter
- Updated: 2026-08-29
- HTML: https://affpapa.org/en/nevibecode/mcp/fitter

## What it does

Fitter keeps the data source and the extraction rules in one JSON or YAML config: an HTTP request, a headless browser, a file or a static value on one side, JSON paths, CSS selectors and XPath on the other. There is no code, which is why the agent can author the config itself. The server hands the model a reference for the format, a way to check a config and a way to run it, and all fetching stays on your machine.

Six tools ship with it. `fitter_run` takes a config as a string, `fitter_run_file` reads one from a local file, `fitter_run_url` downloads it over HTTP(S). `fitter_inspect_url` is the useful one: it pulls a structure outline and candidate selectors out of a page so the model stops guessing and getting nulls. Rounding it out are `fitter_validate_config` and `fitter_config_reference`.

Browser configs need Playwright. The native binary and the `.mcpb` bundle ship without browsers, so HTTP, file and static connectors work out of the box. Set `"install": true` in the `playwright` connector and the driver plus browser download on first use. Installing browsers ahead of time means matching the `playwright-go` version in `go.mod` exactly, because a mismatched driver refuses to run. The `ghcr.io/pxyup/fitter-mcp:playwright` image already carries Chromium, Firefox and WebKit.

## Requirements
- Needs: Docker
- Environment variables: `FITTER_PLUGINS` — keys and tokens: ask the human for the values, never commit them or put them in shared files.
- Works with: Playwright

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env FITTER_PLUGINS=<FITTER_PLUGINS> --transport stdio fitter -- docker run -i --rm -e FITTER_PLUGINS ghcr.io/pxyup/fitter-mcp:v1.8.3
```
Replace <…> with your own values

### Codex

**Platform CLI**
```bash
codex mcp add fitter --env FITTER_PLUGINS=<FITTER_PLUGINS> -- docker run -i --rm -e FITTER_PLUGINS ghcr.io/pxyup/fitter-mcp:v1.8.3
```
Replace <…> with your own values

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "fitter": {
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "-e",
                "FITTER_PLUGINS",
                "ghcr.io/pxyup/fitter-mcp:v1.8.3"
            ],
            "env": {
                "FITTER_PLUGINS": "<FITTER_PLUGINS>"
            }
        }
    }
}
```
Replace <…> with your own values

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "fitter": {
            "type": "stdio",
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "-e",
                "FITTER_PLUGINS",
                "ghcr.io/pxyup/fitter-mcp:v1.8.3"
            ],
            "env": {
                "FITTER_PLUGINS": "<FITTER_PLUGINS>"
            }
        }
    }
}
```
Replace <…> with your own values

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e FITTER_PLUGINS=<FITTER_PLUGINS> fitter docker run -i --rm -e FITTER_PLUGINS ghcr.io/pxyup/fitter-mcp:v1.8.3
```
Replace <…> with your own values

## When to use it
- pull JSON off a JavaScript-rendered page
- describe a scrape in a config instead of a Python script
- validate a config before running it and avoid null fields
- reuse a working config as a scheduled job
- extract API data through JSON paths without hand-written parsing

## Example prompts
- Run examples/config_morning_briefing.json with fitter and give me the briefing
- Inspect this page with fitter and suggest selectors for the prices

## Similar
- [Scrapling MCP Server](https://affpapa.org/en/nevibecode/mcp/scrapling-mcp-server.md) — MCP server · ★ 89433
- [browser-use](https://affpapa.org/en/nevibecode/mcp/browser-use.md) — MCP server · ★ 119160
- [AIHawk](https://affpapa.org/en/nevibecode/mcp/aihawk.md) — MCP server · ★ 32221
- [Skyvern](https://affpapa.org/en/nevibecode/mcp/skyvern.md) — MCP server · ★ 23263
- [SeleniumBase MCP](https://affpapa.org/en/nevibecode/mcp/seleniumbase-mcp.md) — MCP server · ★ 13169
- [apify-mcp-server](https://affpapa.org/en/nevibecode/mcp/apify-mcp-server.md) — MCP server · ★ 12927

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
