Skip to main content

mcpwright-core

The shared runtime toolkit for the mcpwright suite of MCP servers. Not a server itself — a small library the suite's servers (edgar, census, soi, …) depend on so they don't each re-implement the same plumbing.

Status: extracted once three servers existed and the seams were clear ("wait for two, then DRY"). Composable pieces — import what you need; no server uses all of it.

What's in it

Import What it is
AsyncHttpClient Async httpx base: descriptive User-Agent, retry + exponential backoff on transient failures (429 / 5xx / network), optional throttling, and a streaming download_to(url, path) for large files. Subclass it and add your endpoint methods.
RateLimiter Serializes requests to a minimum spacing (RateLimiter.per_second(8)), for services with a fair-access policy like the SEC.
TTLCache In-memory cache with per-entry TTL + a byte budget (LRU eviction). For servers that make live calls; bulk-download servers don't need it.
READ_ONLY The ToolAnnotations(readOnlyHint=True, openWorldHint=True) every suite tool carries.
app_context(ctx, AppContext) Pulls the lifespan-managed app context out of an MCP request Context.
McpwrightError / HttpError The error hierarchy; each server's error type derives from these.

Usage

from mcpwright_core import AsyncHttpClient, RateLimiter, HttpError

class MyError(HttpError):
    pass

class MyClient(AsyncHttpClient):
    USER_AGENT = "my-mcp (https://github.com/mcpwright/my-mcp)"

    def __init__(self) -> None:
        super().__init__(error_cls=MyError, rate_limiter=RateLimiter.per_second(8))

    async def widget(self, widget_id: str) -> dict:
        return await self.get_json(f"https://api.example.com/widgets/{widget_id}")

Install

uv add mcpwright-core          # in a suite server's project

Servers pin a compatible range, e.g. mcpwright-core>=0.1,<0.2.

Develop

uv sync
uv run ruff check src/ && uv run ruff format --check src/
uv run mypy
uv run pytest

Built to the suite engineering standard: ruff + mypy (strict-ish) + pytest + pre-commit, CI on every PR, branch-protected main. Part of the mcpwright suite — built by Devender Gollapally.

Download files

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

Source Distribution

mcpwright_core-0.1.3.tar.gz (11.0 kB view details)

Uploaded Source

Built Distribution

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

mcpwright_core-0.1.3-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

File details

Details for the file mcpwright_core-0.1.3.tar.gz.

File metadata

  • Download URL: mcpwright_core-0.1.3.tar.gz
  • Upload date:
  • Size: 11.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for mcpwright_core-0.1.3.tar.gz
Algorithm Hash digest
SHA256 06d6a6c903766151e6e670dee48e6eaa64fce5f9f4343de1cafa7faf31cd5eea
MD5 2cd88edc29cf933f589beeef19ecbfb9
BLAKE2b-256 b14fc126a5792b6d2b94963ace856fe7ce3e2c3e34bd48ef3638cebffa237fb8

See more details on using hashes here.

File details

Details for the file mcpwright_core-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: mcpwright_core-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 13.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for mcpwright_core-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a36cf6baaa257483cd85fc9e02abafa2b54c54411a93eac347b5dd48e2c0bde3
MD5 c6171400197a189ceb5fbbb7f8942a22
BLAKE2b-256 f4547f5843c189acb41334809c5d89fd1dc087c87c29520b7e688d7875e77c35

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page