1. Conduid
  2. Developer Tools
  3. Github Integration
MCP server · Developer Tools

Github Integration

A TypeScript package for interacting with the GitHub API through an MCP (Model Context Protocol) server integration.

57Fair

Scored 2 days ago · breakdown

About Github Integration

Github Integration is an MCP server published by onamfc in the Developer Tools category: a TypeScript package for interacting with the GitHub API through an MCP (Model Context Protocol) server integration.

The repository has 5 stars and 1 forks, with the last commit 11 months ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.

Install

From source
git clone https://github.com/onamfc/mcp-github-integration

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

✦

Ask AI about Github Integration

Powered by Claude · Grounded in docs

I know everything about Github Integration. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

  • ✓README presentThe repository ships documentation.
  • ✓License declaredUsable under a stated license.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

3 checks have not been run yet.

Releases

v1.0.0v1.0.0 - Initial Release · 20 Nov 2025GitHub MCP API Client I am excited to announce the first stable release of the GitHub MCP API Client - a TypeScript package for interacting with the GitHub API through Model Context Protocol (MCP) server integration. Highlights This…

README

GitHub MCP API Client

A TypeScript package for interacting with the GitHub API through an MCP (Model Context Protocol) server integration.

Features

  • Full TypeScript support with type definitions
  • 129 MCP tools covering all major GitHub API operations:
    • Repository management (create, update, delete, search, settings, administration)
    • Issue tracking (create, update, close, comments, search)
    • Pull request management (create, merge, review, comments)
    • Branch operations (create, delete, list, protect)
    • Commit operations (list, get, compare)
    • Release management (create, update, delete, assets)
    • Content operations (read, write, delete files)
    • GitHub Actions (workflows, runs, artifacts)
    • Webhooks (create, update, delete, deliveries, redelivery)
    • Collaborators and teams (add, remove, permissions)
    • Repository statistics and insights
    • Security settings (Dependabot, vulnerability alerts)
    • Advanced search across repositories, issues, PRs, code, commits, users, topics, and labels
  • Built-in logging with @onamfc/developer-log
  • Package inspection with @onamfc/pkg-inspect
  • Robust error handling

Installation

From NPM

npm install @onamfc/mcp-github-integration

From Source

git clone https://github.com/onamfc/mcp-github-integration.git
cd mcp-github-integration
npm install
npm run build

Configuration

Set your GitHub personal access token as an environment variable:

export GITHUB_TOKEN=your_github_token_here

Usage

Using the MCP Server

import { MCPServer } from '@onamfc/mcp-github-integration';

const server = new MCPServer(process.env.GITHUB_TOKEN);

// Get authenticated user
const response = await server.handleRequest({
  method: 'github_get_authenticated_user',
  params: {},
});

if (response.success) {
  console.log('User:', response.data);
}

// Search repositories
const searchResponse = await server.handleRequest({
  method: 'github_search_repositories',
  params: {
    q: 'typescript',
    per_page: 10,
  },
});

Using the GitHub Client Directly

import { GitHubClient } from '@onamfc/mcp-github-integration';

const client = new GitHubClient({
  token: process.env.GITHUB_TOKEN,
});

// Create a new repository
const newRepo = await client.createRepository({
  name: 'my-awesome-project',
  description: 'My awesome project description',
  private: false,
  auto_init: true,
});

// Get repository information
const repo = await client.getRepository('owner', 'repo-name');
console.log(repo);

// Create an issue
const issue = await client.createIssue({
  owner: 'owner',
  repo: 'repo-name',
  title: 'Bug Report',
  body: 'Description of the bug',
  labels: ['bug'],
});

// List pull requests
const prs = await client.listPullRequests({
  owner: 'owner',
  repo: 'repo-name',
  state: 'open',
});

Available GitHub API Operations

Repository Operations (25 endpoints)

  • github_get_repository - Get repository information
  • github_list_repositories - List user's public repositories
  • github_create_repository - Create a new repository
  • github_delete_repository - Delete a repository
  • github_update_repository - Update repository settings and configuration
  • github_get_repository_topics - Get repository topics/tags
  • github_replace_repository_topics - Set repository topics for discoverability
  • github_get_repository_languages - Get programming languages used
  • github_get_code_frequency_stats - Get weekly addition/deletion statistics
  • github_get_contributors_stats - Get contributor activity statistics
  • github_get_participation_stats - Get weekly commit count statistics
  • github_transfer_repository - Transfer repository to new owner
  • github_list_repository_teams - List teams with access to repository
  • github_check_team_permission - Check team permission for repository
  • github_add_repository_team - Add or update team access to repository
  • github_remove_repository_team - Remove team access from repository
  • github_enable_automated_security_fixes - Enable Dependabot automated security fixes
  • github_disable_automated_security_fixes - Disable automated security fixes
  • github_enable_vulnerability_alerts - Enable Dependabot vulnerability alerts
  • github_disable_vulnerability_alerts - Disable vulnerability alerts

