Skip to main content
Glama
pipseedai

GitHub MCP Server

by pipseedai

GitHub MCP Server

Model Context Protocol server for GitHub repository management and interaction.

Overview

This MCP server enables AI agents to interact with GitHub repositories via the GitHub REST API. Built with TypeScript using the official MCP SDK and Octokit.

Version: 0.3.0 (Phase 3 In Progress)
Author: Pip (@pipseedai)
License: MIT

Features

Phase 1: Read Operations βœ…

  • github_list_repos - List repositories for a user or organization

  • github_get_repo - Get detailed repository information

  • github_get_file - Read file contents from a repository

  • github_list_issues - List repository issues with filters

  • github_search_code - Search code across GitHub repositories

Phase 2: Write Operations βœ…

  • github_create_repo - Create a new repository

  • github_create_issue - Create an issue with title, body, labels, assignees

  • github_update_issue - Update issue (title, body, state, labels, assignees)

  • github_create_comment - Add comments to issues or pull requests

Phase 3: Webhook Monitoring 🚧

Real-time GitHub event monitoring with Discord notifications.

Components:

  • βœ… Phase 3.1: HTTP server with SSE transport for MCP tools

  • βœ… Phase 3.2: Webhook signature verification (HMAC SHA-256)

  • βœ… Phase 3.3: Discord delivery via webhooks

  • πŸ”² Phase 3.4: Production deployment and GitHub webhook configuration

Supported Events:

  • Issues (opened, closed, reopened)

  • Pull requests (opened, closed, merged)

  • Releases (published, created)

  • Stars, watches, forks

  • Commits, branches, tags

Event Filtering: Automatically filters noisy events (individual watch/unwatch, repetitive actions)

Phase 4: Advanced Features (Future)

  • Pull request creation and management

  • Branch and commit operations

  • Repository forking and starring

  • Workflow management

Installation

cd ~/.openclaw/workspace/mcp-servers/github
npm install
npm run build

Configuration

Authentication

Requires a GitHub Personal Access Token stored in ~/.openclaw/secrets/github.env:

GITHUB_TOKEN=ghp_your_token_here

Webhook Server (Phase 3)

For real-time GitHub event monitoring, configure webhook secrets and Discord delivery in ~/.openclaw/secrets/github.env:

# Required: GitHub webhook secret (set when creating webhook)
GITHUB_WEBHOOK_SECRET=your_webhook_secret_here

# Required: Discord webhook URL for notifications
DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/...

# Optional: HTTP server port (default: 9999)
PORT=9999

Start the HTTP server:

source ~/.openclaw/secrets/github.env
npm run build
node dist/server-http.js

Endpoints:

  • GET /health - Server health check

  • GET /sse - MCP SSE transport (tools still available)

  • POST /webhooks/github - GitHub webhook receiver

GitHub Webhook Configuration:

  1. Go to repository Settings β†’ Webhooks β†’ Add webhook

  2. Payload URL: https://your-domain.com/webhooks/github

  3. Content type: application/json

  4. Secret: Same as GITHUB_WEBHOOK_SECRET

  5. Events: Choose events to monitor (or "Send me everything")

Usage

Via mcporter CLI

Note: Make sure GITHUB_TOKEN is set in your environment before running these commands.

export GITHUB_TOKEN=ghp_your_token_here
# List repositories for authenticated user
npx mcporter call --stdio "./path/to/github-mcp/dist/index.js" \
  'github.github_list_repos()'

# Get repository information
npx mcporter call --stdio "./path/to/github-mcp/dist/index.js" \
  'github.github_get_repo(owner: "modelcontextprotocol", repo: "servers")'

# Read file contents
npx mcporter call --stdio "./path/to/github-mcp/dist/index.js" \
  'github.github_get_file(owner: "owner", repo: "repo", path: "README.md")'

# List repository issues
npx mcporter call --stdio "./path/to/github-mcp/dist/index.js" \
  'github.github_list_issues(owner: "owner", repo: "repo", state: "open")'

# Search code
npx mcporter call --stdio "./path/to/github-mcp/dist/index.js" \
  'github.github_search_code(query: "addClass in:file language:js")'

Available Tools

