Skip to content

MCP tool discovery crashes with MCP 2.0 Tool models #419

Description

@hertznsk

Description

Conductor crashes while discovering tools when installed with mcp==2.0.0. The dependency constraint currently allows this version (mcp>=1.28.1), but MCPManager reads the MCP model attribute as tool.inputSchema.

MCP 2.0 renamed the Python attribute to input_schema while preserving inputSchema as its serialization alias. As a result, connecting any stdio MCP server can fail before the workflow starts.

Error

AttributeError: 'Tool' object has no attribute 'inputSchema'. Did you mean: 'input_schema'?

Reproduction

  1. Install Conductor in an environment that resolves mcp==2.0.0.
  2. Configure a workflow with a stdio MCP server that exposes at least one tool.
  3. Run the workflow.
  4. Tool discovery fails in src/conductor/mcp/manager.py while reading tool.inputSchema.

A minimal model-level reproduction is:

from mcp.types import Tool

tool = Tool(name="search", inputSchema={"type": "object"})
print(tool.inputSchema)

Expected behavior

Conductor should discover tool schemas with both MCP 1.x and MCP 2.x model field naming.

Proposed fix

Read the schema through Pydantic serialization with aliases (tool.model_dump(by_alias=True)["inputSchema"]), which produces the same key for both supported model shapes, and add a regression test modeled after MCP 2.0.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions