mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
Python: Fix MCP Tool Parameter Descriptions Not Propagated to LLMs (#1978)
* mcp tool description fix * small fix
This commit is contained in:
committed by
GitHub
Unverified
parent
1d7292fba6
commit
d59bd20765
@@ -19,7 +19,7 @@ from mcp.client.websocket import websocket_client
|
|||||||
from mcp.shared.context import RequestContext
|
from mcp.shared.context import RequestContext
|
||||||
from mcp.shared.exceptions import McpError
|
from mcp.shared.exceptions import McpError
|
||||||
from mcp.shared.session import RequestResponder
|
from mcp.shared.session import RequestResponder
|
||||||
from pydantic import BaseModel, create_model
|
from pydantic import BaseModel, Field, create_model
|
||||||
|
|
||||||
from ._tools import AIFunction, HostedMCPSpecificApproval
|
from ._tools import AIFunction, HostedMCPSpecificApproval
|
||||||
from ._types import ChatMessage, Contents, DataContent, Role, TextContent, UriContent
|
from ._types import ChatMessage, Contents, DataContent, Role, TextContent, UriContent
|
||||||
@@ -224,13 +224,20 @@ def _get_input_model_from_mcp_tool(tool: types.Tool) -> type[BaseModel]:
|
|||||||
prop_details = json.loads(prop_details) if isinstance(prop_details, str) else prop_details
|
prop_details = json.loads(prop_details) if isinstance(prop_details, str) else prop_details
|
||||||
|
|
||||||
python_type = resolve_type(prop_details)
|
python_type = resolve_type(prop_details)
|
||||||
|
description = prop_details.get("description", "")
|
||||||
|
|
||||||
# Create field definition for create_model
|
# Create field definition for create_model
|
||||||
if prop_name in required:
|
if prop_name in required:
|
||||||
field_definitions[prop_name] = (python_type, ...)
|
field_definitions[prop_name] = (
|
||||||
|
(python_type, Field(description=description)) if description else (python_type, ...)
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
default_value = prop_details.get("default", None)
|
default_value = prop_details.get("default", None)
|
||||||
field_definitions[prop_name] = (python_type, default_value)
|
field_definitions[prop_name] = (
|
||||||
|
(python_type, Field(default=default_value, description=description))
|
||||||
|
if description
|
||||||
|
else (python_type, default_value)
|
||||||
|
)
|
||||||
|
|
||||||
return create_model(f"{tool.name}_input", **field_definitions)
|
return create_model(f"{tool.name}_input", **field_definitions)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user