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 for the current session (in memory only — nothing is written to disk) and used to prefill the form next time you select that tool; Reset form clears the prefill back to schema defaults.
  • 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.3.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.3-py3-none-any.whl (25.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mcp_gui_tester-0.4.3.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.3.tar.gz
Algorithm Hash digest
SHA256 bef2b3b28ae2dfbdab2e4bb656015f43747c0a172c6204c430c7ae55c2aaef31
MD5 0f0a00669a38a7839f7c2fd3ad6ed8d4
BLAKE2b-256 4c4c2df4cd01317e247f3274718769b40b5706cede94b5acf4d55ca1938b1250

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mcp_gui_tester-0.4.3-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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 3b3d2f3c143954ab3e6e04737ce93b7a9252297fcc9a8124c716ea8acc64d92a
MD5 08ebbc56f90d5db52961efe38c71a6e2
BLAKE2b-256 db8149a6b19497abe8586ffa4ec17d15391aa694fb7d54abbab9cf87736a82d5

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