kitty-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| KITTY_LISTEN_ON | No | Set automatically by kitty inside its windows. Used as fallback when KITTY_MCP_SOCKET is not set. | |
| KITTY_MCP_BINARY | No | Override the kitty CLI binary name or path. Default: kitten. | |
| KITTY_MCP_SOCKET | No | Override the kitty remote control socket path. | |
| KITTY_RC_PASSWORD | No | Password for kitty remote control authentication, if configured. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| kitty_lsA | List all kitty OS windows, tabs, and windows as a JSON tree. Returns the full hierarchy: OS-window[] -> tab[] -> window[], including window IDs, titles, PIDs, cwds, foreground processes, and layout info. Use --match / --match-tab to filter. Results are cached for 3 seconds. |
| kitty_get_textA | Retrieve text content from a kitty window. Supports multiple extent modes: "screen" (visible content), "all" (screen + scrollback), "selection" (selected text), "last_cmd_output" (output of most recent command), and more. When extent is "all", output is truncated to max_lines (keeping most recent lines) to prevent overwhelming context. |
| kitty_get_colorsA | Get terminal color definitions for a kitty window. Returns color names and hex values in kitty.conf format (e.g. "background #1e1e2e"). Use --configured to get the original kitty.conf colors instead of any runtime overrides. Results are cached for 10 seconds. |
| kitty_select_windowA | Visually select a window in a kitty tab. Kitty overlays letter/number labels on each window and waits for user input. Returns the selected window's ID. This is an interactive command with a 60-second timeout. |
| kitty_launchA | Launch a new process in a kitty window, tab, or OS window. This is the primary window creation tool. Returns the ID of the newly created window. If no command is specified, the default shell is launched. Supports many launch options including window type, location, environment, and stdin source. |
| kitty_close_windowA | Close the specified kitty windows. If no match expression is provided, the active window is closed. |
| kitty_focus_windowB | Focus the specified kitty window, bringing it to the foreground. If no match expression is provided, the command window is focused. |
| kitty_resize_windowB | Resize the specified kitty window within its current layout. Not all layouts support resizing in all directions. Use axis "reset" to restore default sizes. |
| kitty_detach_windowA | Detach windows and move them to a different tab or a new OS window. By default, detached windows are moved to a new OS window. Use target_tab to specify a destination tab, or "new" to create a new tab. |
| kitty_set_window_titleA | Set the title for the specified kitty windows. By default the title is permanent (programs cannot change it). Use temporary to allow programs to change it. Omit title to reset to the child-process-controlled title. |
| kitty_close_tabA | Close the specified kitty tabs. If no match expression is provided, the active tab is closed. |
| kitty_focus_tabA | Focus the specified kitty tab. The active window in that tab will be focused. |
| kitty_set_tab_titleA | Set the title for the specified kitty tabs. If no title is provided, resets to the active-window-controlled title. |
| kitty_set_tab_colorA | Change the foreground/background colors of a tab in the tab bar. Colors can be color names (e.g. "red"), hex values (e.g. "#1e1e2e"), or "none" to revert to the default. |
| kitty_detach_tabA | Detach tabs and move them to a different or new OS window. By default, detached tabs are moved to a new OS window. Use target_tab to specify a destination OS window. |
| kitty_send_textA | Send arbitrary text to specified kitty windows. The text follows Python escaping rules on the kitty side (e.g. \e for ESC, \n for newline). Use from_file to send file contents. Use bracketed_paste to control paste mode behavior. |
| kitty_send_keyA | Send key presses to specified kitty windows. Keys are kitty key names like "ctrl+a", "enter", "shift+f1", "alt+left". All keys are sent as press events then release events in reverse order. |
| kitty_scrollA | Scroll the content of a kitty window. Supports scrolling by lines, pages, to start/end, to prompts (with shell integration), and unscrolling. Examples: "5" (5 lines down), "2p-" (2 pages up), "start", "end", "1r" (next prompt), "1r-" (previous prompt), "0.5p" (half page down). |
| kitty_set_colorsA | Set terminal colors for specified windows/tabs. Colors are specified as "key=value" strings (e.g. "foreground=red", "background=#1e1e2e") or a path to a .conf file. Use reset to restore all colors to startup values. |
| kitty_set_font_sizeA | Set the font size in the active OS window. All sub-windows in the same OS window share the same font size. Use "+N"/"-N" for relative changes, a number for absolute size, or "0" to reset to default. |
| kitty_set_spacingB | Set paddings and margins for specified kitty windows. Settings are "key=value" strings like "margin=20", "padding-left=10", "margin-h=30", "padding-v=5". Use "default" as value to reset. |
| kitty_set_background_opacityA | Set the background opacity for kitty windows. Requires dynamic_background_opacity to be enabled in kitty.conf. Opacity affects all windows in the same OS window. |
| kitty_disable_ligaturesA | Control ligature rendering for specified kitty windows/tabs. "never" shows ligatures normally, "always" disables them everywhere, "cursor" disables them only under the cursor. |
| kitty_goto_layoutA | Switch to a specific window layout in the active or specified tab. Valid layouts: fat, grid, horizontal, splits, stack, tall, vertical. Layout names can include options after a colon (e.g. "tall:bias=70"). |
| kitty_last_used_layoutA | Switch to the previously active window layout in the specified tab. Works like a layout toggle between the current and last layout. |
| kitty_set_enabled_layoutsA | Set which layouts are available for cycling in the specified tab. If the current layout is not in the list, switches to the first enabled layout. Use "all" or "*" to enable all layouts. |
| kitty_create_markerA | Create a marker that highlights text matching a pattern in a kitty window. Marker types: "text"/"itext" for literal matches, "regex"/"iregex" for regex matches, "function" for custom Python functions. Color groups 1-3 use different highlight colors as configured in kitty.conf. |
| kitty_remove_markerA | Remove the currently set marker (if any) from the specified kitty window. |
| kitty_runA | Run a program on the computer where kitty is running and get its output (stdout, stderr, exit code). This waits for the process to complete. For fire-and-forget, use kitty_launch with type "background" instead. |
| kitty_actionA | Run a mappable kitty action in the specified window. Actions are the same action names used in kitty.conf key mappings (e.g. "scroll_line_down", "copy_to_clipboard", "new_tab"). Arguments are space-separated within the action string. |
| kitty_kittenB | Run a kitten (kitty extension) over the specified windows. The kitten can be a builtin name or a path to a Python file containing a custom kitten. |
| kitty_load_configA | Reload kitty configuration files. If no paths are specified, the previously specified config file is reloaded. Paths are resolved relative to the kitty config directory. |
| kitty_signal_childA | Send one or more Unix signals to the foreground process in the specified kitty windows. If no signals are specified, SIGINT is sent by default. Signal names can be with or without the SIG prefix. |
| kitty_envA | Change environment variables seen by newly launched kitty windows. Use "NAME=VALUE" to set a variable, or just "NAME" (without =) to unset it. |
| kitty_set_user_varsA | Set user variables for the specified kitty windows. User variables are accessible via kitty match expressions (var:NAME). Use "NAME=VALUE" to set, or just "NAME" to unset. If no variables provided, prints current vars. |
| kitty_resize_os_windowA | Resize, show, hide, or toggle fullscreen/maximized state of kitty OS windows. Note that some window managers (e.g. tiling WMs) may not allow applications to resize their windows. |
| kitty_dump_scrollbackA | Dump a window's full scrollback to a temp file and read it back with pagination. Solves the problem of scrollback buffers too large to return in a single response. First call dumps and returns a page; follow-up calls with file_path paginate through the dump without re-fetching from kitty. |
| kitty_get_tab_textA | Get text content from ALL windows in a specific tab in a single call. Combines kitty_ls + multiple kitty_get_text calls. Returns text from every window in the tab with per-window headers showing ID, title, CWD, PID, and dimensions. Useful for understanding what is happening across split panes or monitoring multiple processes. |
| kitty_clear_cacheA | Clear the MCP server internal cache. Useful if you suspect stale data from cached ls or get-colors results. |
| kitty_health_checkA | Perform a health check of the kitty MCP server. Verifies that the kitty CLI is accessible and all server subsystems are operational. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/secemp9/kitty-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server