Skip to content

Commit ecbe430

Browse files
committed
Align PromptManager unknown prompt errors with invalid params
1 parent 0af917e commit ecbe430

2 files changed

Lines changed: 13 additions & 4 deletions

File tree

‎src/mcp/server/mcpserver/prompts/manager.py‎

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44

55
from typing import TYPE_CHECKING, Any
66

7-
from mcp_types import InputRequiredResult
7+
from mcp_types import INVALID_PARAMS, InputRequiredResult
88

99
from mcp.server.mcpserver.prompts.base import Message, Prompt
1010
from mcp.server.mcpserver.utilities.logging import get_logger
11+
from mcp.shared.exceptions import MCPError
1112

1213
if TYPE_CHECKING:
1314
from mcp.server.context import LifespanContextT, RequestT
@@ -59,9 +60,15 @@ async def render_prompt(
5960
arguments: dict[str, Any] | None,
6061
context: Context[LifespanContextT, RequestT],
6162
) -> list[Message] | InputRequiredResult:
62-
"""Render a prompt by name with arguments."""
63+
"""Render a prompt by name with arguments.
64+
65+
Raises:
66+
MCPError: If the prompt name is unknown or a required argument is missing,
67+
with code `INVALID_PARAMS`, or if the prompt function raises it.
68+
ValueError: If rendering fails.
69+
"""
6370
prompt = self.get_prompt(name)
6471
if not prompt:
65-
raise ValueError(f"Unknown prompt: {name}")
72+
raise MCPError(code=INVALID_PARAMS, message=f"Unknown prompt: {name}")
6673

6774
return await prompt.render(arguments, context)

‎tests/server/mcpserver/prompts/test_manager.py‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,10 @@ def fn(name: str) -> str:
9595
async def test_render_unknown_prompt(self):
9696
"""Test rendering a non-existent prompt."""
9797
manager = PromptManager()
98-
with pytest.raises(ValueError, match="Unknown prompt: unknown"):
98+
with pytest.raises(MCPError) as exc_info:
9999
await manager.render_prompt("unknown", None, Context())
100+
assert exc_info.value.code == INVALID_PARAMS
101+
assert exc_info.value.message == snapshot("Unknown prompt: unknown")
100102

101103
@pytest.mark.anyio
102104
async def test_render_prompt_with_missing_args(self):

0 commit comments

Comments
 (0)