Open MCP Portaldocs

Parameter headers

Tool arguments marked with x-mcp-header in an input schema, which Open MCP Portal also sends as Mcp-Param-* HTTP headers on forwarded tool calls.

A tool's input schema may mark an argument with "x-mcp-header": "<Name>". A client then also sends that argument's value in an Mcp-Param-<Name> HTTP header on tools/call, so servers and proxies can route on it without parsing the body (SEP-2243, in the MCP 2026-07-28 revision). GitHub's hosted MCP server requires them, for owner and repo.

Open MCP Portal opens a new MCP session for each call, so it builds these headers itself from the approved definition of the tool, as listed when the server was discovered:

{
  "name": "list_issues",
  "inputSchema": {
    "type": "object",
    "properties": {
      "owner": { "type": "string", "x-mcp-header": "Owner" },
      "repo": { "type": "string", "x-mcp-header": "Repo" }
    }
  }
}

A call with {"owner": "example", "repo": "tools"} is forwarded with Mcp-Param-Owner: example and Mcp-Param-Repo: tools.

Rules

  • Only properties of the input schema, including nested object properties (up to 8 levels), whose argument is present and not null.
  • Only string, boolean and integer values (integers within ±253−1). Other values send no header.
  • The name after Mcp-Param- must be an HTTP token of at most 64 characters.
  • Values longer than 1,024 characters send no header.
  • A value with characters outside printable ASCII, or with leading or trailing spaces or tabs, is sent base64-encoded as =?base64?…?=.
  • At most 32 such headers per call.

The arguments in the body are unchanged: headers are a copy, not a replacement. Lists, prompts and resource reads never carry them.

On this page