Collaborator Management (7 endpoints)

  • github_list_collaborators - List repository collaborators
  • github_check_collaborator - Check if user is a collaborator
  • github_add_collaborator - Add collaborator to repository
  • github_remove_collaborator - Remove collaborator from repository
  • github_get_collaborator_permission - Get collaborator permission level
  • github_list_repository_invitations - List pending repository invitations
  • github_delete_repository_invitation - Delete/cancel a repository invitation

Issue Operations (9 endpoints)

  • github_create_issue - Create a new issue
  • github_list_issues - List issues in a repository
  • github_get_issue - Get a specific issue
  • github_update_issue - Update an existing issue
  • github_close_issue - Close an issue
  • github_create_issue_comment - Add a comment to an issue
  • github_list_issue_comments - List comments on an issue
  • github_update_issue_comment - Update an issue comment
  • github_delete_issue_comment - Delete an issue comment

Pull Request Operations (4 endpoints)

  • github_create_pull_request - Create a new pull request
  • github_list_pull_requests - List pull requests in a repository
  • github_get_pull_request - Get a specific pull request
  • github_merge_pull_request - Merge a pull request

Branch Operations (5 endpoints)

  • github_list_branches - List all branches in a repository
  • github_get_branch - Get information about a specific branch
  • github_create_branch - Create a new branch
  • github_delete_branch - Delete a branch
  • github_get_branch_protection - Get branch protection rules

Commit Operations (3 endpoints)

  • github_list_commits - List commits in a repository
  • github_get_commit - Get a specific commit
  • github_compare_commits - Compare two commits or branches

Release Operations (6 endpoints)

  • github_list_releases - List all releases
  • github_get_latest_release - Get the latest release
  • github_get_release - Get a specific release by ID
  • github_create_release - Create a new release
  • github_update_release - Update a release
  • github_delete_release - Delete a release

Content Operations (5 endpoints)

  • github_get_file_content - Get contents of a file
  • github_create_file - Create a file
  • github_update_file - Update a file
  • github_delete_file - Delete a file
  • github_get_directory_content - Get contents of a directory

GitHub Actions (9 endpoints)

  • github_list_workflows - List all workflows
  • github_get_workflow - Get a specific workflow
  • github_list_workflow_runs - List workflow runs
  • github_get_workflow_run - Get a specific workflow run
  • github_cancel_workflow_run - Cancel a workflow run
  • github_rerun_workflow - Re-run a workflow
  • github_delete_workflow_run - Delete a workflow run
  • github_list_workflow_run_artifacts - List artifacts for a workflow run
  • github_download_artifact - Download a workflow artifact

Webhook Operations (11 endpoints)

  • github_list_webhooks - List all webhooks for a repository
  • github_get_webhook - Get a specific webhook by ID
  • github_create_webhook - Create a new webhook
  • github_update_webhook - Update an existing webhook
  • github_delete_webhook - Delete a webhook
  • github_ping_webhook - Trigger a ping event to webhook
  • github_test_webhook - Trigger a test push event to webhook
  • github_list_webhook_deliveries - List deliveries for a webhook
  • github_get_webhook_delivery - Get a specific webhook delivery
  • github_redeliver_webhook - Redeliver a webhook delivery

Search Operations (8 endpoints)

  • github_search_repositories - Search for repositories
  • github_search_issues - Search for issues and pull requests
  • github_search_code - Search code across repositories
  • github_search_commits - Search commits
  • github_search_users - Search for users
  • github_search_topics - Search for topics
  • github_search_labels - Search for labels in a repository

User Operations (1 endpoint)

  • github_get_authenticated_user - Get authenticated user information

Common Use Cases

Repository Automation

Create and configure repositories programmatically:

// Create repository with full configuration
await server.handleRequest({
  method: 'github_create_repository',
  params: {
    name: 'my-project',
    description: 'My awesome project',
    private: false,
    auto_init: true,
    gitignore_template: 'Node',
    license_template: 'mit',
  },
});

// Update repository settings
await server.handleRequest({
  method: 'github_update_repository',
  params: {
    owner: 'myorg',
    repo: 'my-project',
    has_issues: true,
    has_wiki: false,
    allow_squash_merge: true,
    delete_branch_on_merge: true,
  },
});

// Add topics for discoverability
await server.handleRequest({
  method: 'github_replace_repository_topics',
  params: {
    owner: 'myorg',
    repo: 'my-project',
    topics: ['javascript', 'api', 'automation'],
  },
});

Team & Access Management

Manage collaborators and permissions:

// Add collaborator
await server.handleRequest({
  method: 'github_add_collaborator',
  params: {
    owner: 'myorg',
    repo: 'my-project',
    username: 'developer123',
    permission: 'push',
  },
});

// Add team access
await server.handleRequest({
  method: 'github_add_repository_team',
  params: {
    owner: 'myorg',
    repo: 'my-project',
    team_slug: 'backend-team',
    permission: 'admin',
  },
});

CI/CD Integration

Automate workflows and deployments:

// List workflow runs
await server.handleRequest({
  method: 'github_list_workflow_runs',
  params: {
    owner: 'myorg',
    repo: 'my-project',
    workflow_id: 'deploy.yml',
  },
});

// Re-run failed workflow
await server.handleRequest({
  method: 'github_rerun_workflow',
  params: {
    owner: 'myorg',
    repo: 'my-project',
    run_id: 123456,
  },
});

// Download build artifacts
await server.handleRequest({
  method: 'github_download_artifact',
  params: {
    owner: 'myorg',
    repo: 'my-project',
    artifact_id: 789012,
  },
});

Webhook Management

Set up event-driven integrations:

// Create webhook
await server.handleRequest({
  method: 'github_create_webhook',
  params: {
    owner: 'myorg',
    repo: 'my-project',
    config: {
      url: 'https://myapp.com/webhooks',
      content_type: 'json',
      secret: 'my-secret-key',
    },
    events: ['push', 'pull_request', 'issues'],
    active: true,
  },
});

// List webhook deliveries
await server.handleRequest({
  method: 'github_list_webhook_deliveries',
  params: {
    owner: 'myorg',
    repo: 'my-project',
    hook_id: 12345,
  },
});

// Redeliver failed webhook
await server.handleRequest({
  method: 'github_redeliver_webhook',
  params: {
    owner: 'myorg',
    repo: 'my-project',
    hook_id: 12345,
    delivery_id: 67890,
  },
});

Release Management

Automate release workflows:

// Create release
await server.handleRequest({
  method: 'github_create_release',
  params: {
    owner: 'myorg',
    repo: 'my-project',
    tag_name: 'v1.0.0',
    name: 'Version 1.0.0',
    body: 'Release notes here',
    draft: false,
    prerelease: false,
  },
});

// Get latest release
await server.handleRequest({
  method: 'github_get_latest_release',
  params: {
    owner: 'myorg',
    repo: 'my-project',
  },
});

Examples

A working example demonstrating the client's capabilities is provided in examples/basic-usage.ts:

Basic Usage Example

Demonstrates all core operations:

  • Getting repository information
  • Listing issues and pull requests
  • Listing branches and commits
  • Getting authenticated user information

Run the example:

# Using default repository (octocat/Hello-World)
GITHUB_TOKEN=your_token npm run example:basic

# Using your own repository
GITHUB_TOKEN=your_token REPO_OWNER=owner REPO_NAME=repo npm run example:basic

Note: The examples/ directory contains additional working examples including setup-new-repo.ts which demonstrates repository setup automation. See examples/README.md for details.

MCP Request/Response Format

Request Format

{
  method: string,        // The tool/method name
  params: {              // Parameters for the method
    [key: string]: any
  }
}

Response Format

{
  success: boolean,      // Whether the request succeeded
  data?: any,            // Response data (if successful)
  error?: {              // Error information (if failed)
    code: string,
    message: string,
    details?: any
  }
}

Important Notes

GitHub Token Requirements

  • A GitHub personal access token is required
  • Generate one at: https://github.com/settings/tokens
  • Required scopes depend on operations:
    • repo - Full repository access (for private repos)
    • public_repo - Public repository access only
    • read:user - Read user profile data
    • user:email - Read user email addresses
    • admin:repo_hook - Full control of repository hooks (webhooks)
    • admin:org - Full control of organization settings (for team operations)
    • workflow - Update GitHub Actions workflows

Rate Limiting

GitHub API has rate limits:

  • Authenticated requests: 5,000 requests per hour
  • Unauthenticated requests: 60 requests per hour
  • Check rate limit status in response headers
  • The client will throw an error if rate limited

Error Handling

All methods throw GitHubAPIError on failure:

try {
  const repo = await client.getRepository('owner', 'repo');
} catch (error) {
  if (error instanceof GitHubAPIError) {
    console.error(`Error ${error.code}: ${error.message}`);
    console.error('Status:', error.statusCode);
  }
}

Security Best Practices

  • Never commit your GitHub token to version control
  • Use environment variables for tokens
  • Rotate tokens regularly
  • Use minimal required scopes for your token
  • Consider using GitHub Apps for production applications
  • Always use webhook secrets for signature verification
  • Enable Dependabot security alerts on repositories

API Documentation

For detailed GitHub API documentation, visit:

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

README copy captured when this server was indexed; it may lag the repository. The original is authoritative.

Questions

About Github Integration

How do I install Github Integration?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is Github Integration safe to use with an AI agent?

Its trust score is 57 out of 100 (fair). It passes 2 of the 3 static security checks run so far; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Github Integration still maintained?

The last commit was 11 months ago. That's long enough that you should check whether the maintainer is responding to issues before depending on it.