github_list_repos

List repositories for a user or organization.

Parameters:

  • username (optional) - GitHub username/org (defaults to authenticated user)

  • type (optional) - Filter: "all", "owner", "member" (default: "owner")

  • sort (optional) - Sort by: "created", "updated", "pushed", "full_name" (default: "updated")

  • per_page (optional) - Results per page (default: 30, max: 100)

github_get_repo

Get detailed information about a repository.

Parameters:

  • owner (required) - Repository owner

  • repo (required) - Repository name

Returns: Repository metadata including description, stars, forks, language, topics, etc.

github_get_file

Read file contents from a repository.

Parameters:

  • owner (required) - Repository owner

  • repo (required) - Repository name

  • path (required) - File path in repository

  • ref (optional) - Branch, tag, or commit SHA (default: default branch)

Returns: Decoded file content as text

github_list_issues

List issues for a repository.

Parameters:

  • owner (required) - Repository owner

  • repo (required) - Repository name

  • state (optional) - "open", "closed", "all" (default: "open")

  • labels (optional) - Comma-separated label names

  • per_page (optional) - Results per page (default: 30, max: 100)

github_search_code

Search for code across GitHub repositories.

Parameters:

  • query (required) - Search query (supports GitHub search syntax)

  • per_page (optional) - Results per page (default: 30, max: 100)

Example queries:

  • "addClass in:file language:js repo:owner/repo"

  • "function user:pipseedai"

  • "TODO extension:md"

github_create_repo

Create a new GitHub repository.

Parameters:

  • name (required) - Repository name

  • description (optional) - Repository description

  • private (optional) - Private repository (default: false)

  • auto_init (optional) - Initialize with README (default: false)

github_create_issue

Create a new issue in a repository.

Parameters:

  • owner (required) - Repository owner

  • repo (required) - Repository name

  • title (required) - Issue title

  • body (optional) - Issue description (supports Markdown)

  • labels (optional) - Array of label names

  • assignees (optional) - Array of GitHub usernames

  • milestone (optional) - Milestone number

github_update_issue

Update an existing issue.

Parameters:

  • owner (required) - Repository owner

  • repo (required) - Repository name

  • issue_number (required) - Issue number

  • title (optional) - New title

  • body (optional) - New description

  • state (optional) - "open" or "closed"

  • labels (optional) - Array of label names (replaces existing)

  • assignees (optional) - Array of usernames (replaces existing)

github_create_comment

Add a comment to an issue or pull request.

Parameters:

  • owner (required) - Repository owner

  • repo (required) - Repository name

  • issue_number (required) - Issue or PR number

  • body (required) - Comment text (supports Markdown)

Rate Limits

  • Authenticated: 5,000 requests/hour

  • Search: 30 requests/minute

  • Errors (403/429) are caught and returned gracefully

Development

# Build
npm run build

# Watch mode
npm run watch

File Structure

mcp-servers/github/
β”œβ”€β”€ package.json
β”œβ”€β”€ tsconfig.json
β”œβ”€β”€ README.md
β”œβ”€β”€ src/
β”‚   └── index.ts          # Main server implementation
└── dist/                 # Compiled JavaScript
    β”œβ”€β”€ index.js
    └── index.d.ts

Testing

Phase 1 (Read Operations):

  • βœ… Authentication with GitHub PAT

  • βœ… List repositories

  • βœ… Get repository details (tested on modelcontextprotocol/servers)

  • βœ… Read file contents (tested on README.md)

  • βœ… List issues with filters

  • βœ… Search code across repositories

Phase 2 (Write Operations):

  • βœ… Create repository (tested on pipseedai/mcp-test)

  • βœ… Create issues with labels

  • βœ… Update issue title, body, state, labels

  • βœ… Add comments to issues

Validation: All tools tested on https://github.com/pipseedai/mcp-test

Next Steps

  • Add Phase 3 advanced features (PRs, branches, commits, forks)

  • Add unit tests

  • Improve error handling and validation

  • Add response caching for frequently accessed data

  • Consider GraphQL API for complex queries

  • Add workflow and release management tools

References


Created: 2026-02-03
Last Updated: 2026-02-05
Repository: https://github.com/pipseedai/github-mcp

