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.
npx -y @kurdin/github-repos-manager-mcpOverview
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
# install dependencies
# copy and edit .env
# edit .env and set GITHUB_TOKEN and PORT
# start the server
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:
| Category | Example Tools |
|---|---|
| Repository management | create-repo, delete-repo, list-repos, update-repo-settings |
| Issues & Discussions | create-issue, list-issues, close-issue, add-comment |
| Pull requests | create-pr, list-prs, merge-pr, close-pr |
| Labels & Milestones | add-label, remove-label, list-labels, create-milestone |
| Workflows & Actions | list-workflows, run-workflow, get-workflow-run |
| Releases & Assets | create-release, upload-release-asset, list-releases |
| Collaborators & Permissions | add-collaborator, remove-collaborator, list-collaborators |
| Branches & Protection | create-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:
|
Invoke a tool (example: create a repository):
Node.js example invoking a tool:
;
;
;
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