Skip to content

[BUG][API]: ServerCapabilities.tools type too strict β€” rejects MCP servers with extra capability fieldsΒ #3063

@ramcysiddique

Description

@ramcysiddique

🐞 Bug Summary

A certain document processing mcp tool throws validation errors while trying to execute through MCP with plugins enabled.This works fine in CF without plugins.
Please see the below logs.

2026-02-19T09:32:02 - mcp.server.lowlevel.server - DEBUG - Dispatching request of type CallToolRequest
2026-02-19T09:32:02 - mcp.server.lowlevel.server - DEBUG - Tool cache miss for doc-processing-2-searchibmwatsonxorchestrateadk, refreshing cache
2026-02-19T09:32:02 - mcpgateway.services.tool_service - INFO - Invoking tool: doc-processing-2-searchibmwatsonxorchestrateadk with arguments: dict_keys(['query', 'wxo_connection_id', 'wxo_auth', 'wxo_environment_id']) and headers: dict_keys(['host', 'accept-encoding', 'connection', 'accept', 'content-type', 'authorization', 'x-ibm-wo-transaction-id', 'user-agent', 'x-tenant-id', 'mcp-protocol-version', 'content-length', 'x-team-id', 'x-team-slug', 'x-team-token', 'x-wxo-access-token'])
2026-02-19T09:32:02 - mcpgateway.cache.tool_lookup_cache - INFO - ToolLookupCache initialized: enabled=True l1_max=10000 ttl=60s l2_enabled=False
2026-02-19T09:32:02 - mcpgateway.transports.streamablehttp_transport - ERROR - Error calling tool 'doc-processing-2-searchibmwatsonxorchestrateadk': 1 validation error for Gateway
capabilities.tools.SearchIbmWatsonxOrchestrateAdk
  Input should be a valid boolean [type=bool_type, input_value={'name': 'SearchIbmWatson...'MintlifyDefaultSearch'}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.12/v/bool_type
Traceback (most recent call last):
  File "/app/mcpgateway/transports/streamablehttp_transport.py", line 627, in call_tool
    result = await tool_service.invoke_tool(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/mcpgateway/services/tool_service.py", line 2679, in invoke_tool
    gateway_metadata = PydanticGateway.model_validate(gateway)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/.venv/lib64/python3.12/site-packages/pydantic/main.py", line 716, in model_validate
    return cls.__pydantic_validator__.validate_python(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pydantic_core._pydantic_core.ValidationError: 1 validation error for Gateway
capabilities.tools.SearchIbmWatsonxOrchestrateAdk
  Input should be a valid boolean [type=bool_type, input_value={'name': 'SearchIbmWatson...'MintlifyDefaultSearch'}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.12/v/bool_type
2026-02-19T09:32:02 - mcp.server.lowlevel.server - DEBUG - Response sent
2026-02-19T09:32:02 - mcp.server.streamable_http - INFO - Terminating session: None
2026-02-19T09:32:02 - mcpgateway.plugins.auth_pre_check - INFO - [WXO_AUTH] Auth audit: POST /servers/b5489fd915e9463c88f7905d3e1ffb77/mcp -> 200 (auth_present=True, client=172.19.0.14)
2026-02-19T09:32:02 - mcpgateway.services.structured_logger - INFO - [http_gateway] Request completed: POST /servers/b5489fd915e9463c88f7905d3e1ffb77/mcp - 200

🧩 Affected Component

Select the area of the project impacted:

  • mcpgateway - API
  • mcpgateway - UI (admin panel)
  • mcpgateway.wrapper - stdio wrapper
  • Federation or Transports
  • CLI, Makefiles, or shell scripts
  • Container setup (Docker/Podman/Compose)
  • Other (explain below)

πŸ” Steps to Reproduce

  1. ...
  2. ...
  3. ...

πŸ€” Expected Behavior

What should have happened instead?


πŸ““ Logs / Error Output

Paste any relevant stack traces or logs here.
⚠️ Do not paste secrets, credentials, or tokens.


🧠 Environment Info

You can retrieve most of this from the /version endpoint.

Key Value
Version or commit e.g. v0.9.0 or main@a1b2c3d
Runtime e.g. Python 3.11, Gunicorn
Platform / OS e.g. Ubuntu 22.04, macOS
Container e.g. Docker, Podman, none

🧩 Additional Context (optional)

Add any configuration details, flags, or related issues.

Metadata

Metadata

Assignees

Labels

MUSTP1: Non-negotiable, critical requirements without which the product is non-functional or unsafebugSomething isn't workingwxowxo integration

Type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions