Skip to main content
Glama
ibmkevin

github-mcp-server

by ibmkevin

github-mcp-server

A lightweight Model Context Protocol (MCP) server that exposes three GitHub utility tools to AI agents (such as IBM Bob).

Tools

Tool

Description

search_repositories

Search GitHub repos by keyword — returns name, description, URL, stars, forks, language

list_issues

List issues for any public (or accessible private) repo — filter by state and labels

read_file_contents

Read the raw text of any file in a repo — specify an optional branch/tag/commit ref

Related MCP server: mcp-github-server

Requirements

Installation

git clone https://github.com/kevinshim/github-mcp-server.git
cd github-mcp-server
npm install
npm run build

Usage

Start the server manually (for testing):

GITHUB_TOKEN=ghp_your_token node build/index.js

Register with IBM Bob

Add the following to your Bob mcp.json (global: ~/.bob/mcp.json, or workspace: .bob/mcp.json):

{
  "mcpServers": {
    "github-mcp-server": {
      "command": "node",
      "args": ["/absolute/path/to/github-mcp-server/build/index.js"],
      "env": {
        "GITHUB_TOKEN": "ghp_your_token_here"
      }
    }
  }
}

Replace /absolute/path/to/github-mcp-server with the actual path on your machine.

Example prompts (inside Bob)

Search for TypeScript MCP server repositories with more than 100 stars.

List the open bug issues in IBM/galaxium-travels.

Read the contents of src/index.ts from my-org/my-repo on branch main.

Project structure

github-mcp-server/
├── src/
│   └── index.ts        # Server implementation
├── build/              # Compiled output (generated by npm run build)
├── package.json
├── tsconfig.json
└── README.md

License

MIT

Available Tools

3 tools
list_issuesA

List issues for a GitHub repository. Returns issue number, title, state, labels, author, and URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name
ownerYesRepository owner (user or organisation)
stateNoFilter by state: open | closed | allopen
labelsNoComma-separated label names to filter by (e.g. 'bug,help wanted')
per_pageNoNumber of issues to return (1–50, default 20)

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It describes the return data but does not disclose side effects, permissions, or limitations such as read-only nature or rate limits.

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 concise and to the point, with no redundant information.

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

Completeness4/5

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

The description covers the main purpose and return fields, but lacks details like pagination or sorting options. However, for a simple listing tool, it is sufficiently complete.

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

Parameters5/5

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

All parameters have clear descriptions, including enums, defaults, and ranges. The schema provides comprehensive parameter semantics.

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

Purpose5/5

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

The description clearly states the action (list), the resource (issues for a GitHub repository), and the return fields. It is distinct from sibling tools like search_repositories and read_file_contents.

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

Usage Guidelines3/5

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

The description does not explicitly mention when to use this tool instead of alternatives. It is implied but not stated, so guidance is limited.

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

read_file_contentsA

Read the raw text contents of a file from a GitHub repository. Returns the decoded file content.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoBranch, tag, or commit SHA to read from (defaults to the repo's default branch)
pathYesPath to the file within the repository (e.g. 'src/index.ts')
repoYesRepository name
ownerYesRepository owner (user or organisation)

TDQS

A3.8/5.0
Behavior3/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. It discloses the core behavior (read and decode) but does not mention potential edge cases like missing files, encoding specifics, or authentication requirements. For a simple read operation, this is acceptable but could be more informative.

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 sentence, concise and to the point, with no wasted words. It front-loads the action and resource, making it easy to scan.

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

Completeness4/5

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

For a simple read tool with full schema coverage and no output schema, the description adequately conveys the return value (decoded file content). It does not explain error behavior or limitations, but for the intended use, it is sufficient.

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 already documented in the schema. The tool description does not add any extra semantic meaning to the parameters, so the baseline of 3 applies.

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

Purpose5/5

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

The description clearly states the action ('Read the raw text contents of a file') and the resource ('from a GitHub repository'), distinguishing it from the sibling tools (search_repositories, list_issues) which serve different purposes. The verb and object are specific and unambiguous.

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

Usage Guidelines3/5

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

The description implies usage: when you need file contents, use this tool. However, it does not explicitly mention when not to use it or name alternatives. Since the siblings are clearly different, the guidance is adequate but not explicit.

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

search_repositoriesB

Search GitHub repositories by keyword. Returns repo name, description, URL, stars, forks, and primary language.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort order: stars | forks | updated | best-matchbest-match
queryYesSearch keywords (e.g. 'react typescript hooks')
per_pageNoNumber of results to return (1–30, default 10)

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for disclosing behavior. It mentions the return fields but does not describe side effects, rate limits, pagination behavior, or any edge cases. This lack of behavioral detail 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 extremely concise and front-loaded, with the primary action and resource stated in the first sentence. It avoids unnecessary wording and directly addresses the tool's core functionality.

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?

The description lists the returned fields (repo name, description, URL, stars, forks, primary language), giving some context about the output. However, it omits details like default sort order, pagination limits, or any caveats. Given the simplicity of the tool, this is adequate but not comprehensive.

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 coverage is 100%, so the baseline is 3. The description adds minimal semantics by mentioning 'keyword' for the query parameter, but it does not clarify the meaning or interaction of sort and per_page beyond the schema's own descriptions. Thus, no additional value is provided.

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

Purpose5/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: searching GitHub repositories by keyword. It identifies the specific resource (repositories) and the action (search), making it easy to distinguish from other 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?

No guidance is provided on when to use this tool versus alternatives like list_issues or read_file_contents. There is no mention of appropriate scenarios, prerequisites, or exclusions, leaving the agent to infer usage context.

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.

  1. 3 tool updatesv0.1.0
    • First observedlist_issues
    • First observedread_file_contents
    • First observedsearch_repositories

TDQS

A3.6/5.0

Scored across 3 tools

Disambiguation5/5

Each tool targets a clearly different resource and action: searching repositories, listing issues, and reading file contents. There is no meaningful overlap between them.

Naming Consistency5/5

All tool names follow the same lowercase snake_case verb_noun pattern: search_repositories, list_issues, read_file_contents. The convention is consistent and predictable.

Tool Count3/5

Three tools is on the low end for a server named github-mcp-server. While the set is focused and each tool earns its place, the name implies a broader GitHub surface than three read-only operations.

Completeness2/5

The server lacks many core GitHub operations such as getting a single repository, creating or updating issues, listing pull requests, or exploring file paths before reading them. Agents would frequently hit dead ends, especially after searching for a repo or listing issues.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    MCP (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.
    15
    5 npm
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server for GitHub operations, providing tools for repository management, issues, pull requests, and code search.
    -