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
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
- 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. - 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.
- Fill in the parameters and click Call Tool.
- Inspect the formatted Result tab (including inline images and pretty-printed resource/unknown content blocks) or the Raw JSON tab.
- Click Refresh tools at any time to re-fetch
tools/liston the current connection without losing your place in the tool list.
Features
- Tool browser — lists every tool from
tools/listwith 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,defaultvalues pre-filledoneOfunions → 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 ofimagecontent blocks, pretty-printed JSON forresourceand 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcp_gui_tester-0.4.2.tar.gz.
File metadata
- Download URL: mcp_gui_tester-0.4.2.tar.gz
- Upload date:
- Size: 27.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d85d5ca0fd8fee823ac9e4c37d7b3c4d5939e5383b437446deebe1dba89b2efc
|
|
| MD5 |
279a295036f705e86a2d58b58333c228
|
|
| BLAKE2b-256 |
dbb9625efa16f8e315038226e88fcfc915f3d1e3ef6a13bdc1e557fbf2ab1a23
|
File details
Details for the file mcp_gui_tester-0.4.2-py3-none-any.whl.
File metadata
- Download URL: mcp_gui_tester-0.4.2-py3-none-any.whl
- Upload date:
- Size: 25.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1225c1322adcaadc6197f86c22dc60a1e39cc8b7f7a4864f86d415af3f499eff
|
|
| MD5 |
5961cd64ddc26bfa5eca162e292121ad
|
|
| BLAKE2b-256 |
84dbf6ff3d1abfc12e898316a2c042fb78d84b1a649e4aa9871abf6ccb18b764
|