New in version 3.0.0Some 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.
Pass your FastMCP server to PromptsAsTools when adding the transform. The generated tools route through the server at runtime, which means all server middleware — auth, visibility, rate limiting — applies to prompt operations automatically, exactly as it would for direct prompts/get calls.
PromptsAsTools (and ResourcesAsTools) should be applied to a FastMCP server instance, not a raw Provider. The generated tools call back into the server’s middleware chain at runtime, so they need a server to route through. If you want to expose only a subset of prompts, create a dedicated FastMCP server for those prompts and apply the transform there.
from fastmcp import FastMCPfrom fastmcp.server.transforms import PromptsAsToolsmcp = FastMCP("My Server")@mcp.promptdef analyze_code(code: str, language: str = "python") -> str: """Analyze code for potential issues.""" return f"Analyze this {language} code:\n{code}"@mcp.promptdef explain_concept(concept: str) -> str: """Explain a programming concept.""" return f"Explain: {concept}"# Add the transform - creates list_prompts and get_prompt toolsmcp.add_transform(PromptsAsTools(mcp))
Clients now see three items: whatever tools you defined directly, plus list_prompts and get_prompt.