Skip to content

MCP tool wrappers send extra _placeholder param causing ZodError in Supabase MCP + empty response in PythonAnywhere MCP #15041

@arvindg4u

Description

@arvindg4u

Bug Report

Two MCP tool wrappers in OpenCode send incorrect parameters that cause failures with remote MCP servers.


Bug 1: supabase_list_projects — ZodError due to _placeholder key

Tool: supabase_list_projects
MCP Server: https://mcp.supabase.com/mcp

Error:

{
  "error": {
    "name": "ZodError",
    "message": "[\n  {\n    \"code\": \"unrecognized_keys\",\n    \"keys\": [\n      \"_placeholder\"\n    ],\n    \"path\": [],\n    \"message\": \"Unrecognized key: \\\"_placeholder\\\"\"\n  }\n]"
  }
}

Root Cause:
OpenCode sends { _placeholder: true } as the input to list_projects, but the Supabase MCP server's Zod schema expects z.object({}) (an empty object with no keys). The extra _placeholder key causes a ZodError with unrecognized_keys.

Affected tools (all use the same _placeholder pattern):

  • supabase_list_projects
  • supabase_list_organizations

Expected behavior: Tool should send {} (empty object) or no input — not { _placeholder: true }.


Bug 2: pythonanywhere_list_websites — Empty API response

Tool: pythonanywhere_list_websites
MCP Server: Local pythonanywhere-mcp-server

Error:

Error executing tool list_websites: Failed to list websites: Expecting value: line 1 column 1 (char 0)

Root Cause:
The tool call results in an empty response body from the PythonAnywhere API. The MCP server attempts to parse it as JSON and fails. This may be related to an incorrect endpoint being called or a missing/malformed request parameter sent by OpenCode's wrapper.

Note: pythonanywhere_list_webapps works correctly. Only list_websites (ASGI-based sites) fails.


Environment

  • OpenCode config: remote Supabase MCP at https://mcp.supabase.com/mcp with Bearer token auth
  • PythonAnywhere MCP: local binary at /root/.venvs/pythonanywhere-mcp/bin/pythonanywhere-mcp-server
  • Platform: Linux

Workaround

None available from config. These are internal OpenCode tool wrapper issues and cannot be fixed by the user.

Metadata

Metadata

Assignees

Labels

coreAnything pertaining to core functionality of the application (opencode server stuff)

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions