Running static schema analysis on the GitHub MCP server reveals 112 issues (20 errors, 92 warnings) across 26 tools. The most impactful: required parameters with no description, which forces AI agents to guess what values to provide.
Summary:
| Severity |
Count |
Impact |
| Error (E103) |
20 |
Required parameters with no description |
| Warning (W102) |
72 |
Optional parameters with no description |
| Warning (W103) |
20 |
Required string params with no enum/pattern/example |
Examples of what agents see:
create_issue requires title and body with no description. An agent doesn't know:
- Is
body plain text or markdown?
- What's the maximum length?
- Should
title include a prefix like [BUG]?
search_repositories requires query with no description. An agent doesn't know:
- Is this GitHub search syntax (
language:go stars:>100)?
- Or plain text?
- What qualifiers are available?
create_pull_request requires title, body, head, base with no descriptions. An agent must guess:
- Is
head a branch name or a ref like refs/heads/feature?
- Is
base required to be main or can it be any branch?
What good parameter descriptions look like:
{
"name": "query",
"type": "string",
"description": "GitHub search query using search syntax (e.g. 'language:go stars:>100'). See https://docs.github.com/en/search-github/searching-on-github"
}
How this was found:
mcp-assert lint --server "npx -y @modelcontextprotocol/server-github"
Adding descriptions to required parameters would significantly reduce agent misuse of these tools.
Running static schema analysis on the GitHub MCP server reveals 112 issues (20 errors, 92 warnings) across 26 tools. The most impactful: required parameters with no description, which forces AI agents to guess what values to provide.
Summary:
Examples of what agents see:
create_issuerequirestitleandbodywith no description. An agent doesn't know:bodyplain text or markdown?titleinclude a prefix like[BUG]?search_repositoriesrequiresquerywith no description. An agent doesn't know:language:go stars:>100)?create_pull_requestrequirestitle,body,head,basewith no descriptions. An agent must guess:heada branch name or a ref likerefs/heads/feature?baserequired to bemainor can it be any branch?What good parameter descriptions look like:
{ "name": "query", "type": "string", "description": "GitHub search query using search syntax (e.g. 'language:go stars:>100'). See https://docs.github.com/en/search-github/searching-on-github" }How this was found:
mcp-assert lint --server "npx -y @modelcontextprotocol/server-github"Adding descriptions to required parameters would significantly reduce agent misuse of these tools.