# Python MCP API

Source: https://libtmux.org/en/py/latest/mcp/reference/

> Find Python server entry points, typed models, and the separate MCP wire contract.

For MCP client requests, use the [tool reference](../tools/). This page
covers language APIs for embedding or extending the server.

The Python API and MCP protocol expose different interfaces. Python callers
import functions and models; MCP clients send registered tool names and
schema-validated arguments.

## MCP operations

Browse the [tool reference](../tools/) for the protocol catalog.
`tools/list` on a running server is the effective selection after
startup filtering. Registration defaults can differ from direct Python
function defaults, including command-history suppression.

The server also registers hierarchy resources and workflow prompts.
These remain available independently of the toolset selection.

## Python entry points

`libtmux_mcp.server.build_mcp_server()` returns the registered production
FastMCP server. `run_server()` serves it over stdio. The factory uses the
module's server instance; repeated calls do not create independent
configuration contexts.

The package separates tool functions, typed models, middleware, resource
handlers, and prompt recipes. Model classes describe request/result data;
their existence does not make them separate MCP tools.

- [Server API](https://libtmux-mcp.git-pull.com/reference/api/server/)
- [Tools API](https://libtmux-mcp.git-pull.com/reference/api/tools/)
- [Models API](https://libtmux-mcp.git-pull.com/reference/api/models/)
- [Registration source](https://github.com/tmux-python/libtmux-mcp/blob/v0.1.0a22/src/libtmux_mcp/server.py)

Use [Examples](../examples/) to inspect the protocol with an in-process
client. Use the [Workspace builder API](../../workspace/reference/) for tmuxp
configuration and builders.

## API declarations

- [libtmux_mcp.middleware.AuditMiddleware](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-middleware-auditmiddleware/)
- [libtmux_mcp.models.BufferContent](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-models-buffercontent/)
- [libtmux_mcp.models.BufferRef](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-models-bufferref/)
- [libtmux_mcp.prompts.recipes.build_dev_workspace](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-prompts-recipes-build_dev_workspace/)
- [libtmux_mcp.server.build_mcp_server](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-server-build_mcp_server/)
- [libtmux_mcp.tools.batch_tools.call_read_tools_batch](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-batch_tools-call_read_tools_batch/)
- [libtmux_mcp.tools.pane_tools.io.CAPTURE_DEFAULT_MAX_LINES](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-io-capture_default_max_lines/)
- [libtmux_mcp.tools.pane_tools.capture_pane](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-capture_pane/)
- [libtmux_mcp.tools.pane_tools.capture_since](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-capture_since/)
- [libtmux_mcp.tools.pane_tools.capture_since.CAPTURE_SINCE_DEFAULT_MAX_BYTES](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-capture_since-capture_since_default_max_bytes/)
- [libtmux_mcp.tools.pane_tools.capture_since.CAPTURE_SINCE_DEFAULT_MAX_LINES](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-capture_since-capture_since_default_max_lines/)
- [libtmux_mcp.models.CaptureSinceResult](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-models-capturesinceresult/)
- [libtmux_mcp.tools.pane_tools.clear_pane](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-clear_pane/)
- [libtmux_mcp.tools.server_tools.create_session](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-server_tools-create_session/)
- [libtmux_mcp.tools.session_tools.create_window](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-session_tools-create_window/)
- [libtmux_mcp.middleware.DEFAULT_RESPONSE_LIMIT_BYTES](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-middleware-default_response_limit_bytes/)
- [libtmux_mcp.server.DEFAULT_TOOLSETS](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-server-default_toolsets/)
- [libtmux_mcp.tools.buffer_tools.delete_buffer](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-buffer_tools-delete_buffer/)
- [libtmux_mcp.prompts.recipes.diagnose_failing_pane](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-prompts-recipes-diagnose_failing_pane/)
- [libtmux_mcp.tools.pane_tools.display_message](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-display_message/)
- [libtmux_mcp.tools.pane_tools.enter_copy_mode](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-enter_copy_mode/)
- [libtmux_mcp.prompts.ENV_PROMPTS_AS_TOOLS](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-prompts-env_prompts_as_tools/)
- [libtmux_mcp.models.EnvironmentResult](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-models-environmentresult/)
- [libtmux_mcp.models.EnvironmentSetResult](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-models-environmentsetresult/)
- [libtmux_mcp.tools.pane_tools.exit_copy_mode](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-exit_copy_mode/)
- [libtmux_mcp.tools.pane_tools.find_pane_by_position](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-find_pane_by_position/)
- [libtmux_mcp.tools.pane_tools.get_pane_info](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-get_pane_info/)
- [libtmux_mcp.tools.server_tools.get_server_info](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-server_tools-get_server_info/)
- [libtmux_mcp.tools.session_tools.get_session_info](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-session_tools-get_session_info/)
- [libtmux_mcp.tools.window_tools.get_window_info](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-window_tools-get_window_info/)
- [libtmux_mcp.tools.pane_tools.state.HISTORY_LIMIT_FORMAT](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-state-history_limit_format/)
- [libtmux_mcp.models.HookEntry](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-models-hookentry/)
- [libtmux_mcp.models.HookListResult](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-models-hooklistresult/)
- [libtmux_mcp.middleware.install_fastmcp_validation_log_filter](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-middleware-install_fastmcp_validation_log_filter/)
- [libtmux_mcp.prompts.recipes.interrupt_gracefully](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-prompts-recipes-interrupt_gracefully/)
- [libtmux_mcp.tools.pane_tools.kill_pane](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-kill_pane/)
- [libtmux_mcp.tools.server_tools.kill_server](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-server_tools-kill_server/)
- [libtmux_mcp.tools.session_tools.kill_session](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-session_tools-kill_session/)
- [libtmux_mcp.tools.window_tools.kill_window](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-window_tools-kill_window/)
- [libtmux_mcp.tools.window_tools.list_panes](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-window_tools-list_panes/)
- [libtmux_mcp.tools.server_tools.list_servers](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-server_tools-list_servers/)
- [libtmux_mcp.tools.server_tools.list_sessions](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-server_tools-list_sessions/)
- [libtmux_mcp.tools.session_tools.list_windows](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-session_tools-list_windows/)
- [libtmux_mcp.tools.buffer_tools.load_buffer](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-buffer_tools-load_buffer/)
- [libtmux_mcp.main](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-main/)
- [libtmux_mcp.tools.batch_tools.MAX_BATCH_OPERATIONS](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-batch_tools-max_batch_operations/)
- [libtmux_mcp.server.mcp](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-server-mcp/)
- [libtmux_mcp.tools.window_tools.move_window](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-window_tools-move_window/)
- [libtmux_mcp.models.OptionResult](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-models-optionresult/)
- [libtmux_mcp.models.OptionSetResult](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-models-optionsetresult/)
- [libtmux_mcp.tools.pane_tools.state.PANE_STATE_FORMAT](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-state-pane_state_format/)
- [libtmux_mcp.models.PaneContentMatch](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-models-panecontentmatch/)
- [libtmux_mcp.tools.pane_tools.lifecycle.PaneCorner](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-lifecycle-panecorner/)
- [libtmux_mcp.models.PaneInfo](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-models-paneinfo/)
- [libtmux_mcp.models.PaneSnapshot](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-models-panesnapshot/)
- [libtmux_mcp.tools.buffer_tools.paste_buffer](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-buffer_tools-paste_buffer/)
- [libtmux_mcp.tools.pane_tools.paste_text](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-paste_text/)
- [libtmux_mcp.tools.pane_tools.pipe_pane](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-pipe_pane/)
- [libtmux_mcp.resources.hierarchy.register](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-resources-hierarchy-register/)
- [libtmux_mcp.tools.batch_tools.register](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-batch_tools-register/)
- [libtmux_mcp.tools.buffer_tools.register](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-buffer_tools-register/)
- [libtmux_mcp.tools.env_tools.register](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-env_tools-register/)
- [libtmux_mcp.tools.hook_tools.register](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-hook_tools-register/)
- [libtmux_mcp.tools.option_tools.register](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-option_tools-register/)
- [libtmux_mcp.tools.pane_tools.register](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-register/)
- [libtmux_mcp.tools.server_tools.register](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-server_tools-register/)
- [libtmux_mcp.tools.session_tools.register](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-session_tools-register/)
- [libtmux_mcp.tools.wait_for_tools.register](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-wait_for_tools-register/)
- [libtmux_mcp.tools.window_tools.register](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-window_tools-register/)
- [libtmux_mcp.resources.hierarchy.register_completions](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-resources-hierarchy-register_completions/)
- [libtmux_mcp.prompts.register_prompts](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-prompts-register_prompts/)
- [libtmux_mcp.resources.register_resources](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-resources-register_resources/)
- [libtmux_mcp.tools.register_tools](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-register_tools/)
- [libtmux_mcp.tools.session_tools.rename_session](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-session_tools-rename_session/)
- [libtmux_mcp.tools.window_tools.rename_window](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-window_tools-rename_window/)
- [libtmux_mcp.tools.pane_tools.resize_pane](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-resize_pane/)
- [libtmux_mcp.tools.window_tools.resize_window](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-window_tools-resize_window/)
- [libtmux_mcp.tools.pane_tools.respawn_pane](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-respawn_pane/)
- [libtmux_mcp.prompts.recipes.run_and_wait](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-prompts-recipes-run_and_wait/)
- [libtmux_mcp.tools.pane_tools.run_command](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-run_command/)
- [libtmux_mcp.server.run_server](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-server-run_server/)
- [libtmux_mcp.models.RunCommandResult](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-models-runcommandresult/)
- [libtmux_mcp.tools.pane_tools.search.SEARCH_DEFAULT_LIMIT](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-search-search_default_limit/)
- [libtmux_mcp.tools.pane_tools.search.SEARCH_DEFAULT_MAX_LINES_PER_PANE](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-search-search_default_max_lines_per_pane/)
- [libtmux_mcp.tools.pane_tools.search.SEARCH_MATCH_MAX_SECONDS](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-search-search_match_max_seconds/)
- [libtmux_mcp.tools.pane_tools.search.SEARCH_MAX_PATTERN_LENGTH](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-search-search_max_pattern_length/)
- [libtmux_mcp.tools.pane_tools.search_panes](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-search_panes/)
- [libtmux_mcp.models.SearchPanesResult](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-models-searchpanesresult/)
- [libtmux_mcp.tools.window_tools.select_layout](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-window_tools-select_layout/)
- [libtmux_mcp.tools.pane_tools.select_pane](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-select_pane/)
- [libtmux_mcp.tools.session_tools.select_window](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-session_tools-select_window/)
- [libtmux_mcp.tools.pane_tools.send_keys](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-send_keys/)
- [libtmux_mcp.tools.pane_tools.send_keys_batch](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-send_keys_batch/)
- [libtmux_mcp.models.SendKeysBatchResult](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-models-sendkeysbatchresult/)
- [libtmux_mcp.models.SendKeysOperation](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-models-sendkeysoperation/)
- [libtmux_mcp.models.SendKeysOperationResult](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-models-sendkeysoperationresult/)
- [libtmux_mcp.models.ServerInfo](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-models-serverinfo/)
- [libtmux_mcp.models.SessionInfo](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-models-sessioninfo/)
- [libtmux_mcp.tools.env_tools.set_environment](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-env_tools-set_environment/)
- [libtmux_mcp.tools.option_tools.set_option](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-option_tools-set_option/)
- [libtmux_mcp.tools.pane_tools.set_pane_title](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-set_pane_title/)
- [libtmux_mcp.tools.buffer_tools.show_buffer](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-buffer_tools-show_buffer/)
- [libtmux_mcp.tools.buffer_tools.SHOW_BUFFER_DEFAULT_MAX_LINES](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-buffer_tools-show_buffer_default_max_lines/)
- [libtmux_mcp.tools.env_tools.show_environment](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-env_tools-show_environment/)
- [libtmux_mcp.tools.hook_tools.show_hook](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-hook_tools-show_hook/)
- [libtmux_mcp.tools.hook_tools.show_hooks](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-hook_tools-show_hooks/)
- [libtmux_mcp.tools.option_tools.show_option](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-option_tools-show_option/)
- [libtmux_mcp.tools.wait_for_tools.signal_channel](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-wait_for_tools-signal_channel/)
- [libtmux_mcp.tools.pane_tools.snapshot_pane](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-snapshot_pane/)
- [libtmux_mcp.tools.server_tools.SOCKET_NAME_EXEMPT](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-server_tools-socket_name_exempt/)
- [libtmux_mcp.tools.window_tools.split_window](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-window_tools-split_window/)
- [libtmux_mcp.tools.pane_tools.swap_pane](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-swap_pane/)
- [libtmux_mcp.middleware.TailPreservingResponseLimitingMiddleware](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-middleware-tailpreservingresponselimitingmiddleware/)
- [libtmux_mcp.models.ToolCallBatchResult](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-models-toolcallbatchresult/)
- [libtmux_mcp.models.ToolCallOperation](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-models-toolcalloperation/)
- [libtmux_mcp.models.ToolCallOperationResult](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-models-toolcalloperationresult/)
- [libtmux_mcp.middleware.ToolErrorResultMiddleware](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-middleware-toolerrorresultmiddleware/)
- [libtmux_mcp.middleware.ToolsetMiddleware](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-middleware-toolsetmiddleware/)
- [libtmux_mcp.tools.wait_for_tools.wait_for_channel](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-wait_for_tools-wait_for_channel/)
- [libtmux_mcp.tools.pane_tools.wait_for_text](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-tools-pane_tools-wait_for_text/)
- [libtmux_mcp.models.WaitForTextResult](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-models-waitfortextresult/)
- [libtmux_mcp.models.WindowInfo](https://libtmux.org/en/py/latest/mcp/reference/libtmux_mcp-models-windowinfo/)

[Protocol catalog](https://libtmux.org/en/py/latest/mcp/tools.json)
