Skip to main content

MCP server exposing Storywrangler documentation and the dataset registry to AI agents

Project description

storywrangler-mcp

MCP server that lets AI agents work with the Storywrangler platform. Modeled on the Svelte team's @sveltejs/mcp and vcsi-starter's @the-vcsi/scrolly-mcp: the server holds no content — it fetches documentation from the docs site's llms.txt exports and dataset metadata from the live registry API, so nothing can drift.

Tools

Tool Source Purpose
list-sections docs site /sections.json Discover documentation sections (guides + per-tag API reference)
get-documentation docs site /{slug}/llms.txt Fetch section markdown, with fuzzy matching
list-datasets API /registry/ List registered datasets with queryable dimensions
get-dataset API /registry/{domain}/{dataset_id} Ground-truth metadata: level_order, filter_values, availability
validate-submission local (storywrangler-schemas) Dry-run a DatasetCreate payload: real Pydantic contract, mirrored server guards, conflation lints, on-disk hive layout checks when reachable

Usage

Remote (streamable HTTP) — the backend mounts this same server at /mcp (see backend/app/main.py). No install needed:

{
  "mcpServers": {
    "storywrangler": {
      "type": "http",
      "url": "https://storywrangler.uvm.edu/mcp/"
    }
  }
}

Keep the trailing slash — /mcp works but costs a 307 redirect per request. On the server, set STORYWRANGLER_DOCS_URL/STORYWRANGLER_URL to localhost addresses so tool fetches don't loop through the public proxy. Note: remote clients validate TLS strictly; this endpoint is unusable externally until the uvm.edu certificate mismatch is fixed.

Local (stdio) — works offline and pins a version:

{
  "mcpServers": {
    "storywrangler": {
      "command": "uvx",
      "args": ["storywrangler-mcp"]
    }
  }
}

CLI mode

Every tool also works as a shell command — the fallback for subagents and CI where no MCP connection exists:

uvx storywrangler-mcp list-sections
uvx storywrangler-mcp get-documentation register querying
uvx storywrangler-mcp list-datasets
uvx storywrangler-mcp get-dataset wikimedia ngrams --full
uvx storywrangler-mcp validate-submission payload.json   # '-' reads stdin

validate-submission exits non-zero on blocking errors, so a pipeline can gate its submit step on it (add --no-disk to skip layout checks).

Configuration

Env var Default Meaning
STORYWRANGLER_DOCS_URL https://storywrangler.uvm.edu Docs site base URL
STORYWRANGLER_URL https://storywrangler.uvm.edu API base URL (same var the SDK uses)
STORYWRANGLER_INSECURE unset Set to 1 to skip TLS verification (the uvm.edu deployment currently serves a mismatched certificate — fix pending)

Point both at http://localhost:5173 / http://localhost:8000 for local development.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

storywrangler_mcp-0.1.0.tar.gz (12.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

storywrangler_mcp-0.1.0-py3-none-any.whl (12.9 kB view details)

Uploaded Python 3

File details

Details for the file storywrangler_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: storywrangler_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 12.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.17

File hashes

Hashes for storywrangler_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 6b4903c31f597c2f20ef361bfcf74025d0f16f2d88545c6e5490072f8a1cfa73
MD5 863f72f90fcba6a1f896814dad08f69a
BLAKE2b-256 f0b77b6c2c2ea7cd9eca8c3ff706df08b3f8c775cff2222bae7f043ed455d5b6

See more details on using hashes here.

File details

Details for the file storywrangler_mcp-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for storywrangler_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cba75ac87c7616c56cb4af6246c4a9261a4502fd7e803d350d2d0f762cd73f13
MD5 eb8c765252d81130b89e9b7a26cc920e
BLAKE2b-256 2249c019ef12cf38cab8277d50ef49c20dcb1314645106f78482eea937349f6d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page