GitHub - PhialsBasement/GUI-MCP: A Blueprint-style visual node editor for creating FastMCP servers. Build MCP tools, resources, and prompts by connecting nodes - no coding required.

3 min read Original article ↗

guiMCP

A Blueprint-style visual node editor for creating FastMCP servers. Build MCP tools, resources, and prompts by connecting nodes - no coding required.

Python License

Features

image
  • Visual Node Programming - Unreal Engine Blueprint-style interface with execution flow (white) and data (colored) pins
  • Full MCP Support - Create Tools, Resources, and Prompts visually
  • Turing Complete - Variables, loops (While, For Each), conditionals (Branch), and all the logic you need
  • Live Code Preview - See generated Python code update in real-time as you build
  • Simulate Tool Calls - Right-click any tool to test it directly in the editor
  • Save/Load Projects - Save your node graphs as .guimcp files
  • Export to Python - Generate clean, runnable FastMCP server code

Node Categories

image
Category Nodes
MCP Server Config, Tool Definition, Resource Definition, Prompt Definition
Flow Control Return, Branch (If/Else), For Each, While Loop, Sequence
Variables Set Variable, Get Variable, Make Literal
Math Add, Subtract, Multiply, Divide, Modulo
Comparison Equal, Not Equal, Greater Than, Less Than, And, Or, Not
String Format, Concatenate, Length, Split, Join, To String
List Make List, Get, Length, Append, Contains
Dictionary Make Dict, Get, Set, Keys, Values, Has Key
I/O HTTP Request, File Read, File Write, JSON Parse, JSON Stringify

Installation

# Clone the repository
git clone https://github.com/yourusername/guiMCP.git
cd guiMCP

# Install dependencies
pip install -r requirements.txt

# Run
python main.py

Requirements

  • Python 3.11+
  • PySide6
  • NodeGraphQt
  • FastMCP (for running exported servers)

Quick Start

  1. Add a Server Config node (sets your MCP server name)
  2. Add a Tool Definition node (defines your tool's name, description, parameters)
  3. Build your logic using flow control and data nodes
  4. Add a Return node and connect it to the tool's execution output
  5. Connect data to the Return node's value input
  6. Export via File → Export Python (Ctrl+E)
  7. Run your exported server: python mcp_server.py

Example

Creating a simple tool that fetches a cat fact:

Tool Definition ("get_cat_fact")
       ↓ exec
HTTP Request (url: "https://catfact.ninja/fact")
       ↓ exec          ↓ response
Return  ←─────────────┘

Generates:

from fastmcp import FastMCP
import urllib.request
import urllib.error

mcp = FastMCP("MyServer")

@mcp.tool
def get_cat_fact() -> str:
    """Fetches a random cat fact"""
    _http_url = 'https://catfact.ninja/fact'
    # ... HTTP code ...
    return http_response

if __name__ == "__main__":
    mcp.run()

Keyboard Shortcuts

Shortcut Action
Ctrl+N New Project
Ctrl+O Open Project
Ctrl+S Save Project
Ctrl+Shift+S Save Project As
Ctrl+E Export Python
Ctrl+Z Undo
Ctrl+Y Redo
Delete Delete Selected Nodes

Project Structure

guiMCP/
├── main.py                 # Entry point
├── guimcp/
│   ├── core/               # Port types, validation
│   ├── nodes/              # All node definitions
│   │   ├── base/           # ExecutableNode, PureNode, EventNode
│   │   ├── mcp/            # Server, Tool, Resource, Prompt
│   │   ├── flow_control/   # Branch, ForEach, While, Return
│   │   ├── data/           # Math, String, List, Dict operations
│   │   ├── variables/      # Get/Set Variable, Literals
│   │   └── io/             # HTTP, File, JSON operations
│   ├── codegen/            # Code generation
│   └── ui/                 # Main window, dialogs, widgets
└── tests/                  # Test suite

How It Works

  1. Execution Pins (white) define the order operations run - connect left to right
  2. Data Pins (colored) pass values between nodes - colors indicate types
  3. Event Nodes (Tool/Resource/Prompt Definition) are entry points with only exec_out
  4. Executable Nodes have exec_in and exec_out, generate statements
  5. Pure Nodes have no exec pins, generate expressions (evaluated lazily)

License

MIT