NO

Node.js GitHub Token Automation MCP Server

Manage GitHub repos with a fast Node.js MCP server using a personal access token—no Docker, 80+ tools and direct API integration for fine-grained control.

Quick Install
npx -y @kurdin/github-repos-manager-mcp

Overview

This MCP (Model Context Protocol) server is a lightweight Node.js service that exposes a collection of GitHub-focused tools for LLMs and automation workflows. It uses a GitHub Personal Access Token (PAT) to call the GitHub REST API directly, avoiding Docker or heavyweight orchestration. The project bundles 80+ discrete tools for common repository, issues, pull request, workflow, and release operations so language models can orchestrate GitHub maintenance tasks with fine-grained control.

The server implements an HTTP tool API (following MCP-style patterns) so any LLM runtime or orchestration layer can list available tools and invoke them over simple JSON HTTP calls. This makes it easy to integrate code-assist agents, CI systems, or internal bots that need programmatic access to GitHub operations without embedding your PAT into multiple places or building a custom API for each repository action.

Features

  • Fast, minimal Node.js server — no Docker required
  • Direct GitHub REST API integration using a Personal Access Token
  • 80+ ready-made tools for repo, issues, PRs, labels, releases, workflows, and more
  • MCP-style HTTP endpoints for listing and invoking tools
  • Fine-grained control: tools target specific GitHub endpoints and accept structured inputs
  • Environment-driven configuration for easy deployment and secrets management
  • Lightweight: suitable for running on a small VM, cloud instance, or developer machine

Installation / Configuration

Prerequisites:

  • Node.js 16+ (LTS recommended)
  • A GitHub Personal Access Token (PAT) with appropriate scopes (see notes below)

Quick start:

# clone the repository
git clone https://github.com/kurdin/github-repos-manager-mcp.git
cd github-repos-manager-mcp

# install dependencies
npm install

# copy and edit .env
cp .env.example .env
# edit .env and set GITHUB_TOKEN and PORT

# start the server
npm start

Environment variables (common):

GITHUB_TOKEN=ghp_your_personal_access_token_here
PORT=3000
HOST=0.0.0.0            # optional
MCP_API_KEY=optional_key_to_restrict_clients
ALLOWED_ORIGINS=*       # or specific origin(s) for CORS

Recommended PAT scopes:

  • For full repo control: repo
  • For public-only operations: public_repo
  • For workflow control: workflow
  • For org-level operations: admin:org (only if needed)

Security tip: store the PAT in a secrets manager or environment variable and never commit it. Limit scopes to only what the server needs.

Available Tools / Resources

The server exposes a catalog of tools grouped by capability. Example categories and sample tool names:

CategoryExample Tools
Repository managementcreate-repo, delete-repo, list-repos, update-repo-settings
Issues & Discussionscreate-issue, list-issues, close-issue, add-comment
Pull requestscreate-pr, list-prs, merge-pr, close-pr
Labels & Milestonesadd-label, remove-label, list-labels, create-milestone
Workflows & Actionslist-workflows, run-workflow, get-workflow-run
Releases & Assetscreate-release, upload-release-asset, list-releases
Collaborators & Permissionsadd-collaborator, remove-collaborator, list-collaborators
Branches & Protectioncreate-branch, protect-branch, list-branches

Use GET /tools to retrieve the current tool catalog and POST requests to invoke a tool (see examples below). Each tool accepts JSON input fields documented in the server’s tool metadata (name, input schema, description).

Example API Usage

List tools:

curl -s "http://localhost:3000/tools" | jq .

Invoke a tool (example: create a repository):

curl -X POST "http://localhost:3000/tool/create-repo" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $MCP_API_KEY" \
  -d '{
    "name": "example-repo",
    "description": "Repo created by MCP tool",
    "private": false
  }'

Node.js example invoking a tool:

import fetch from "node-fetch";

const res = await fetch("http://localhost:3000/tool/create-repo", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": `Bearer ${process.env.MCP_API_KEY}`
  },
  body: JSON.stringify({ name: "example-repo", description: "demo", private: false })
});
const json = await res.json();
console.log(json);

Adjust endpoints and input fields based on the tool metadata returned by GET /tools.

Use Cases

  • Automate repository provisioning: create hundreds of course or project repos with standardized settings (branch protection, default labels, topics) from a single script or LLM prompt.
  • Bulk updates across an organization: update README headers, license text, or CI configuration across many repositories using a tool that opens PRs and applies diffs.
  • Issue triage and labeling: have an LLM analyze incoming issue text and call tools to add labels, assign maintainers, or create follow-up tasks.
  • Release automation: create releases, upload assets, and trigger workflows as part of a release pipeline invoked by an LLM assistant or CI job.
  • PR maintenance bots: auto-merge dependabot branches when checks pass, add backport PRs, or apply standard PR templates.

Notes and Best Practices

  • Limit PAT scopes to the minimum set required. For public repo tasks, use public_repo instead of repo.
  • Run the server behind a reverse proxy or internal network with TLS, and restrict access