GitHub MCP Server Plus
The GitHub MCP Server Plus provides comprehensive capabilities for interacting with the GitHub API:
File Operations: Create, update, and push single or multiple files; get contents of files or directories
Repository Management: Create repositories, fork repositories, create branches
Search Functionality: Search code, repositories, issues/PRs, and users using GitHub search syntax
Issue Management: Create, list, update issues; add comments; get issue details
Pull Request Operations: Create, list, merge PRs; update PR branches; get PR details
PR Reviews: Get PR files, status checks, comments; create and view reviews (approve, request changes, comment)
Commit Operations: List commits for a branch
Advanced Features: Filtering, sorting, and pagination options for search and listing operations
Allows interaction with the GitHub API for file operations, repository management, search functionality, issue/PR management, branch creation, and more.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@GitHub MCP Server Pluscreate a new issue in my-project titled 'Fix login bug' with label 'bug'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
GitHub MCP Server Plus
MCP Server for the GitHub API, enabling file operations, repository management, search functionality, and more.
Features
Automatic Branch Creation: When creating/updating files or pushing changes, branches are automatically created if they don't exist
Comprehensive Error Handling: Clear error messages for common issues
Git History Preservation: Operations maintain proper Git history without force pushing
Batch Operations: Support for both single-file and multi-file operations with content or file paths
Advanced Search: Support for searching code, issues/PRs, and users
Tools
create_or_update_fileCreate or update a single file in a repository
Inputs:
owner(string): Repository owner (username or organization)repo(string): Repository namepath(string): Path where to create/update the filecontent(string): Content of the filemessage(string): Commit messagebranch(string): Branch to create/update the file insha(optional string): SHA of file being replaced (for updates)
Returns: File content and commit details
push_files_contentPush multiple files with direct content in a single commit
Inputs:
owner(string): Repository ownerrepo(string): Repository namebranch(string): Branch to push tofiles(array): Files to push, each withpathandcontentmessage(string): Commit message
Returns: Updated branch reference
push_files_from_pathPush multiple files from filesystem paths in a single commit
Inputs:
owner(string): Repository ownerrepo(string): Repository namebranch(string): Branch to push tofiles(array): Files to push, each with:path(string): Target path in the repositoryfilepath(string): Source filesystem path to read from
message(string): Commit message
Returns: Updated branch reference
search_repositoriesSearch for GitHub repositories
Inputs:
query(string): Search querypage(optional number): Page number for paginationperPage(optional number): Results per page (max 100)
Returns: Repository search results
create_repositoryCreate a new GitHub repository
Inputs:
name(string): Repository namedescription(optional string): Repository descriptionprivate(optional boolean): Whether repo should be privateautoInit(optional boolean): Initialize with README
Returns: Created repository details
get_file_contentsGet contents of a file or directory
Inputs:
owner(string): Repository ownerrepo(string): Repository namepath(string): Path to file/directorybranch(optional string): Branch to get contents from
Returns: File/directory contents
create_issueCreate a new issue
Inputs:
owner(string): Repository ownerrepo(string): Repository nametitle(string): Issue titlebody(optional string): Issue descriptionassignees(optional string[]): Usernames to assignlabels(optional string[]): Labels to addmilestone(optional number): Milestone number
Returns: Created issue details
create_pull_requestCreate a new pull request
Inputs:
owner(string): Repository ownerrepo(string): Repository nametitle(string): PR titlebody(optional string): PR descriptionhead(string): Branch containing changesbase(string): Branch to merge intodraft(optional boolean): Create as draft PRmaintainer_can_modify(optional boolean): Allow maintainer edits
Returns: Created pull request details
fork_repositoryFork a repository
Inputs:
owner(string): Repository ownerrepo(string): Repository nameorganization(optional string): Organization to fork to
Returns: Forked repository details
create_branchCreate a new branch
Inputs:
owner(string): Repository ownerrepo(string): Repository namebranch(string): Name for new branchfrom_branch(optional string): Source branch (defaults to repo default)
Returns: Created branch reference
list_issuesList and filter repository issues
Inputs:
owner(string): Repository ownerrepo(string): Repository namestate(optional string): Filter by state ('open', 'closed', 'all')labels(optional string[]): Filter by labelssort(optional string): Sort by ('created', 'updated', 'comments')direction(optional string): Sort direction ('asc', 'desc')since(optional string): Filter by date (ISO 8601 timestamp)page(optional number): Page numberper_page(optional number): Results per page
Returns: Array of issue details
update_issueUpdate an existing issue
Inputs:
owner(string): Repository ownerrepo(string): Repository nameissue_number(number): Issue number to updatetitle(optional string): New titlebody(optional string): New descriptionstate(optional string): New state ('open' or 'closed')labels(optional string[]): New labelsassignees(optional string[]): New assigneesmilestone(optional number): New milestone number
Returns: Updated issue details
add_issue_commentAdd a comment to an issue
Inputs:
owner(string): Repository ownerrepo(string): Repository nameissue_number(number): Issue number to comment onbody(string): Comment text
Returns: Created comment details
search_codeSearch for code across GitHub repositories
Inputs:
q(string): Search query using GitHub code search syntaxsort(optional string): Sort field ('indexed' only)order(optional string): Sort order ('asc' or 'desc')per_page(optional number): Results per page (max 100)page(optional number): Page number
Returns: Code search results with repository context
search_issuesSearch for issues and pull requests
Inputs:
q(string): Search query using GitHub issues search syntaxsort(optional string): Sort field (comments, reactions, created, etc.)order(optional string): Sort order ('asc' or 'desc')per_page(optional number): Results per page (max 100)page(optional number): Page number
Returns: Issue and pull request search results
search_usersSearch for GitHub users
Inputs:
q(string): Search query using GitHub users search syntaxsort(optional string): Sort field (followers, repositories, joined)order(optional string): Sort order ('asc' or 'desc')per_page(optional number): Results per page (max 100)page(optional number): Page number
Returns: User search results
list_commitsGets commits of a branch in a repository
Inputs:
owner(string): Repository ownerrepo(string): Repository namepage(optional string): page numberper_page(optional string): number of record per pagesha(optional string): branch name
Returns: List of commits
get_issueGets the contents of an issue within a repository
Inputs:
owner(string): Repository ownerrepo(string): Repository nameissue_number(number): Issue number to retrieve
Returns: GitHub Issue object & details
get_pull_requestGet details of a specific pull request
Inputs:
owner(string): Repository ownerrepo(string): Repository namepull_number(number): Pull request number
Returns: Pull request details including diff and review status
list_pull_requestsList and filter repository pull requests
Inputs:
owner(string): Repository ownerrepo(string): Repository namestate(optional string): Filter by state ('open', 'closed', 'all')head(optional string): Filter by head user/org and branchbase(optional string): Filter by base branchsort(optional string): Sort by ('created', 'updated', 'popularity', 'long-running')direction(optional string): Sort direction ('asc', 'desc')per_page(optional number): Results per page (max 100)page(optional number): Page number
Returns: Array of pull request details
create_pull_request_reviewCreate a review on a pull request
Inputs:
owner(string): Repository ownerrepo(string): Repository namepull_number(number): Pull request numberbody(string): Review comment textevent(string): Review action ('APPROVE', 'REQUEST_CHANGES', 'COMMENT')commit_id(optional string): SHA of commit to reviewcomments(optional array): Line-specific comments, each with:path(string): File pathposition(number): Line position in diffbody(string): Comment text
Returns: Created review details
merge_pull_requestMerge a pull request
Inputs:
owner(string): Repository ownerrepo(string): Repository namepull_number(number): Pull request numbercommit_title(optional string): Title for merge commitcommit_message(optional string): Extra detail for merge commitmerge_method(optional string): Merge method ('merge', 'squash', 'rebase')
Returns: Merge result details
get_pull_request_filesGet the list of files changed in a pull request
Inputs:
owner(string): Repository ownerrepo(string): Repository namepull_number(number): Pull request number
Returns: Array of changed files with patch and status details
get_pull_request_statusGet the combined status of all status checks for a pull request
Inputs:
owner(string): Repository ownerrepo(string): Repository namepull_number(number): Pull request number
Returns: Combined status check results and individual check details
update_pull_request_branchUpdate a pull request branch with the latest changes from the base branch
Inputs:
owner(string): Repository ownerrepo(string): Repository namepull_number(number): Pull request numberexpected_head_sha(optional string): The expected SHA of the pull request's HEAD ref
Returns: Success message when branch is updated
get_pull_request_commentsGet the review comments on a pull request
Inputs:
owner(string): Repository ownerrepo(string): Repository namepull_number(number): Pull request number
Returns: Array of pull request review comments
get_pull_request_reviewsGet the reviews on a pull request
Inputs:
owner(string): Repository ownerrepo(string): Repository namepull_number(number): Pull request number
Returns: Array of pull request reviews
Related MCP server: mcp-github
Search Query Syntax
Code Search
language:javascript: Search by programming languagerepo:owner/name: Search in specific repositorypath:app/src: Search in specific pathextension:js: Search by file extensionExample:
q: "import express" language:typescript path:src/
Issues Search
is:issueoris:pr: Filter by typeis:openoris:closed: Filter by statelabel:bug: Search by labelauthor:username: Search by authorExample:
q: "memory leak" is:issue is:open label:bug
Users Search
type:userortype:org: Filter by account typefollowers:>1000: Filter by followerslocation:London: Search by locationExample:
q: "fullstack developer" location:London followers:>100
For detailed search syntax, see GitHub's searching documentation.
Setup
Personal Access Token
Create a GitHub Personal Access Token with appropriate permissions:
Go to Personal access tokens (in GitHub Settings > Developer settings)
Select which repositories you'd like this token to have access to (Public, All, or Select)
Create a token with the
reposcope ("Full control of private repositories")Alternatively, if working only with public repositories, select only the
public_reposcope
Copy the generated token
Usage with Claude Desktop
To use this with Claude Desktop, add the following to your claude_desktop_config.json:
Docker
{
"mcpServers": {
"github": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"mcp/github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}NPX
{
"mcpServers": {
"github": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}Build
Docker build:
docker build -t mcp/github -f src/github/Dockerfile .License
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.
Available Tools
18 toolsadd_issue_commentC
Add a comment to an existing issue
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | ||
| repo | Yes | ||
| issue_number | Yes | ||
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'Add a comment' implies a write/mutation operation, it doesn't disclose permission requirements, rate limits, whether comments are editable/deletable, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized for a straightforward tool and front-loads the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 4 parameters, 0% schema coverage, no annotations, and no output schema, the description is inadequate. It doesn't explain parameter meanings, behavioral implications, or what to expect upon execution. The context demands more comprehensive documentation than provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning all 4 parameters are undocumented in the schema. The description provides no information about what 'owner', 'repo', 'issue_number', or 'body' mean, their formats, or constraints. It doesn't compensate for the complete lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add a comment') and target resource ('to an existing issue'), providing a specific verb+resource combination. However, it doesn't distinguish this tool from its sibling 'update_issue', which might also handle comments, leaving room for ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'update_issue' or 'create_issue'. It mentions 'existing issue' which implies a prerequisite, but doesn't explicitly state when-not-to-use scenarios or reference sibling tools for different contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_branchC
Create a new branch in a GitHub repository
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner (username or organization) | |
| repo | Yes | Repository name | |
| branch | Yes | Name for the new branch | |
| from_branch | No | Optional: source branch to create from (defaults to the repository's default branch) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Create' implies a mutation, the description lacks details on permissions required, whether the operation is idempotent, error handling (e.g., if the branch already exists), or rate limits. This is inadequate for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a GitHub branch creation tool (a mutation with potential side effects), no annotations, and no output schema, the description is insufficient. It doesn't cover behavioral aspects like authentication needs, error cases, or return values, leaving significant gaps for an AI agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter-specific information beyond what's in the input schema, which has 100% coverage with clear descriptions for all four parameters. This meets the baseline of 3, as the schema fully documents the parameters, but the description doesn't enhance understanding with additional context or examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and resource ('new branch in a GitHub repository'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'create_repository' or 'create_pull_request' beyond the obvious resource difference, missing explicit sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing repository access), when not to use it (e.g., for existing branches), or how it relates to siblings like 'fork_repository' or 'create_pull_request' for branch-related workflows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_issueC
Create a new issue in a GitHub repository
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | ||
| repo | Yes | ||
| title | Yes | ||
| body | No | ||
| assignees | No | ||
| milestone | No | ||
| labels | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a creation operation but doesn't mention permission requirements, rate limits, what happens on success/failure, or whether it's idempotent. For a write operation with zero annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a basic tool description and front-loads the essential information about what the tool does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter write operation with no annotations, no output schema, and 0% schema description coverage, the description is inadequate. It doesn't explain return values, error conditions, authentication needs, or parameter semantics, leaving the agent with insufficient context to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage for all 7 parameters, the description provides no parameter information beyond what's inferred from the tool name. It doesn't explain what 'owner', 'repo', 'title', 'body', 'assignees', 'milestone', or 'labels' mean or how they should be formatted, failing to compensate for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create a new issue') and target resource ('in a GitHub repository'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'update_issue' or 'add_issue_comment', which would require explicit comparison to earn a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'update_issue' for modifying existing issues or 'add_issue_comment' for adding comments. There's no mention of prerequisites, context, or exclusions, leaving the agent with minimal usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_or_update_fileC
Create or update a single file in a GitHub repository
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner (username or organization) | |
| repo | Yes | Repository name | |
| path | Yes | Path where to create/update the file | |
| content | Yes | Content of the file | |
| message | Yes | Commit message | |
| branch | Yes | Branch to create/update the file in | |
| sha | No | SHA of the file being replaced (required when updating existing files) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool can 'create or update' files, implying mutation, but doesn't mention authentication requirements, rate limits, error conditions, or what happens when creating versus updating (e.g., the 'sha' parameter requirement for updates). This leaves significant gaps for an agent to understand the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. There's no wasted language or redundancy, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 7 parameters, no annotations, and no output schema, the description is insufficient. It doesn't cover behavioral aspects like authentication, error handling, or the create/update distinction, leaving the agent with incomplete context to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so all parameters are documented in the schema. The description adds no additional parameter semantics beyond what's already in the schema (e.g., it doesn't explain the relationship between 'sha' and updating files, though the schema hints at this). This meets the baseline expectation when schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('create or update') and resource ('a single file in a GitHub repository'), making the purpose immediately understandable. However, it doesn't explicitly differentiate this tool from sibling tools like 'push_files_content' or 'push_files_from_path', which might have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites, when to choose this over sibling tools like 'push_files_content', or any constraints on usage. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pull_requestC
Create a new pull request in a GitHub repository
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner (username or organization) | |
| repo | Yes | Repository name | |
| title | Yes | Pull request title | |
| body | No | Pull request body/description | |
| head | Yes | The name of the branch where your changes are implemented | |
| base | Yes | The name of the branch you want the changes pulled into | |
| draft | No | Whether to create the pull request as a draft | |
| maintainer_can_modify | No | Whether maintainers can modify the pull request |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure but offers minimal information. It states the tool creates a pull request but doesn't mention authentication requirements, rate limits, what happens on success/failure, whether it triggers notifications, or if it's idempotent. For a write operation with zero annotation coverage, this leaves critical behavioral traits undocumented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the core functionality without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly. Every word earns its place by conveying the essential action and target.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex write operation with 8 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what the tool returns, error conditions, or behavioral nuances like GitHub-specific constraints. The high parameter count and mutation nature demand more contextual information than provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing clear documentation for all 8 parameters. The description adds no parameter-specific information beyond what's in the schema, so it meets the baseline of 3. However, it doesn't compensate for any gaps since there are none in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('create') and resource ('pull request in a GitHub repository'), making the purpose immediately understandable. However, it doesn't distinguish this tool from sibling tools like create_issue or create_repository, which would require mentioning it's specifically for code review workflows between branches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing existing branches), contrast with create_issue for non-code changes, or specify when draft vs. regular pull requests are appropriate. Without this context, agents must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_repositoryC
Create a new GitHub repository in your account
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Repository name | |
| description | No | Repository description | |
| private | No | Whether the repository should be private | |
| autoInit | No | Initialize with README.md |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Create' implies a write operation, the description doesn't mention authentication requirements, rate limits, what happens on success/failure, or whether this is a destructive operation that creates permanent resources. It lacks essential context for safe and effective use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero wasted words. It's perfectly front-loaded and communicates the core purpose immediately without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write operation with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after creation (what's returned), authentication needs, error conditions, or how this differs from similar tools like fork_repository. The context signals indicate this is a non-trivial operation that requires more guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already documents all 4 parameters thoroughly. The description adds no parameter-specific information beyond what's in the schema. This meets the baseline expectation when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and resource ('new GitHub repository in your account'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'fork_repository' or explain why to use create_repository versus fork_repository when both create repositories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites (like authentication), when to use create_repository versus fork_repository, or any limitations (like rate limits or account restrictions).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fork_repositoryB
Fork a GitHub repository to your account or specified organization
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner (username or organization) | |
| repo | Yes | Repository name | |
| organization | No | Optional: organization to fork to (defaults to your personal account) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose behavioral traits like authentication requirements, rate limits, whether the fork inherits all branches/tags, what happens if the target organization lacks permissions, or what the response contains. For a mutation tool with zero annotation coverage, this is inadequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and includes essential scope information. Every word earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns, error conditions, or important behavioral constraints. Given the complexity of repository forking (permissions, inheritance, etc.), more context is needed beyond the basic action statement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema (e.g., no examples, format details, or edge cases). Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Fork') and resource ('a GitHub repository'), with precise scope ('to your account or specified organization'). It distinguishes from siblings like create_repository (which creates new repos) and other tools that modify existing repos rather than creating forks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying the target ('your account or specified organization'), but doesn't explicitly state when to use this vs alternatives like create_repository or when not to use it. No prerequisites or exclusions are mentioned, leaving some guidance gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_contentsC
Get the contents of a file or directory from a GitHub repository
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner (username or organization) | |
| repo | Yes | Repository name | |
| path | Yes | Path to the file or directory | |
| branch | No | Branch to get contents from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'Get the contents' implies a read operation, it doesn't specify whether this requires authentication, rate limits, what happens with large directories, or the format of returned content. For a tool with 4 parameters and no annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the core purpose without unnecessary words. It's appropriately sized for a straightforward tool and front-loads the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what 'contents' means (file content vs metadata), how directories are handled, error conditions, or return format. The description should provide more context given the lack of structured information elsewhere.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so all parameters are documented in the schema. The description adds no additional parameter semantics beyond what's already in the schema - it doesn't explain relationships between parameters or provide usage examples. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get the contents') and resource ('file or directory from a GitHub repository'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'search_code' or 'list_commits' that might also retrieve repository content in different ways.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There's no mention of when this tool is appropriate versus using 'search_code' for broader searches or 'list_commits' for commit history, nor any prerequisites or constraints for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_issueC
Get details of a specific issue in a GitHub repository.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | ||
| repo | Yes | ||
| issue_number | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the action ('Get details') but does not disclose behavioral traits like authentication needs, rate limits, error handling, or what details are returned. For a read operation with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, with every part earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 required parameters), lack of annotations, and no output schema, the description is incomplete. It does not explain return values, error cases, or usage context, making it inadequate for effective tool selection and invocation by an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema provides no parameter details. The description does not add any meaning beyond the parameter names (owner, repo, issue_number), such as explaining what these represent (e.g., GitHub username, repository name, issue ID) or their formats. It fails to compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get details') and resource ('specific issue in a GitHub repository'), making the purpose unambiguous. However, it does not explicitly differentiate from sibling tools like 'list_issues' or 'search_issues', which would require a more specific scope or distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'list_issues' for multiple issues or 'search_issues' for filtered searches. It lacks explicit context, prerequisites, or exclusions, leaving usage decisions to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_commitsC
Get list of commits of a branch in a GitHub repository
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | ||
| repo | Yes | ||
| sha | No | ||
| page | No | ||
| perPage | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but offers minimal information. It implies a read-only operation ('Get list'), but doesn't specify whether authentication is required, if there are rate limits, how pagination works (given the 'page' and 'perPage' parameters), or what the output format looks like. This is inadequate for a tool with multiple parameters and no structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero wasted words. It's front-loaded with the core purpose ('Get list of commits'), making it easy to scan and understand quickly. Every word earns its place, achieving optimal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (5 parameters, 0% schema coverage, no annotations, no output schema), the description is incomplete. It doesn't explain parameter meanings, behavioral traits like pagination or authentication, or what the output contains. For a tool that likely returns structured commit data, this leaves significant gaps for an AI agent to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, meaning none of the 5 parameters are documented in the schema. The description only vaguely references 'branch' (implied by 'sha' parameter) and 'GitHub repository' (implied by 'owner' and 'repo'), but doesn't explain what 'sha', 'page', or 'perPage' mean or how they affect the output. It adds minimal value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get list of commits') and the resource ('of a branch in a GitHub repository'), making the purpose immediately understandable. However, it doesn't explicitly differentiate this tool from potential sibling tools like 'search_code' or 'get_file_contents' that might also involve repository data, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., authentication needs), compare it to siblings like 'search_code' for finding specific commits, or indicate scenarios where it's preferred over other tools. This leaves the agent with minimal context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_issuesC
List issues in a GitHub repository with filtering options
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | ||
| repo | Yes | ||
| direction | No | ||
| labels | No | ||
| page | No | ||
| per_page | No | ||
| since | No | ||
| sort | No | ||
| state | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure but only states the basic action. It doesn't mention whether this is a read-only operation, if it requires authentication, how pagination works (despite 'page' and 'per_page' parameters), rate limits, or what the output format looks like. This leaves critical behavioral traits undocumented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('List issues in a GitHub repository') and adds essential context ('with filtering options') without any wasted words. It's appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain the return values, pagination behavior, authentication requirements, or how to interpret parameters like 'direction' or 'sort'. For a listing tool with rich filtering options, more context is needed to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate but only vaguely mentions 'filtering options' without explaining any of the 9 parameters. It doesn't clarify what 'owner', 'repo', or other parameters mean, their formats (e.g., 'since' as timestamp), or how filtering works with arrays like 'labels'. The description adds minimal value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('issues in a GitHub repository') with scope ('with filtering options'), making the purpose specific and understandable. However, it doesn't explicitly distinguish this tool from sibling tools like 'search_issues' or 'get_issue', which handle similar resources but with different approaches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'search_issues' or 'get_issue'. It mentions filtering options but doesn't specify scenarios where this listing approach is preferred over searching or retrieving individual issues, leaving the agent without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
push_files_contentA
Push multiple files with direct content to a GitHub repository in a single commit
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner (username or organization) | |
| repo | Yes | Repository name | |
| branch | Yes | Branch to push to (e.g., 'main' or 'master') | |
| files | Yes | Array of files to push with their content | |
| message | Yes | Commit message |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool performs a write operation ('push') but doesn't mention critical behavioral aspects: whether it overwrites existing files, requires authentication/permissions, handles errors, or has rate limits. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding how it behaves beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently communicates the core functionality without unnecessary words. It's front-loaded with the main action and includes all essential elements: what (push files with content), where (GitHub repository), and how (single commit). Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 5 parameters, 100% schema coverage, but no annotations or output schema, the description is minimally complete. It covers the basic purpose and scope but lacks behavioral details (overwrite behavior, error handling, authentication needs) and output information. Given the complexity of a GitHub file-push operation, more context would be helpful, though the schema handles parameter documentation adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are documented in the schema. The description adds minimal value beyond the schema by implying 'multiple files' (matching the 'files' array parameter) and 'single commit' (related to the 'message' parameter), but doesn't provide additional semantic context about parameter usage, constraints, or relationships. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('push multiple files with direct content'), the target resource ('to a GitHub repository'), and the operational scope ('in a single commit'). It distinguishes itself from sibling tools like 'push_files_from_path' by specifying 'direct content' rather than file paths, and from 'create_or_update_file' by handling multiple files in one commit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying 'multiple files with direct content' and 'single commit', suggesting it's for batch updates rather than individual file operations. However, it doesn't explicitly state when to use this tool versus alternatives like 'push_files_from_path' (which likely uses file system paths) or 'create_or_update_file' (which handles single files). The context is clear but lacks explicit comparison guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
push_files_from_pathA
Push multiple files from filesystem paths to a GitHub repository in a single commit
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner (username or organization) | |
| repo | Yes | Repository name | |
| branch | Yes | Branch to push to (e.g., 'main' or 'master') | |
| files | Yes | Array of files to push from filesystem paths | |
| message | Yes | Commit message |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the batch operation and single-commit behavior, which is useful. However, it lacks details on permissions required, error handling (e.g., if files don't exist), rate limits, or whether it overwrites existing files. For a mutation tool with zero annotation coverage, this leaves gaps in behavioral understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose with no wasted words. It clearly communicates the tool's function without redundancy or unnecessary elaboration, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 5 parameters and no annotations or output schema, the description is adequate but incomplete. It covers the basic operation but lacks details on behavioral aspects (e.g., side effects, error cases) and doesn't hint at return values. Given the complexity, more context would be beneficial for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 5 parameters clearly. The description adds minimal value beyond the schema by implying 'multiple files' and 'filesystem paths,' but doesn't explain parameter interactions (e.g., how 'files' array works) or provide examples. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('push multiple files'), resource ('from filesystem paths to a GitHub repository'), and scope ('in a single commit'). It distinguishes itself from sibling tools like 'push_files_content' (which likely pushes content directly rather than from filesystem paths) and 'create_or_update_file' (which handles individual files).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying 'multiple files from filesystem paths' and 'single commit,' suggesting it's for batch operations rather than individual file updates. However, it doesn't explicitly state when to use this tool versus alternatives like 'push_files_content' or 'create_or_update_file,' nor does it mention prerequisites (e.g., authentication, file existence).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_codeC
Search for code across GitHub repositories
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | ||
| order | No | ||
| page | No | ||
| per_page | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. The description only states what the tool does at a high level ('Search for code across GitHub repositories') without revealing any behavioral traits like authentication requirements, rate limits, pagination behavior, error conditions, or what the search results look like. For a search tool with zero annotation coverage, this is completely inadequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point. There's no wasted verbiage or unnecessary elaboration. It's appropriately sized for a basic tool description, though this conciseness comes at the cost of completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a search operation with 4 parameters, no annotations, and no output schema, the description is completely inadequate. It doesn't explain what the tool returns, how results are structured, authentication requirements, rate limits, or parameter usage. For a search tool that likely returns complex results, this minimal description leaves the agent with insufficient information to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides no information about parameters beyond what's implied by the tool name. With 0% schema description coverage and 4 parameters (q, order, page, per_page), the description doesn't explain what 'q' represents (search query syntax?), what 'order' sorts by, or how pagination works. The description fails to compensate for the complete lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Search for code') and resource ('across GitHub repositories'), which is specific and unambiguous. However, it doesn't differentiate this from sibling tools like search_issues, search_repositories, or search_users, which all perform different types of searches within GitHub.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There's no mention of when to choose search_code over other search tools (search_issues, search_repositories, search_users) or when to use it versus browsing tools like get_file_contents. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_issuesC
Search for issues and pull requests across GitHub repositories
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | ||
| order | No | ||
| page | No | ||
| per_page | No | ||
| sort | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action 'search' but doesn't describe what the search returns (e.g., paginated results, error handling, rate limits, or authentication needs). For a search tool with 5 parameters and no annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. It's appropriately sized for a search tool, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 5 parameters (including enums for 'order' and 'sort'), 0% schema description coverage, no annotations, and no output schema, the description is incomplete. It doesn't explain the search behavior, result format, or parameter usage, leaving critical gaps for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, meaning none of the 5 parameters are documented in the schema. The description doesn't add any parameter semantics—it doesn't explain what 'q' represents (e.g., search query syntax), the meaning of 'order', 'page', 'per_page', or 'sort' options. This fails to compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'search' and the resources 'issues and pull requests' with the scope 'across GitHub repositories', which is specific and actionable. However, it doesn't explicitly distinguish this tool from sibling tools like 'list_issues' or 'search_code', which would require more precise differentiation to achieve a score of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'list_issues' (for issues in a specific repository) or 'search_code' (for code search). There's no mention of prerequisites, context, or exclusions, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_repositoriesC
Search for GitHub repositories
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (see GitHub search syntax) | |
| page | No | Page number for pagination (default: 1) | |
| perPage | No | Number of results per page (default: 30, max: 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure but provides minimal information. It states this is a search operation but doesn't describe what the search returns (repository metadata, full objects?), authentication requirements, rate limits, error conditions, or whether this is a read-only operation. The agent must infer behavior from the name alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is maximally concise - a single clear sentence that states exactly what the tool does. There's zero wasted language, no redundancy, and it's perfectly front-loaded with the core functionality. Every word earns its place in this minimal description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what format results come in, what fields are returned, whether there are limitations on search scope, or how results are structured. The agent knows what to search for but not what to expect back or under what constraints the search operates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description adds no parameter information beyond what's in the schema - it doesn't explain search syntax examples, typical query patterns, or how results are ordered. The baseline of 3 is appropriate when the schema does all the parameter documentation work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Search for') and resource ('GitHub repositories'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling search tools like 'search_code', 'search_issues', or 'search_users' - all of which also search GitHub but for different resource types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when this tool is appropriate compared to other search tools (search_code, search_issues, search_users) or when to use it versus browsing repositories through other means. There's no indication of prerequisites, limitations, or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_usersC
Search for users on GitHub
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | ||
| order | No | ||
| page | No | ||
| per_page | No | ||
| sort | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 'Search for users' implies a read-only operation, but it doesn't disclose important behavioral traits like pagination behavior (implied by page/per_page parameters), rate limits, authentication requirements, or what the response format looks like. The description is minimal and lacks behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is maximally concise with a single clear sentence that states the core purpose. There's no wasted language or unnecessary elaboration, making it efficiently front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 5 parameters (one required), no annotations, no output schema, and 0% schema description coverage, the description is inadequate. It doesn't provide enough context about how to use the tool effectively, what parameters mean, or what to expect in return. The minimal description doesn't compensate for the missing structured information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage for 5 parameters, the description provides no parameter information beyond what's implied by the tool name. It doesn't explain what 'q' represents (search query), what the order/sort options mean, or how pagination works. The description fails to compensate for the complete lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Search for') and resource ('users on GitHub'), providing specific verb+resource pairing. However, it doesn't differentiate from sibling search tools like search_code, search_issues, and search_repositories, which all search different GitHub resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. The description doesn't mention when this search is appropriate versus other user-related operations or how it differs from the other search tools on the server (search_code, search_issues, search_repositories).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_issueC
Update an existing issue in a GitHub repository
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | ||
| repo | Yes | ||
| issue_number | Yes | ||
| title | No | ||
| body | No | ||
| assignees | No | ||
| milestone | No | ||
| labels | No | ||
| state | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. 'Update an existing issue' implies a mutation operation, but it doesn't specify what happens with partial updates, whether changes are reversible, authentication requirements, rate limits, or error conditions. For a 9-parameter mutation tool, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately front-loaded with the essential information, though this brevity comes at the cost of completeness for such a complex tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 9 parameters, 0% schema coverage, no annotations, and no output schema, the description is severely inadequate. It provides only the basic purpose without addressing parameter meanings, behavioral characteristics, usage context, or return values. The agent would struggle to use this tool correctly without additional documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and 9 parameters (only 3 required), the description provides no information about any parameters. It doesn't mention that 'owner', 'repo', and 'issue_number' are required identifiers, nor does it explain the purpose of optional fields like 'title', 'body', 'assignees', etc. The description fails to compensate for the complete lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update') and resource ('existing issue in a GitHub repository'), making the purpose immediately understandable. However, it doesn't differentiate this tool from similar siblings like 'create_issue' or 'get_issue' beyond the basic verb difference, missing an opportunity to clarify scope boundaries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'create_issue' for new issues and 'get_issue' for reading, the agent must infer usage from the verb alone. There's no mention of prerequisites, permissions needed, or typical scenarios for updating versus creating issues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
18 tool updates
- First observed
add_issue_comment - First observed
create_branch - First observed
create_issue - First observed
create_or_update_file - First observed
create_pull_request - First observed
create_repository - First observed
fork_repository - First observed
get_file_contents - First observed
get_issue - First observed
list_commits - First observed
list_issues - First observed
push_files_content - First observed
push_files_from_path - First observed
search_code - First observed
search_issues - First observed
search_repositories - First observed
search_users - First observed
update_issue
TDQS
Most tools have distinct purposes targeting specific GitHub resources and actions, but there is some overlap between push_files_content and push_files_from_path (both push multiple files, differing only in input source) and between list_issues and search_issues (both retrieve issues, differing in scope). Descriptions help clarify these distinctions, but agents might occasionally confuse them.
All tools follow a consistent verb_noun or verb_noun_preposition pattern (e.g., create_issue, get_file_contents, search_repositories), with no mixing of conventions like camelCase or snake_case variations. The naming is predictable and readable throughout the set.
With 18 tools, the count is slightly high but reasonable for a comprehensive GitHub server covering repositories, issues, files, search, and operations. It avoids being excessive (under 25) and each tool appears to serve a specific function, though some could be consolidated (e.g., the two push tools).
The tool set provides complete coverage for core GitHub workflows, including CRUD operations for repositories, issues, files, and branches, along with search across code, issues, repositories, and users. There are no obvious gaps; agents can perform end-to-end tasks like creating repos, managing issues, and pushing code without dead ends.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Create, deploy, and operate MCP servers directly from your GitHub repositories.
An MCP server that gives your AI access to the source code and docs of all public github repos
A MCP server built for developers enabling Git based project management with project and personal…
The official MCP Server for the Mux API
Related MCP Servers
- -licenseNot gradedqualityAmaintenanceMCP Server for the GitHub API, enabling file operations, repository management, search functionality, and more.117,29690,042MIT
- FlicenseNot gradedqualityCmaintenanceMCP server for the GitHub REST API that enables interaction with repositories, pull requests, issues, branches, commits, reviews, and code search, with configurable write and destructive operations.-
- FlicenseNot gradedqualityDmaintenanceStandalone MCP server for GitHub that enables repository management, branch operations, pull request handling, and commit retrieval via tools listed in the README.1-
- AlicenseBqualityDmaintenanceMCP (Model Context Protocol) server for GitHub API integration. This server provides comprehensive tools for interacting with GitHub repositories, issues, pull requests, branches, and code search through a unified interface.1514MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/PhialsBasement/mcp-github-server-plus'
If you have feedback or need assistance with the MCP directory API, please join our Discord server