Available Tools

9 tools
github_create_commentC

Add a comment to an issue or pull request

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYesRepository owner
repoYesRepository name
issue_numberYesIssue or pull request number
bodyYesComment body (markdown supported)

TDQS

C2.9/5.0
Behavior2/5

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 'Add a comment' implies a write operation, it doesn't specify authentication requirements, rate limits, whether comments are editable/deletable, or what happens on success/failure. For a mutation tool 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states the core functionality without any wasted words. It's appropriately sized and front-loaded with the essential information, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a mutation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't address authentication needs, error conditions, response format, or how it differs from similar sibling tools. The 100% schema coverage helps with parameters, but other critical contextual information is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 four parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema (like explaining the relationship between owner/repo/issue_number or body formatting). 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.

Purpose4/5

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 issue or pull request'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like github_update_issue, which might also involve commenting, so it doesn't reach the highest score for sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 github_update_issue for issue modifications or other commenting methods. It lacks any context about prerequisites, permissions needed, or specific scenarios where this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_create_issueC

Create a new issue in a repository

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYesRepository owner
repoYesRepository name
titleYesIssue title
bodyNoIssue body (markdown supported)
labelsNoLabels to add to the issue
assigneesNoUsernames to assign to the issue
milestoneNoMilestone number to associate with the issue

TDQS

C2.9/5.0
Behavior2/5

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 creates an issue but doesn't mention what permissions are needed, whether it's idempotent, what happens on failure, rate limits, or what the response looks like. For a mutation tool with zero annotation coverage, 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.

Conciseness5/5

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 any wasted words. It's front-loaded with the core action ('Create a new issue') and specifies the context ('in a repository'), making it immediately clear and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 explain the return value, error conditions, authentication needs, or how it differs from sibling tools like github_update_issue. The high parameter count and lack of structured metadata mean the description should provide more contextual information to be complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all 7 parameters well-documented in the schema (e.g., 'Issue title', 'Issue body (markdown supported)'). The description adds no parameter information beyond what the schema provides, so it doesn't enhance parameter understanding. However, since the schema fully covers parameters, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Create') and resource ('new issue in a repository'), making the purpose immediately understandable. It distinguishes this tool from siblings like github_create_comment or github_create_repo by specifying 'issue' rather than other GitHub entities. However, it doesn't explicitly contrast with github_update_issue, which handles modifications rather than creation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 github_update_issue for modifying existing issues, github_list_issues for viewing issues, or github_create_comment for adding comments. There's also no information about prerequisites like repository access or authentication requirements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_create_repoC

Create a new repository for the authenticated user

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesRepository name
descriptionNoRepository description
privateNoWhether the repository is private (default: false)
auto_initNoInitialize with README (default: false)

TDQS

C2.9/5.0
Behavior2/5

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 creates a repository but doesn't mention critical behaviors like authentication requirements (implied by 'authenticated user' but not explicit), potential side effects (e.g., initializing files if auto_init is true), rate limits, error conditions, or what the response contains. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding how it behaves.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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 any fluff or redundancy. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place, and there's no wasted verbiage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of creating a repository (a mutation operation) with no annotations and no output schema, the description is insufficiently complete. It doesn't cover behavioral aspects like authentication needs, error handling, or response format, nor does it provide usage guidance relative to siblings. For a tool that modifies state and has multiple parameters, more context is needed to ensure safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with all parameters clearly documented in the schema itself. The description adds no additional parameter information beyond what the schema provides (e.g., it doesn't explain naming conventions, privacy implications, or auto_init details). According to the rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in the description, which applies here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 repository for the authenticated user'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like github_create_comment or github_create_issue, which also create resources but of different types. The description is specific about what gets created but doesn't contrast with other creation tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 status), when not to use it (e.g., for existing repositories), or direct alternatives like github_get_repo for retrieval. The context is implied (creating a repo) but lacks explicit usage boundaries or comparisons with sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_get_fileC

Read file contents from a repository

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYesRepository owner
repoYesRepository name
pathYesFile path in the repository
refNoBranch, tag, or commit SHA (default: default branch)

TDQS

