Skip to main content
Glama
alsonwangkhem

GitHub MCP Server

GitHub MCP (Model Context Protocol) server

Hi! This is my first GitHub MCP server that allows MCP compatible LLMs like Claude to interact with my MCP server and hence with GitHub API.

Requirements

  • TypeScript (programming language)

  • Octokit (for making API requests to GitHub)

  • Model Context Protocol SDK

Setup the project locally

  1. Clone the repository

  2. Run npm install

  3. Add .env file looking at the sample provided in .env.example file

  4. To build the TypeScript files to Javascript, run npx tsc

  5. To finally run the project, run node build/index.js

Related MCP server: mcp-server-github

Ways to test

You can test your MCP server in 2 ways:

  • MCP inspector

  • Claude Desktop

Test using MCP inspector

  1. Simply run npx @modelcontextprotocol/inspector node build/index.js in the terminal

  2. Go to http://localhost:5173

  3. You can now see the MCP inspector and test.

Test using Claude Desktop

  1. Download and install Claude Desktop from here

  2. Go to File > Settings... > Developer > Edit Config

  3. It should open up the location of claude_desktop_config.json file.

  4. Open that file in your code editor and add the following:

     {
     "mcpServers": {
       "gh": {
         "command": "node",
         "args": ["absolute\\path\\to\\your\\index.js\\file"],
         "env": {
           "GITHUB_TOKEN": "your-github-personal-access-token"
         }
       }
     }
     }
  5. Exit and reopen Claude desktop

Functionalities

The MCP supports mainly two features:

  • Tools (4)

    • create-issue: create a new issue in a GitHub repository

    • get-repo-info: get information about a specific GitHub repository

    • list-issues: list issues in a GitHub repository

    • search-repos: Search for GitHub repositories

  • Prompts (5)

    • create-issue-description: generate a description for a GitHub issue

    • create-pull-request-description: generate a description for a GitHub pull request

    • search-repos-prompt: generate a query for searching GitHub repositories

    • create-issue-prompt: generate parameters for creating a GitHub issue

    • enhance-github-response: format and enhance raw GitHub API response data

You can write your own prompts or select a suitable prompt from the dropdown in the "Choose an integration" option for MCP in Claude desktop

Available Tools

4 tools
create-issueC

Create a new issue in a GitHub repository

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYesRepository owner (username or organization)
repoYesRepository name
titleYesIssue title
bodyYesIssue body
labelsNoLabels to apply to 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 full burden for behavioral disclosure. While 'Create' implies a write/mutation operation, it doesn't disclose authentication requirements, rate limits, error conditions, or what happens on success (e.g., returns issue ID). For a mutation tool with zero annotation coverage, this is a significant gap.

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 purpose without unnecessary words. It's appropriately sized for a tool with good schema documentation and gets straight 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 mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after creation (return values), authentication needs, error handling, or constraints. Given the complexity of creating GitHub issues, more context would be helpful.

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 well-documented in the schema itself. The description adds no additional parameter information beyond what's already in the structured schema, so it meets the baseline expectation but doesn't provide extra value.

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 a new issue') and target resource ('in a GitHub repository'), which is specific and unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'list-issues' or 'search-repos' beyond the obvious create vs. read distinction.

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, repository access), when not to use it, or how it differs from similar operations in sibling tools beyond the basic verb difference.

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

get-repo-infoC

Get information about a specific GitHub repository

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

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 'Get information' implies a read-only operation, it doesn't specify authentication requirements, rate limits, what specific information is returned, error conditions, or whether this is a lightweight vs comprehensive repository query. The description is too minimal for a 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 extremely concise - a single sentence that directly states the tool's purpose. There's zero wasted language, and the information is front-loaded. 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.

Completeness2/5

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

