URL: https://gofastmcp.com/clients/prompts
Title: Getting Prompts - FastMCP

Documentation Index
Fetch the complete documentation index at:
/llms.txt
Use this file to discover all available pages before exploring further.
Skip to main content
Meet
Prefect Horizon
, the enterprise MCP gateway built by the team behind FastMCP
FastMCP
home page
v3
Prefect Horizon
PrefectHQ/fastmcp
25,596
PrefectHQ/fastmcp
25,596
Search...
Navigation
Operations
Getting Prompts
Search the docs...
Ctrl
K
Documentation
Get Started
Welcome!
Installation
Quickstart
Servers
Overview
Core Components
Working with Tools
MCP Providers
Interactivity
Extensibility
Auth
Deployment
Apps
Overview
Quickstart
NEW
FastMCPApp
NEW
Interactive Tools
NEW
Generative UI
NEW
Custom HTML
Reference
Clients
Overview
Client-Only Package
Transports
fastmcp-remote
Operations
UPDATED
Tools
Resources
Prompts
Sampling
Elicitation
Tasks
NEW
Progress
Logging
Roots
Notifications
Authentication
UPDATED
Integrations
Auth
Web Frameworks
AI Assistants
AI SDKs
MCP.json
More
Settings
CLI
Upgrading
Development
What's New
FAQ
On this page
Basic Usage
Argument Serialization
Working with Results
Version Selection
Multi-Server Clients
Raw Protocol Access
Operations
Getting Prompts
Copy page
Retrieve rendered message templates with automatic argument serialization.
Copy page
New in version
2.0.0
Use this when you need to retrieve server-defined message templates for LLM interactions.
Prompts are reusable message templates exposed by MCP servers. They can accept arguments to generate personalized message sequences for LLM interactions.
​
Basic Usage
Request a rendered prompt with
get_prompt()
:
async
with
client
:
# Simple prompt without arguments
result
=
await
client
.
get_prompt
(
"
welcome_message
"
)
# result -> mcp.types.GetPromptResult
# Access the generated messages
for
message
in
result
.
messages
:
print
(
f
"Role:
{
message
.
role
}
"
)
print
(
f
"Content:
{
message
.
content
}
"
)
Pass arguments to customize the prompt:
async
with
client
:
result
=
await
client
.
get_prompt
(
"
user_greeting
"
,
{
"
name
"
:
"
Alice
"
,
"
role
"
:
"
administrator
"
})
for
message
in
result
.
messages
:
print
(
f
"Generated message:
{
message
.
content
}
"
)
​
Argument Serialization
New in version
2.9.0
FastMCP automatically serializes complex arguments to JSON strings as required by the MCP specification. You can pass typed objects directly:
from
dataclasses
import
dataclass
@
dataclass
class
UserData
:
name
:
str
age
:
int
async
with
client
:
result
=
await
client
.
get_prompt
(
"
analyze_user
"
,
{
"
user
"
:
UserData
(
name
=
"
Alice
"
,
age
=
30
),
# Automatically serialized
"
preferences
"
:
{
"
theme
"
:
"
dark
"
},
# Dict serialized
"
scores
"
:
[
85
,
92
,
78
],
# List serialized
"
simple_name
"
:
"
Bob
"
# Strings unchanged
})
The client handles serialization using
pydantic_core.to_json()
for consistent formatting. FastMCP servers automatically deserialize these JSON strings back to the expected types.
​
Working with Results
The
get_prompt()
method returns a
GetPromptResult
containing a list of messages:
async
with
client
:
result
=
await
client
.
get_prompt
(
"
conversation_starter
"
,
{
"
topic
"
:
"
climate
"
})
for
i
,
message
in
enumerate
(
result
.
messages
):
print
(
f
"Message
{
i
+
1
}
:"
)
print
(
f
" Role:
{
message
.
role
}
"
)
print
(
f
" Content:
{
message
.
content
.
text
if
hasattr
(
message
.
content
,
'
text
'
)
else
message
.
content
}
"
)
Prompts can generate different message types. System messages configure LLM behavior:
async
with
client
:
result
=
await
client
.
get_prompt
(
"
system_configuration
"
,
{
"
role
"
:
"
helpful assistant
"
,
"
expertise
"
:
"
python programming
"
})
# Access the returned messages
message
=
result
.
messages
[
0
]
print
(
f
"Prompt:
{
message
.
content
}
"
)
Conversation templates generate multi-turn flows:
async
with
client
:
result
=
await
client
.
get_prompt
(
"
interview_template
"
,
{
"
candidate_name
"
:
"
Alice
"
,
"
position
"
:
"
Senior Developer
"
})
# Multiple messages for a conversation flow
for
message
in
result
.
messages
:
print
(
f
"
{
message
.
role
}
:
{
message
.
content
}
"
)
​
Version Selection
New in version
3.0.0
When a server exposes multiple versions of a prompt, you can request a specific version:
async
with
client
:
# Get the highest version (default)
result
=
await
client
.
get_prompt
(
"
summarize
"
,
{
"
text
"
:
"
...
"
})
# Get a specific version
result_v1
=
await
client
.
get_prompt
(
"
summarize
"
,
{
"
text
"
:
"
...
"
},
version
=
"
1.0
"
)
See
Metadata
for how to discover available versions.
​
Multi-Server Clients
When using multi-server clients, prompts are accessible directly without prefixing:
async
with
client
:
# Multi-server client
result1
=
await
client
.
get_prompt
(
"
weather_prompt
"
,
{
"
city
"
:
"
London
"
})
result2
=
await
client
.
get_prompt
(
"
assistant_prompt
"
,
{
"
query
"
:
"
help
"
})
​
Raw Protocol Access
For complete control, use
get_prompt_mcp()
which returns the full MCP protocol object:
async
with
client
:
result
=
await
client
.
get_prompt_mcp
(
"
example_prompt
"
,
{
"
arg
"
:
"
value
"
})
# result -> mcp.types.GetPromptResult
Reading Resources
Previous
LLM Sampling
Next
Ctrl
+I
discord
github
website
x
Powered by
This documentation is built and hosted on Mintlify, a developer documentation platform
Assistant
Responses are generated using AI and may contain mistakes.
\n\n
\n
\n \n
\n
