Skip listing tools that aren't valid ToolDefinitions (#340)

The tool used in the mcp demo isn't a valid ToolDefinition.

Unable to list tool 'Demo.lorem': 1 validation error for ToolDefinition
requirements Input should be a valid dictionary or
instance of ToolRequirements For further information visit
https://errors.pydantic.dev/2.10/v/model_type
This commit is contained in:
Eric Gustin 2025-04-01 13:20:17 -08:00 committed by GitHub
parent cb1fff151b
commit 2dd7719517
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -17,6 +17,7 @@ from openai import OpenAI, Stream
from openai.types.chat.chat_completion import Choice as ChatCompletionChoice from openai.types.chat.chat_completion import Choice as ChatCompletionChoice
from openai.types.chat.chat_completion_chunk import ChatCompletionChunk from openai.types.chat.chat_completion_chunk import ChatCompletionChunk
from openai.types.chat.chat_completion_chunk import Choice as ChatCompletionChunkChoice from openai.types.chat.chat_completion_chunk import Choice as ChatCompletionChunkChoice
from pydantic import ValidationError
from rich.console import Console from rich.console import Console
from rich.live import Live from rich.live import Live
from rich.markdown import Markdown from rich.markdown import Markdown
@ -201,7 +202,11 @@ def get_tools_from_engine(
try: try:
page_iterator = client.tools.list(toolkit=toolkit or NOT_GIVEN) page_iterator = client.tools.list(toolkit=toolkit or NOT_GIVEN)
for tool in page_iterator: for tool in page_iterator:
tools.append(ToolDefinition.model_validate(tool.model_dump())) try:
tools.append(ToolDefinition.model_validate(tool.model_dump()))
except ValidationError:
# Skip listing tools that aren't valid ToolDefinitions
continue
except APIConnectionError: except APIConnectionError:
console.print( console.print(
f"❌ Can't connect to Arcade Engine at {base_url}. (Is it running?)", style="bold red" f"❌ Can't connect to Arcade Engine at {base_url}. (Is it running?)", style="bold red"