C2.9/5.0
Behavior2/5

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 'Read' implies a non-destructive operation, it doesn't mention authentication requirements, rate limits, error conditions (e.g., file not found), or response format. For a tool 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that communicates the core functionality without unnecessary words. It's appropriately sized for a straightforward read operation and gets directly to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 insufficient. It doesn't explain what format the file contents are returned in (raw text, encoded, etc.), doesn't mention authentication or rate limiting, and provides no guidance on error handling. The minimal description leaves too many contextual questions unanswered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with all parameters clearly documented in the schema itself. The description adds no additional parameter information beyond what's already in the structured fields, so it meets but doesn't exceed 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Read file contents') and resource ('from a repository'), making the purpose immediately understandable. However, it doesn't distinguish this tool from potential siblings like 'github_search_code' or 'github_get_repo' 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.

Usage Guidelines2/5

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 'github_search_code' (for searching across files) and 'github_get_repo' (for repository metadata), there's no indication of when file content retrieval is preferred over other repository access methods.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_get_repoB

Get detailed information about a specific repository

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYesRepository owner (username or organization)
repoYesRepository name

TDQS

B3.1/5.0
Behavior2/5

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 tool 'gets' information, implying a read-only operation, but doesn't clarify aspects like authentication requirements, rate limits, error handling, or the format of the returned data. This leaves significant gaps for an AI agent to understand how to invoke it correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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 front-loaded and appropriately sized, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (2 simple parameters) and high schema coverage, the description is minimally adequate. However, with no annotations and no output schema, it lacks details on behavioral traits and return values, which could hinder an AI agent's ability to use it effectively in context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with clear documentation for both parameters ('owner' and 'repo'). The description doesn't add any meaning beyond what the schema provides, such as examples or constraints, but since the schema is comprehensive, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('detailed information about a specific repository'), making the purpose understandable. However, it doesn't distinguish this from sibling tools like 'github_get_file' or 'github_list_repos', which also retrieve repository-related information but with different scopes or formats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. For example, it doesn't explain that this is for fetching metadata about a single repository, as opposed to 'github_list_repos' for multiple repositories or 'github_get_file' for file contents. There are no explicit when/when-not instructions or prerequisites mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_list_issuesC

List issues for a repository

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYesRepository owner
repoYesRepository name
stateNoIssue state filter (default: open)
labelsNoComma-separated list of label names
per_pageNoResults per page (default: 30, max: 100)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions listing but doesn't disclose behavioral traits like pagination behavior (implied by 'per_page' parameter but not explained), rate limits, authentication requirements, or whether this is a read-only operation. For a tool with 5 parameters and no 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.

Conciseness5/5

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 straightforward listing operation and gets directly to the point without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what the tool returns (issue objects? just titles?), how pagination works beyond the 'per_page' parameter, or error conditions. For a GitHub API tool with multiple siblings, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 parameters thoroughly. The description adds no additional meaning beyond what's in the schema (e.g., no context about how 'labels' filtering works or typical use cases for 'state'). 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.

Purpose4/5

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 for a repository', making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'github_search_code' or 'github_list_repos', which would require more specificity about scope or filtering capabilities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 'github_search_code' and 'github_update_issue', there's no indication of whether this is for basic listing versus more advanced operations, or any prerequisites for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_list_reposC

List repositories for a user or organization

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameNoGitHub username or organization name (defaults to authenticated user)
typeNoRepository type filter (default: owner)
sortNoSort order (default: updated)
per_pageNoResults per page (default: 30, max: 100)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but lacks behavioral details. It doesn't disclose that this is a read-only operation (implied by 'List'), potential rate limits, authentication requirements, pagination behavior (beyond per_page in schema), or what the output looks like (e.g., list of repo objects). It adds minimal context 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.

