Skip to main content

Lightweight PyQt6 GUI tester for MCP servers over Streamable HTTP: list tools, fill parameters from each inputSchema, call tools, and inspect results.

Project description

mcp-gui-tester

PyPI Python Tests

A lightweight PyQt6 GUI tester for MCP servers speaking the Model Context Protocol Streamable HTTP transport (JSON-RPC over POST).

Connect to a running server, browse its tools, fill in parameters through a form generated from each tool's inputSchema, call the tool, and inspect the result — no Node toolchain, no browser, just pip install.

Developed alongside the MoleditPy MCP Server plugin, but fully generic: it works with any MCP server exposing tools over Streamable HTTP.

Installation

pip install mcp-gui-tester

Usage

mcp-gui-tester                                  # defaults to http://127.0.0.1:7891/mcp
mcp-gui-tester --url http://localhost:9000/mcp  # any MCP HTTP endpoint
python -m mcp_gui_tester                        # equivalent
  1. Adjust Host / Port / Path (and optional Headers, a JSON object like {"Authorization": "Bearer ..."}) and click Connect — the status bar shows the server name, version, and tool count.
  2. Select a tool from the filterable list. If you've called it before, the form is prefilled with the last arguments you sent; click Reset form to clear back to the schema defaults.
  3. Fill in the parameters and click Call Tool.
  4. Inspect the formatted Result tab (including inline images and pretty-printed resource/unknown content blocks) or the Raw JSON tab.
  5. Click Refresh tools at any time to re-fetch tools/list on the current connection without losing your place in the tool list.

Features

  • Tool browser — lists every tool from tools/list with its description; filter by name or description text; Refresh tools re-fetches the list on the existing connection, preserving the current selection
  • Schema-driven parameter forms, generated from each tool's inputSchema:
    • strings → line edit (multi-line editor for code / file-content / XYZ / MOL block parameters)
    • integer / number → spinbox, boolean → checkbox
    • array / object → JSON editor, validated before sending
    • enum → dropdown, default values pre-filled
    • oneOf unions → a widget chosen from the alternatives (array/object get a JSON-capable multiline editor, string gets a line/multiline edit, otherwise the first alternative's own widget is used); on submit, text that looks like JSON and parses to one of the allowed types is sent as that type, otherwise it's sent as a plain string
    • optional parameters carry a send checkbox and are omitted unless checked; required parameters are marked with *
  • Per-tool argument memory — the last arguments sent to each tool are remembered (in-memory and persisted to ~/.mcp_gui_tester_history.json, capped at the last 50 tools) and used to prefill the form next time you select that tool; Reset form clears the prefill back to schema defaults. A corrupt or unreadable history file is ignored silently.
  • Custom headers — an optional JSON object of extra HTTP headers (e.g. bearer tokens) sent with every request on the connection; invalid JSON is rejected with a clear error instead of crashing
  • Result view — formatted text (tool errors flagged with [TOOL ERROR]), inline rendering of image content blocks, pretty-printed JSON for resource and other content types, plus the raw JSON-RPC response
  • Responsive — calls run on a background thread, so slow tools never freeze the GUI

Scope

This is deliberately a small tool. It supports the Streamable HTTP transport and the tools/* capability (initialize, tools/list, tools/call), plus static bearer/custom headers for simple authentication schemes. It does not currently speak stdio transport, SSE streaming, OAuth, or the resources/prompts capabilities. For a full-featured inspector, see the official MCP Inspector.

Requirements

  • Python 3.9+
  • PyQt6 (installed automatically)

License

GPL-3.0-only — see LICENSE.

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

mcp_gui_tester-0.4.1.tar.gz (27.3 kB view details)

Uploaded Source

Built Distribution

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

mcp_gui_tester-0.4.1-py3-none-any.whl (25.8 kB view details)

Uploaded Python 3

File details

Details for the file mcp_gui_tester-0.4.1.tar.gz.

File metadata

  • Download URL: mcp_gui_tester-0.4.1.tar.gz
  • Upload date:
  • Size: 27.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for mcp_gui_tester-0.4.1.tar.gz
Algorithm Hash digest
SHA256 f55abec4b6509e406a23aa351006bb9cb740d838bf3fc5a923e7a1ad19b0724d
MD5 cb5ad30c95b9482e81e8e29fea60d92a
BLAKE2b-256 44e9ef48e686489c75364e2844d6c44642e5dd5a5c6a46f574a33e7b3e98b09b

See more details on using hashes here.

File details

Details for the file mcp_gui_tester-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: mcp_gui_tester-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 25.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for mcp_gui_tester-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 15b9b1b28a7c1bc5a9014bfefa8ffc850fe6cd33357384deae29ecf2ce8cd5d5
MD5 155ef13ea8f001b1b042ddc7c25590b2
BLAKE2b-256 077bb52c4f9a610282e622c818c30260c8f76e50a6201148dccc6bcf5673cbb4

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