Given that there are no annotations and no output schema, the description is insufficiently complete. For a tool that presumably returns repository information (name, description, stars, forks, etc.), the description should at least hint at what information is returned. The current description leaves too much unspecified about the tool's behavior and output.

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 both parameters ('owner' and 'repo') well-documented in the schema. The description doesn't add any parameter semantics beyond what the schema already provides. According to the scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no parameter information in the description.

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 tool's purpose with a specific verb ('Get information') and resource ('about a specific GitHub repository'), making it immediately understandable. However, it doesn't distinguish this tool from potential sibling tools like 'search-repos' or 'list-issues' that might also provide repository information in different contexts.

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 when this tool is appropriate compared to 'search-repos' (which might return multiple repositories) or 'list-issues' (which focuses on issues rather than repository metadata). There are no explicit when/when-not instructions or alternative recommendations.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYesRepository owner (username or organization)
repoYesRepository name
stateNoIssue state
limitNoMaximum number of issues to return

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 action ('List issues') but doesn't mention critical behaviors like whether this is a read-only operation, if it requires authentication, rate limits, pagination details, or what the output format looks like. This leaves significant gaps for an agent to understand how to use it effectively.

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, clear sentence with no wasted words. It's front-loaded with the core action and resource, making it highly efficient 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?

Given the complexity of a GitHub API tool with 4 parameters, no annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects like authentication needs, rate limits, or output structure, which are crucial for an agent to invoke this tool correctly in a real-world 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 schema description coverage is 100%, meaning all parameters are documented in the input schema. The description adds no additional meaning beyond what's already in the schema (e.g., it doesn't explain parameter interactions or provide 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.

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 in a GitHub repository'), making the tool's purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'search-repos' or 'get-repo-info', which might also involve repository data retrieval, so it doesn't reach the highest score.

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 'search-repos' or 'create-issue'. It lacks any context about prerequisites, such as needing repository access, or when this tool is preferred over others for issue retrieval.

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

search-reposC

Search for GitHub repositories

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query
sortNoSort order
limitNoMaximum number of results to return

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 but provides minimal information. It mentions 'search' but doesn't disclose rate limits, authentication requirements, result format, pagination behavior, or what happens when no results are found. For a search 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 extremely concise at just four words, with zero wasted language. It's front-loaded with the essential purpose and doesn't include any unnecessary information. 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.

Completeness2/5

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

For a search tool with 3 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't explain what the tool returns (repository objects? just names?), doesn't mention authentication needs, rate limits, or error conditions. The combination of missing behavioral context and lack of output information creates significant gaps.

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 has 100% description coverage, with all parameters well-documented in the schema itself. The description adds no additional parameter information beyond what's already in the schema - it doesn't explain search syntax, default values, or provide examples. The baseline of 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 'Search for GitHub repositories' clearly states the verb ('Search') and resource ('GitHub repositories'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get-repo-info' or 'list-issues' - it doesn't specify this is for finding repositories by search criteria rather than retrieving specific repository details or listing issues.

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 when to use search-repos instead of get-repo-info (for specific repository details) or list-issues (for repository issues), nor does it provide any context about 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 4 tool updates
    • First observedcreate-issue
    • First observedget-repo-info
    • First observedlist-issues
    • First observedsearch-repos

TDQS

B3.1/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: create-issue handles issue creation, get-repo-info retrieves repository details, list-issues lists existing issues, and search-repos searches for repositories. There is no overlap in functionality, making tool selection straightforward for an agent.

Naming Consistency4/5

The tools follow a consistent verb-noun pattern with hyphens (e.g., create-issue, get-repo-info), which is predictable and readable. However, there is a minor deviation in 'get-repo-info' where 'info' is appended, slightly breaking the pure verb-noun convention compared to others like 'list-issues'.

Tool Count3/5

With only 4 tools, the set feels thin for a GitHub server, lacking common operations like updating/deleting issues, managing pull requests, or accessing repository contents. While the tools cover basic functions, the count is borderline low for the broad scope of GitHub interactions.

Completeness2/5

There are significant gaps in the tool surface for a GitHub domain. Missing operations include update_issue, delete_issue, create_pull_request, get_pull_request, and repository management actions (e.g., create_repo, update_repo). This incomplete coverage will likely cause agent failures when trying to perform common GitHub workflows.

Maintenance

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    An MCP server that enables Claude and other compatible LLMs to interact with the GitHub API, supporting features like creating issues, retrieving repository information, listing issues, and searching repositories.
    4
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    A working MCP server that connects to the real GitHub API, enabling users to manage repositories, issues, pull requests, and more through natural language in Claude Desktop.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides tools for interacting with the GitHub API, enabling AI assistants to query repositories, pull requests, issues, commits, users, and more.
    467
    ISC

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

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