Description
The get_me tool is documented as requiring no parameters, but when called
without any arguments it returns an error in certain MCP clients. Passing a
dummy parameter (e.g. {"_": ""}) makes the call succeed.
This is inconsistent with the tool's own schema declaration and creates friction
for any client that strictly follows the declared schema.
Steps to Reproduce
- Start the GitHub MCP Server (local or remote).
- Call
get_me with an empty argument object (as the schema says no parameters
are required):
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_me",
"arguments": {}
}
}
- Observe the error response.
- Retry with a dummy parameter:
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get_me",
"arguments": { "_": "" }
}
}
- Observe that this call succeeds.
Expected Behavior
get_me should succeed when called with an empty arguments object {}, since
the tool schema declares no required arguments.
Actual Behavior
get_me returns an error when called with {}. The call only succeeds if a
dummy/extra parameter is included.
Root Cause (Hypothesis)
Looking at pkg/github/context_tools.go, get_me is registered with
mcp.NewTool with no input schema properties. After the recent migration from
mark3labs/mcp-go to the official modelcontextprotocol/go-sdk, the SDK may
be rejecting a null or missing arguments field differently than an explicit
{}.
Two possible causes:
- SDK-level validation: The Go SDK may require
arguments to be a
non-null JSON object. If the client omits the field entirely (or sends
null), it gets rejected before the handler is invoked.
- Handler-level parsing: The tool handler may attempt to parse
request.Params.Arguments and fail on a nil/empty map before returning
early for the no-param case.
Environment
- GitHub MCP Server version:
main (latest)
- MCP SDK:
modelcontextprotocol/go-sdk (post-migration)
- Transport: stdio / streamable-http (reproduced on both)
- Client: Claude Code with Local LLM
Suggested Fix
Ensure the get_me handler (and any other zero-parameter tool) gracefully
handles both a missing arguments field and an explicit empty object {}.
A guard like the following at the top of the handler should suffice:
// No parameters expected; nothing to parse.
// Handle both nil and empty arguments map to stay robust.
Alternatively, if this is an SDK-level issue, the tool registration could
explicitly set an empty-object schema ("properties": {}, "type": "object")
to signal that an empty object is valid input, which some validators require.
Additional Context
- The README documents
get_me as: "No parameters required"
- Other zero-parameter tools (if any) may be affected by the same issue.
- A workaround is to pass any dummy key, but this should not be necessary.
Description
The
get_metool is documented as requiring no parameters, but when calledwithout any arguments it returns an error in certain MCP clients. Passing a
dummy parameter (e.g.
{"_": ""}) makes the call succeed.This is inconsistent with the tool's own schema declaration and creates friction
for any client that strictly follows the declared schema.
Steps to Reproduce
get_mewith an empty argument object (as the schema says no parametersare required):
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "get_me", "arguments": {} } }{ "jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": { "name": "get_me", "arguments": { "_": "" } } }Expected Behavior
get_meshould succeed when called with an empty arguments object{}, sincethe tool schema declares no required arguments.
Actual Behavior
get_mereturns an error when called with{}. The call only succeeds if adummy/extra parameter is included.
Root Cause (Hypothesis)
Looking at
pkg/github/context_tools.go,get_meis registered withmcp.NewToolwith no input schema properties. After the recent migration frommark3labs/mcp-goto the officialmodelcontextprotocol/go-sdk, the SDK maybe rejecting a
nullor missingargumentsfield differently than an explicit{}.Two possible causes:
argumentsto be anon-null JSON object. If the client omits the field entirely (or sends
null), it gets rejected before the handler is invoked.request.Params.Argumentsand fail on a nil/empty map before returningearly for the no-param case.
Environment
main(latest)modelcontextprotocol/go-sdk(post-migration)Suggested Fix
Ensure the
get_mehandler (and any other zero-parameter tool) gracefullyhandles both a missing
argumentsfield and an explicit empty object{}.A guard like the following at the top of the handler should suffice:
Alternatively, if this is an SDK-level issue, the tool registration could
explicitly set an empty-object schema (
"properties": {}, "type": "object")to signal that an empty object is valid input, which some validators require.
Additional Context
get_meas: "No parameters required"