Skip to main content
Some MCP clients only support tools. They cannot list or get prompts directly because they lack prompt protocol support. The PromptsAsTools transform bridges this gap by generating tools that provide access to your server’s prompts. When you add PromptsAsTools to a server, it creates two tools that clients can call instead of using the prompt protocol:
  • list_prompts returns JSON describing all available prompts and their arguments
  • get_prompt renders a specific prompt with provided arguments
This means any client that can call tools can now access prompts, even if the client has no native prompt support.

Basic Usage

Pass your server to PromptsAsTools when adding the transform. The transform queries that server for prompts whenever the generated tools are called.
Clients now see three items: whatever tools you defined directly, plus list_prompts and get_prompt.

Listing Prompts

The list_prompts tool returns JSON with metadata for each prompt, including its arguments.
Each argument includes:
  • name: The argument name
  • description: Optional description from type hints or docstrings
  • required: Whether the argument must be provided

Getting Prompts

The get_prompt tool accepts a prompt name and optional arguments dict. It returns the rendered prompt as JSON with a messages array.
If a prompt has no arguments, you can omit the arguments field or pass an empty dict:

Message Format

Rendered prompts return a messages array following the standard MCP format. Each message includes:
  • role: The message role (typically “user”, “assistant”, or “system”)
  • content: The message text content
Multi-message prompts are supported - the array will contain all messages in order.

Binary Content

Unlike resources, prompts always return text content. There is no binary encoding needed.