tkinter-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| launch_appA | Launch a Tkinter application with inspection enabled. Starts the script with automatic Tkinter patching. The app will be inspectable via the other tools once launched. |
| get_ui_layoutA | Get the current UI layout as hierarchical JSON. Returns a JSON structure containing the complete widget tree with:
Use this to understand the current state of the GUI. |
| view_applicationA | Take a screenshot of the application window. Returns a base64-encoded JPEG image of the current window state. Use this to visually inspect the GUI appearance. |
| view_application_thumbnailA | Take a small thumbnail screenshot of the application window. Returns a low-resolution preview for quick UI state checks. Use view_application for detailed inspection. Returns: Base64-encoded JPEG string prefixed with data URI scheme. |
| get_window_infoA | Get basic information about the application window. Returns JSON with window position and dimensions:
Useful for understanding window placement. |
| click_widgetA | Click a widget by its ID. Finds the widget with the given ID and triggers a click action. For buttons, this invokes the button command. For other widgets, this generates a click event. |
| type_textA | Type text into an Entry or Text widget. Clears the current content and inserts the new text. Only works with Entry and Text widgets. |
| get_widget_by_textB | Find a widget by its text content. Searches the widget tree for a widget containing the specified text. Returns the widget ID if found. |
| close_appA | Close the currently running Tkinter application. Terminates the app gracefully. Returns: JSON with success status |
| is_connectedA | Check if an app is currently connected. Returns: JSON with connection status |
| focus_widgetA | Set keyboard focus to a widget. |
| get_focused_widgetA | Get the currently focused widget. Returns: JSON with the focused widget's ID or null if no widget has focus |
| get_widget_valueA | Get the value of a widget based on its type. Returns the appropriate value for the widget type:
|
| set_widget_valueA | Set the value of a widget based on its type. Sets the appropriate value for the widget type:
|
| get_widget_optionsB | Get available options for a Combobox or Listbox widget. Returns the list of selectable options/items. |
| drag_widgetA | Perform drag and drop between two widgets. Simulates dragging from one widget to another. Useful for drag-and-drop interfaces like chess boards, sortable lists, etc. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 16 tools
Each tool has a distinct purpose: launching, clicking, dragging, focusing, getting UI layout, reading/writing widget values, etc. Even similar tools like view_application and view_application_thumbnail are differentiated by resolution.
Tools mostly follow a verb_noun pattern (launch_app, click_widget, set_widget_value) or get_ prefix (get_widget_value, get_window_info). The mix is consistent within subgroups, but not strictly uniform across all tools.
16 tools is slightly above the ideal range of 3-15, but the count is justified by the need for various GUI interactions and inspections. It does not feel excessive for the scope.
Covers core GUI operations: launch, close, click, drag, focus, read layout, read/write values, type text, and screenshots. Missing advanced interactions (e.g., right-click, scroll) but sufficient for fundamental testing.