MCPcopy Index your code
hub / github.com/modelcontextprotocol/python-sdk / PromptManager

Class PromptManager

src/mcp/server/mcpserver/prompts/manager.py:17–59  ·  view source on GitHub ↗

Manages MCPServer prompts.

Source from the content-addressed store, hash-verified

15
16
17class PromptManager:
18 """Manages MCPServer prompts."""
19
20 def __init__(self, warn_on_duplicate_prompts: bool = True):
21 self._prompts: dict[str, Prompt] = {}
22 self.warn_on_duplicate_prompts = warn_on_duplicate_prompts
23
24 def get_prompt(self, name: str) -> Prompt | None:
25 """Get prompt by name."""
26 return self._prompts.get(name)
27
28 def list_prompts(self) -> list[Prompt]:
29 """List all registered prompts."""
30 return list(self._prompts.values())
31
32 def add_prompt(
33 self,
34 prompt: Prompt,
35 ) -> Prompt:
36 """Add a prompt to the manager."""
37
38 # Check for duplicates
39 existing = self._prompts.get(prompt.name)
40 if existing:
41 if self.warn_on_duplicate_prompts:
42 logger.warning(f"Prompt already exists: {prompt.name}")
43 return existing
44
45 self._prompts[prompt.name] = prompt
46 return prompt
47
48 async def render_prompt(
49 self,
50 name: str,
51 arguments: dict[str, Any] | None,
52 context: Context[LifespanContextT, RequestT],
53 ) -> list[Message]:
54 """Render a prompt by name with arguments."""
55 prompt = self.get_prompt(name)
56 if not prompt:
57 raise ValueError(f"Unknown prompt: {name}")
58
59 return await prompt.render(arguments, context)

Calls

no outgoing calls