Skip to content

manager

Prompt management functionality.

PromptManager

Manages MCPServer prompts.

Source code in src/mcp/server/mcpserver/prompts/manager.py
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
class PromptManager:
    """Manages MCPServer prompts."""

    def __init__(self, warn_on_duplicate_prompts: bool = True):
        self._prompts: dict[str, Prompt] = {}
        self.warn_on_duplicate_prompts = warn_on_duplicate_prompts

    def get_prompt(self, name: str) -> Prompt | None:
        """Get prompt by name."""
        return self._prompts.get(name)

    def list_prompts(self) -> list[Prompt]:
        """List all registered prompts."""
        return list(self._prompts.values())

    def add_prompt(
        self,
        prompt: Prompt,
    ) -> Prompt:
        """Add a prompt to the manager."""

        # Check for duplicates
        existing = self._prompts.get(prompt.name)
        if existing:
            if self.warn_on_duplicate_prompts:
                logger.warning(f"Prompt already exists: {prompt.name}")
            return existing

        self._prompts[prompt.name] = prompt
        return prompt

    async def render_prompt(
        self,
        name: str,
        arguments: dict[str, Any] | None,
        context: Context[LifespanContextT, RequestT],
    ) -> list[Message]:
        """Render a prompt by name with arguments."""
        prompt = self.get_prompt(name)
        if not prompt:
            raise ValueError(f"Unknown prompt: {name}")

        return await prompt.render(arguments, context)

get_prompt

get_prompt(name: str) -> Prompt | None

Get prompt by name.

Source code in src/mcp/server/mcpserver/prompts/manager.py
24
25
26
def get_prompt(self, name: str) -> Prompt | None:
    """Get prompt by name."""
    return self._prompts.get(name)

list_prompts

list_prompts() -> list[Prompt]

List all registered prompts.

Source code in src/mcp/server/mcpserver/prompts/manager.py
28
29
30
def list_prompts(self) -> list[Prompt]:
    """List all registered prompts."""
    return list(self._prompts.values())

add_prompt

add_prompt(prompt: Prompt) -> Prompt

Add a prompt to the manager.

Source code in src/mcp/server/mcpserver/prompts/manager.py
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
def add_prompt(
    self,
    prompt: Prompt,
) -> Prompt:
    """Add a prompt to the manager."""

    # Check for duplicates
    existing = self._prompts.get(prompt.name)
    if existing:
        if self.warn_on_duplicate_prompts:
            logger.warning(f"Prompt already exists: {prompt.name}")
        return existing

    self._prompts[prompt.name] = prompt
    return prompt

render_prompt async

render_prompt(
    name: str,
    arguments: dict[str, Any] | None,
    context: Context[LifespanContextT, RequestT],
) -> list[Message]

Render a prompt by name with arguments.

Source code in src/mcp/server/mcpserver/prompts/manager.py
48
49
50
51
52
53
54
55
56
57
58
59
async def render_prompt(
    self,
    name: str,
    arguments: dict[str, Any] | None,
    context: Context[LifespanContextT, RequestT],
) -> list[Message]:
    """Render a prompt by name with arguments."""
    prompt = self.get_prompt(name)
    if not prompt:
        raise ValueError(f"Unknown prompt: {name}")

    return await prompt.render(arguments, context)