Conciseness5/5

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 repositories') without unnecessary words. Every part earns its place, making it easy to scan and understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 parameters, no annotations, and no output schema, the description is incomplete. It doesn't cover authentication needs, rate limits, pagination beyond per_page, error handling, or output format. For a tool with moderate complexity and no structured safety hints, this leaves significant gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, providing full parameter documentation. The description adds no parameter-specific semantics beyond implying a target (user/organization) for the 'username' parameter. It doesn't explain interactions between parameters or usage nuances, so it 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List') and resource ('repositories'), specifying it's for a user or organization. It distinguishes from siblings like github_get_repo (which gets a single repo) and github_search_code (which searches code content), but doesn't explicitly differentiate from all siblings like github_list_issues (which lists issues, not repos).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., authentication), compare with github_search_code for broader searches, or explain when to use type filters. The description is purely functional without context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_search_codeC

Search for code across GitHub repositories

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query (e.g., 'addClass in:file language:js repo:owner/repo')
per_pageNoResults per page (default: 30, max: 100)

TDQS

C2.9/5.0
Behavior2/5

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 key traits like whether this is a read-only operation, rate limits, authentication requirements, or what the response format looks like (e.g., pagination, error handling). This is a significant gap for a search tool with no 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.

Conciseness5/5

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 any fluff. It's appropriately sized and front-loaded, making it easy to parse quickly. Every word earns its place, with zero waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a code search tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits (e.g., rate limits, auth), response format, and usage context relative to siblings. While the schema covers parameters well, the overall description doesn't provide enough context for effective agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 both parameters ('query' and 'per_page') with clear descriptions and constraints. The description adds no additional meaning beyond what the schema provides, such as query syntax examples or usage tips. 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Search') and resource ('code across GitHub repositories'), making the purpose immediately understandable. It doesn't explicitly differentiate from siblings like 'github_get_file' (which retrieves specific files) or 'github_list_repos' (which lists repositories), but the focus on code search is clear enough to avoid confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. For example, it doesn't clarify if this is for broad code searches versus using 'github_get_file' for specific file retrieval or 'github_list_repos' for repository discovery. No exclusions or prerequisites are mentioned, leaving usage context ambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_update_issueC

Update an existing issue

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYesRepository owner
repoYesRepository name
issue_numberYesIssue number
titleNoNew issue title
bodyNoNew issue body
stateNoIssue state
labelsNoLabels (replaces existing)
assigneesNoAssignees (replaces existing)

TDQS

C2.9/5.0
Behavior2/5

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 such as required permissions (e.g., write access to the repo), whether updates are partial or full (e.g., 'labels' and 'assignees' replace existing as per schema, but description doesn't highlight this), rate limits, or error handling. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasteβ€”'Update an existing issue' is front-loaded and directly conveys the core purpose without unnecessary elaboration. 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.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (8 parameters, mutation operation) and lack of annotations and output schema, the description is incomplete. It doesn't address key aspects like what fields can be updated, how partial updates work, authentication needs, or expected return values, leaving significant gaps for an AI agent to understand the tool's behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 8 parameters, including their types, descriptions, and constraints (e.g., 'state' enum). The description adds no additional meaning beyond the schema, such as explaining parameter interactions or usage examples. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Update an existing issue' clearly states the action (update) and resource (issue), which is specific and unambiguous. However, it doesn't differentiate from sibling tools like 'github_create_issue' or 'github_create_comment' beyond the basic verb, missing explicit distinction about modifying versus creating resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention using 'github_create_issue' for new issues or 'github_list_issues' to find issue numbers, nor does it specify prerequisites like needing an existing issue number. This leaves the agent without context for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.5/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose targeting specific GitHub resources and actions, with no overlap in functionality. The descriptions clearly differentiate between operations like creating vs. listing, and between different resource types like repos, issues, files, and code search.

Naming Consistency5/5

All tools follow a perfect 'github_verb_noun' pattern with consistent snake_case throughout. The naming convention is predictable and readable, making it easy to understand each tool's function at a glance.

Tool Count5/5

With 9 tools, this server is well-scoped for GitHub operations, covering core repository, issue, file, and search functionality. Each tool earns its place without bloat, providing a focused yet comprehensive surface for common GitHub workflows.

Completeness4/5

The toolset covers most essential GitHub operations including repository CRUD (create/list/get), issue lifecycle (create/list/update), file reading, and code search. Minor gaps exist such as missing pull request operations, issue commenting (though create_comment covers this), and repository update/delete, but core workflows are well-supported.

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

Latest Blog Posts

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/pipseedai/github-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server