Token-based GitHub automation management. No Docker, Flexible configuration, 80+ tools with direct API integration.
Token-based GitHub automation management. No Docker for optimal performance, Flexible configuration for fine-grained control, 89 tools with direct API integration.
A comprehensive Model Context Protocol (MCP) server that enables your MCP client (Claude Desktop, Roo Code, Cline, Cursor, Windsurf, etc.) to interact with GitHub repositories using your GitHub personal access token.
This tool simplifies managing GitHub repositories using only a GitHub token for setup. By skipping Docker, it avoids unnecessary complexity, delivering fast and effective results through direct API integration.
This server is built using Node.js and provides a complete toolkit for repository management, issue tracking, collaboration management, and more, all while leveraging the GitHub API for optimal performance.
🎯 Simplicity: Token-based access eliminates complexity. 🌿 Efficiency: No Docker ensures lightweight, optimal performance. 💪 Power: 89 tools with direct API integration offer unmatched flexibility. 🔒 Flexibility: Fine-grained control with configurable tools.
✅ No Docker required - Simple Node.js server that runs anywhere
✅ One token setup - Only needs a GitHub Personal Access Token to work
✅ Direct API integration - No dependency on gh
CLI, faster and more reliable
✅ Zero configuration - Works out of the box with just the token
✅ Allowed repositories - Restrict operations to specific repos or owners
✅ Tool management - Enable/disable specific tools for fine-grained control
✅ Default repository - Set a default repo for streamlined workflows
✅ Flexible permissions - Configure exactly what the server can access
✅ Comprehensive toolkit - 89 powerful tools for complete GitHub workflow
✅ Branch & commit management - Create branches, explore history, compare changes
✅ Image upload support - Upload and embed images directly in issues
✅ Advanced filtering - Sort, filter, and search with multiple criteria
✅ Rate limit handling - Built-in GitHub API rate limit management
repo
(Full control of private repositories) - Recommended for full functionality.user:read
or user:email
(to read user profile data).read:org
(if you need to access organization information).Make sure you have Node.js installed, then use npx
to run the server directly
Check that you have exported your GitHub token as an environment variable named GH_TOKEN
or include it in your MCP client configuration.
You can run this server directly without cloning or installing:
# Run directly with npx
npx -y github-repos-manager-mcp
For macOS/Linux:
{
"mcpServers": {
"github-repos-manager": {
"command": "npx",
"args": [
"-y",
"github-repos-manager-mcp"
],
"env": {
"GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE"
}
}
}
}
For Windows, in some cases you may need to use npx.cmd instead of npx:
{
"mcpServers": {
"github-repos-manager": {
"command": "npx.cmd",
"args": [
"-y",
"github-repos-manager-mcp"
],
"env": {
"GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE"
}
}
}
}
This command will automatically download and run the latest version of the server without needing to install anything locally.
If you prefer to run the server locally, clone the repository and install dependencies:
git clone https://github.com/kurdin/github-repos-manager.git
cd github-repos-manager
npm install
Then, configure your MCP client to point to the local server using the full path to server.cjs
:
{
"mcpServers": {
"github-repos-manager": {
"command": "node",
"args": ["/full/path/to/your/project/github-repos-manager-mcp/server.cjs"],
"env": {
"GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE"
}
}
}
}
Important: Replace "ghp_YOUR_ACTUAL_TOKEN_HERE"
with your actual GitHub Personal Access Token.
Once the MCP client is configured with the correct path to server.cjs
and your GH_TOKEN
, the server should start automatically when the client attempts to use one of its tools.
You can also test the server script directly for basic authentication, but this requires temporarily setting the GH_TOKEN environment variable in your shell for this specific test:
# For direct script testing ONLY (normal operation uses MCP client config)
export GH_TOKEN="ghp_YOUR_TEMPORARY_TEST_TOKEN"
node server.cjs
unset GH_TOKEN # Important: unset after testing
If successful, you should see "GitHub API authentication successful" and "GitHub Repos Manager MCP Server running on stdio".
Note: The server will only set a default repository if you explicitly configure it through environment variables, command line arguments, or use the set_default_repo
tool. It never automatically sets a default repository.
Example File Locations for Claude Desktop claude_desktop_config.json
:
~/Library/Application Support/Claude/claude_desktop_config.json
%APPDATA%\Claude\claude_desktop_config.json
~/.config/Claude/claude_desktop_config.json
(path may vary)You can set a default repository to streamline your workflow and avoid specifying owner
and repo
in every command. There are three ways to configure this:
Add environment variables to your MCP client configuration:
Using npx:
{
"mcpServers": {
"github-repos-manager": {
"command": "npx",
"args": ["-y", "github-repos-manager-mcp"],
"env": {
"GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
"GH_DEFAULT_OWNER": "octocat",
"GH_DEFAULT_REPO": "Hello-World"
}
}
}
}
Using local installation:
{
"mcpServers": {
"github-repos-manager": {
"command": "node",
"args": ["/full/path/to/your/project/github-repos-manager-mcp/server.cjs"],
"env": {
"GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
"GH_DEFAULT_OWNER": "octocat",
"GH_DEFAULT_REPO": "Hello-World"
}
}
}
}
When running the server directly, you can pass default repository settings:
node server.cjs --default-owner octocat --default-repo Hello-World
Use the set_default_repo
tool during your conversation to set or change the default repository:
microsoft/vscode
"username/my-project
"Configuration Priority (highest to lowest):
--default-owner
, --default-repo
)GH_DEFAULT_OWNER
, GH_DEFAULT_REPO
)set_default_repo
)Benefits of Default Repository:
owner
and repo
in every commandset_default_repo
toolOnce a default repository is set, you can omit owner
and repo
parameters from commands:
You can restrict which repositories the server can access using the GH_ALLOWED_REPOS
environment variable or --allowed-repos
command line argument. This is a security feature that ensures the server can only operate on approved repositories.
1. Environment Variable (for MCP clients)
{
"mcpServers": {
"github-repos-manager": {
"command": "node",
"args": ["/path/to/server.cjs"],
"env": {
"GH_TOKEN": "ghp_YOUR_TOKEN",
"GH_ALLOWED_REPOS": "owner1/repo1,owner2/repo2,owner3"
}
}
}
}
2. Command Line Argument
node server.cjs --allowed-repos "microsoft/vscode,facebook/react,google"
How it works:
owner/repo
): Only that specific repository is allowedowner
): All repositories from that owner are allowedExamples:
"microsoft/vscode"
- Only the vscode repository from Microsoft"kurdin"
- All repositories owned by kurdin"kurdin,microsoft/vscode,facebook/react"
- All kurdin's repos plus specific reposDisable tools that you don't want to be available by setting the GH_DISABLED_TOOLS
environment variable or using --disabled-tools
command line argument.
For maximum security, you can restrict the server to only allow specific tools by setting the GH_ALLOWED_TOOLS
environment variable or using --allowed-tools
command line argument.
Important: If both GH_ALLOWED_TOOLS
and GH_DISABLED_TOOLS
are set, GH_ALLOWED_TOOLS
takes precedence.
Using npx (macOS/Linux):
{
"mcpServers": {
"github-repos-manager": {
"command": "npx",
"args": ["-y", "github-repos-manager-mcp"],
"env": {
"GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
"GH_DEFAULT_OWNER": "mycompany",
"GH_DEFAULT_REPO": "main-project",
"GH_ALLOWED_REPOS": "mycompany,trusted-org/specific-repo",
"GH_ALLOWED_TOOLS": "list_issues,create_issue,list_prs,get_repo_info"
}
}
}
}
Using npx (Windows):
{
"mcpServers": {
"github-repos-manager": {
"command": "npx.cmd",
"args": ["-y", "github-repos-manager-mcp"],
"env": {
"GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
"GH_DEFAULT_OWNER": "mycompany",
"GH_DEFAULT_REPO": "main-project",
"GH_ALLOWED_REPOS": "mycompany,trusted-org/specific-repo",
"GH_ALLOWED_TOOLS": "list_issues,create_issue,list_prs,get_repo_info"
}
}
}
}
Using local installation:
{
"mcpServers": {
"github-repos-manager": {
"command": "node",
"args": ["/full/path/to/your/project/github-repos-manager-mcp/server.cjs"],
"env": {
"GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
"GH_DEFAULT_OWNER": "mycompany",
"GH_DEFAULT_REPO": "main-project",
"GH_ALLOWED_REPOS": "mycompany,trusted-org/specific-repo",
"GH_ALLOWED_TOOLS": "list_issues,create_issue,list_prs,get_repo_info"
}
}
}
}
Command Line Equivalents:
node server.cjs \
--default-owner mycompany \
--default-repo main-project \
--allowed-repos "mycompany,trusted-org/specific-repo" \
--allowed-tools "list_issues,create_issue,list_prs,get_repo_info"
This server provides 89 comprehensive tools for complete GitHub workflow management:
create_pull_request
: Create a new pull request with title, body, and branch specifications.
owner
(string, optional), repo
(string, optional), title
(string, required), body
(string, optional), head
(string, required - branch with changes), base
(string, required - target branch), draft
(boolean, optional), maintainer_can_modify
(boolean, optional)edit_pull_request
: Update an existing pull request's title, body, state, or base branch.
owner
(string, optional), repo
(string, optional), pull_number
(integer, required), title
(string, optional), body
(string, optional), state
(string, optional - "open" or "closed"), base
(string, optional)get_pr_details
: Get comprehensive information about a pull request including status and merge details.
owner
(string, optional), repo
(string, optional), pull_number
(integer, required)list_pr_reviews
: List all reviews on a pull request with their status and comments.
owner
(string, optional), repo
(string, optional), pull_number
(integer, required), per_page
(integer, optional, default 30)create_pr_review
: Submit a review on a pull request with comments and approval status.
owner
(string, optional), repo
(string, optional), pull_number
(integer, required), body
(string, optional), event
(string, optional - "APPROVE", "REQUEST_CHANGES", "COMMENT"), comments
(array, optional)list_pr_files
: List all files changed in a pull request with additions/deletions stats.
owner
(string, optional), repo
(string, optional), pull_number
(integer, required), per_page
(integer, optional, default 30)create_file
: Create a new file in the repository with content and commit message.
owner
(string, optional), repo
(string, optional), path
(string, required), content
(string, required), message
(string, required), branch
(string, optional), committer
(object, optional)update_file
: Update an existing file's content with a new commit.
owner
(string, optional), repo
(string, optional), path
(string, required), content
(string, required), message
(string, required), sha
(string, required - current file SHA), branch
(string, optional)upload_file
: Upload a local file to the repository (binary files supported).
owner
(string, optional), repo
(string, optional), local_path
(string, required), repo_path
(string, required), message
(string, required), branch
(string, optional)delete_file
: Delete a file from the repository with a commit message.
owner
(string, optional), repo
(string, optional), path
(string, required), message
(string, required), sha
(string, required - current file SHA), branch
(string, optional)list_deploy_keys
: List all deploy keys for a repository with their permissions.
owner
(string, optional), repo
(string, optional), per_page
(integer, optional, default 30)create_deploy_key
: Add a new deploy key to the repository for secure access.
owner
(string, optional), repo
(string, optional), title
(string, required), key
(string, required - public SSH key), read_only
(boolean, optional, default true)delete_deploy_key
: Remove a deploy key from the repository.
owner
(string, optional), repo
(string, optional), key_id
(integer, required)list_webhooks
: List all webhooks configured for the repository.
owner
(string, optional), repo
(string, optional), per_page
(integer, optional, default 30)create_webhook
: Create a new webhook for repository events.
owner
(string, optional), repo
(string, optional), config
(object, required - url and content_type), events
(array, optional, default ["push"]), active
(boolean, optional)edit_webhook
: Update webhook configuration, events, or active status.
owner
(string, optional), repo
(string, optional), hook_id
(integer, required), config
(object, optional), events
(array, optional), active
(boolean, optional)delete_webhook
: Remove a webhook from the repository.
owner
(string, optional), repo
(string, optional), hook_id
(integer, required)list_secrets
: List repository secrets (names only, values are encrypted).
owner
(string, optional), repo
(string, optional), per_page
(integer, optional, default 30)update_secret
: Create or update a repository secret for Actions.
owner
(string, optional), repo
(string, optional), secret_name
(string, required), encrypted_value
(string, required), key_id
(string, required)Note: These tools are placeholders for future GitHub Actions integration.
list_workflows
: List all GitHub Actions workflows in the repository.list_workflow_runs
: List workflow runs with filtering options.get_workflow_run_details
: Get detailed information about a workflow run.trigger_workflow
: Manually trigger a workflow dispatch event.download_workflow_artifacts
: Download artifacts from a workflow run.cancel_workflow_run
: Cancel a workflow run in progress.get_repo_stats
: Get comprehensive repository statistics including contributor activity.
owner
(string, optional), repo
(string, optional)list_repo_topics
: List all topics (tags) associated with the repository.
owner
(string, optional), repo
(string, optional)update_repo_topics
: Update the topics for better repository discovery.
owner
(string, optional), repo
(string, optional), names
(array of strings, required)get_repo_languages
: Get programming languages used in the repository with byte counts.
owner
(string, optional), repo
(string, optional)list_stargazers
: List users who have starred the repository.
owner
(string, optional), repo
(string, optional), per_page
(integer, optional, default 30)list_watchers
: List users watching the repository for notifications.
owner
(string, optional), repo
(string, optional), per_page
(integer, optional, default 30)list_forks
: List all forks of the repository with sorting options.
owner
(string, optional), repo
(string, optional), sort
(string, optional - "newest", "oldest", "stargazers"), per_page
(integer, optional)get_repo_traffic
: Get repository traffic data including views and clones (requires admin access).
owner
(string, optional), repo
(string, optional)search_issues
: Search for issues and pull requests across GitHub.
query
(string, required), sort
(string, optional - "comments", "reactions", "interactions", "created", "updated"), order
(string, optional - "asc", "desc"), per_page
(integer, optional)search_commits
: Search for commits across repositories.
query
(string, required), sort
(string, optional - "author-date", "committer-date"), order
(string, optional), per_page
(integer, optional)search_code
: Search for code across GitHub repositories.
query
(string, required), sort
(string, optional - "indexed"), order
(string, optional), per_page
(integer, optional)search_users
: Search for users and organizations.
query
(string, required), sort
(string, optional - "followers", "repositories", "joined"), order
(string, optional), per_page
(integer, optional)search_topics
: Search for repository topics.
query
(string, required), per_page
(integer, optional, default 30)list_org_repos
: List all repositories in an organization.
org
(string, required), type
(string, optional - "all", "public", "private", "forks", "sources", "member"), sort
(string, optional), per_page
(integer, optional)list_org_members
: List members of an organization.
org
(string, required), filter
(string, optional - "2fa_disabled", "all"), role
(string, optional - "all", "admin", "member"), per_page
(integer, optional)get_org_info
: Get detailed information about an organization.
org
(string, required)list_org_teams
: List all teams in an organization.
org
(string, required), per_page
(integer, optional, default 30)get_team_members
: List members of a specific team.
org
(string, required), team_slug
(string, required), role
(string, optional - "member", "maintainer", "all"), per_page
(integer, optional)manage_team_repos
: Add or remove repository access for a team.
org
(string, required), team_slug
(string, required), owner
(string, required), repo
(string, required), permission
(string, optional - "pull", "push", "admin"), action
(string, required - "add" or "remove")Note: Some of these tools are placeholders for future enhancements.
list_repo_projects
: List repository projects (classic projects).code_quality_checks
: Placeholder for future code quality analysis.custom_dashboards
: Placeholder for custom dashboard creation.automated_reporting
: Placeholder for automated report generation.notification_management
: Placeholder for notification settings.release_management
: Placeholder for release management features.dependency_analysis
: Placeholder for dependency scanning.set_default_repo
: Set a default owner and repository for subsequent commands to streamline your workflow.
owner
(string, required), repo
(string, required)list_repos
: List GitHub repositories for the authenticated user with advanced filtering.
per_page
(number, optional, default 10, max 100), visibility
(string, optional, enum: "all", "public", "private", default "all"), sort
(string, optional, enum: "created", "updated", "pushed", "full_name", default "updated")get_repo_info
: Get comprehensive information about a specific repository including stats and metadata.
owner
(string, required if no default), repo
(string, required if no default)search_repos
: Search for repositories across GitHub with advanced sorting options.
query
(string, required), per_page
(number, optional, default 10, max 100), sort
(string, optional, enum: "stars", "forks", "help-wanted-issues", "updated", default "stars")get_repo_contents
: Browse files and directories in any repository with branch/commit support.
owner
(string, required if no default), repo
(string, required if no default), path
(string, optional, default ""), ref
(string, optional, e.g., branch name or commit SHA)list_issues
: List issues with filtering by state and comprehensive pagination.
owner
(string, required if no default), repo
(string, required if no default), state
(string, optional, enum: "open", "closed", "all", default "open"), per_page
(number, optional, default 10, max 100)create_issue
: Create feature-rich issues with image uploads, labels, and assignees.
owner
(string, required if no default), repo
(string, required if no default), title
(string, required), body
(string, optional), image_path
(string, optional, full local path to image), labels
(array of strings, optional), assignees
(array of strings, optional)edit_issue
: Modify existing issues including title, body, state, labels, assignees, and image uploads.
owner
(string, optional), repo
(string, optional), issue_number
(integer, required), title
(string, optional), body
(string, optional), state
(string, optional, enum: "open", "closed"), image_path
(string, optional, full local path to image), labels
(array of strings, optional), assignees
(array of strings, optional)get_issue_details
: Get comprehensive information about any specific issue.
owner
(string, optional), repo
(string, optional), issue_number
(integer, required)lock_issue
: Lock issues to prevent further comments with customizable reasons.
owner
(string, optional), repo
(string, optional), issue_number
(integer, required), lock_reason
(string, optional, enum: "off-topic", "too heated", "resolved", "spam")unlock_issue
: Unlock previously locked issues to resume discussions.
owner
(string, optional), repo
(string, optional), issue_number
(integer, required)add_assignees_to_issue
: Add one or more team members to an issue.
owner
(string, optional), repo
(string, optional), issue_number
(integer, required), assignees
(array of strings, required)remove_assignees_from_issue
: Remove assignees from issues for better task management.
owner
(string, optional), repo
(string, optional), issue_number
(integer, required), assignees
(array of strings, required)list_issue_comments
: List all comments for an issue with timestamp filtering.
owner
(string, optional), repo
(string, optional), issue_number
(integer, required), per_page
(integer, optional, default 30, max 100), since
(string, optional, ISO 8601 format date-time)create_issue_comment
: Add new comments to ongoing issue discussions.
owner
(string, optional), repo
(string, optional), issue_number
(integer, required), body
(string, required)edit_issue_comment
: Modify existing comments for corrections or updates.
owner
(string, optional), repo
(string, optional), comment_id
(integer, required), body
(string, required)delete_issue_comment
: Remove comments when necessary for content management.
owner
(string, optional), repo
(string, optional), comment_id
(integer, required)list_prs
: List pull requests with state filtering and pagination.
owner
(string, required if no default), repo
(string, required if no default), state
(string, optional, enum: "open", "closed", "all", default "open"), per_page
(number, optional, default 10, max 100)list_branches
: List all branches in a repository with protection status and commit information.
owner
(string, optional), repo
(string, optional), protected_only
(boolean, optional, default false), per_page
(number, optional, default 30)create_branch
: Create a new branch from an existing branch or commit.
owner
(string, optional), repo
(string, optional), branch_name
(string, required), from_branch
(string, optional, defaults to repository default branch)list_commits
: List commits in a repository with detailed information and filtering options.
owner
(string, optional), repo
(string, optional), sha
(string, optional, branch/tag/commit to list from), per_page
(number, optional, default 20), since
(string, optional, ISO 8601 date-time), until
(string, optional, ISO 8601 date-time), author
(string, optional, GitHub username or email)get_commit_details
: Get detailed information about a specific commit including files changed.
owner
(string, optional), repo
(string, optional), commit_sha
(string, required)compare_commits
: Compare two commits or branches to see differences.
owner
(string, optional), repo
(string, optional), base
(string, required, base branch or commit SHA), head
(string, required, head branch or commit SHA)get_user_info
: Get detailed information about any GitHub user or your own profile.
username
(string, optional - defaults to authenticated user)list_repo_collaborators
: List repository collaborators with permission-based filtering.
owner
(string, optional), repo
(string, optional), affiliation
(string, optional, enum: "outside", "direct", "all", default "all"), permission
(string, optional, enum: "pull", "triage", "push", "maintain", "admin"), per_page
(integer, optional, default 30, max 100)list_repo_labels
: List all labels in a repository with their colors and descriptions.
owner
(string, optional), repo
(string, optional), per_page
(integer, optional, default 30, max 100)create_label
: Create custom labels with colors and descriptions for better issue organization.
owner
(string, optional), repo
(string, optional), name
(string, required), color
(string, optional, hex color without #, default "f29513"), description
(string, optional)edit_label
: Modify existing label properties including name, color, and description.
owner
(string, optional), repo
(string, optional), current_name
(string, required), name
(string, optional), color
(string, optional, hex color without #), description
(string, optional)delete_label
: Remove labels from repository when no longer needed.
owner
(string, optional), repo
(string, optional), name
(string, required)list_milestones
: List repository milestones with filtering by state and sorting options.
owner
(string, optional), repo
(string, optional), state
(string, optional, enum: "open", "closed", "all", default "open"), sort
(string, optional, enum: "due_on", "completeness", default "due_on"), direction
(string, optional, enum: "asc", "desc", default "asc"), per_page
(integer, optional, default 30, max 100)create_milestone
: Create new milestones with due dates for project planning.
owner
(string, optional), repo
(string, optional), title
(string, required), state
(string, optional, enum: "open", "closed", default "open"), description
(string, optional), due_on
(string, optional, ISO 8601 date-time format)edit_milestone
: Update milestone details including title, description, state, and due dates.
owner
(string, optional), repo
(string, optional), milestone_number
(integer, required), title
(string, optional), state
(string, optional, enum: "open", "closed"), description
(string, optional), due_on
(string, optional, ISO 8601 date-time format)delete_milestone
: Remove milestones from repository when no longer needed.
owner
(string, optional), repo
(string, optional), milestone_number
(integer, required)Once configured, you can ask your MCP client (e.g., Claude) to perform powerful GitHub operations:
octocat/Spoon-Knife
for easier workflow."microsoft/vscode
repository."src/main.js
file in microsoft/vscode on the develop
branch."src/main.js
file in the default repository on the develop
branch." (requires default repo set)my-org/my-repo
who have admin permissions."my-org/my-repo
with title 'Urgent: UI Bug' and body 'The login button is broken on mobile.' Assign it to user1
and user2
and add the bug
label."enhancement
label." (requires default repo set)/Users/me/screenshots/bug_report.png
to issue #42 in microsoft/vscode."/Users/me/screenshots/bug_report.png
to issue #42 in the default repository." (requires default repo set)enhancement
label, and close it."old-assignee
from issue #12 and add new-assignee
instead."my-org/my-repo
to see current organization system."my-org/project-x
sorted by due date."microsoft/vscode
."my-org/project-x
."github_username
."my-org/my-repo
and show their protection status."my-org/secure-repo
."feature/dark-mode
from the develop
branch."main
branch."john-doe
from the last week."abc123def
including all file changes."main
branch with feature/new-ui
to see what's different."v1.0.0
and v2.0.0
tags."my-org/main-project
as default, then list all open issues assigned to me."/path/to/error.png
, assign to dev-team
, and add labels bug
and high-priority
."reviewer1
, lock it with reason 'resolved', and add a final comment 'Issue resolved in PR #51'."Token Problems:
GH_TOKEN
value in your MCP client's configuration is correct and doesn't have typosexport TEMP_TOKEN="ghp_YOUR_TOKEN_TO_TEST"
curl -H "Authorization: token $TEMP_TOKEN" https://api.github.com/user
unset TEMP_TOKEN
This should return your GitHub user information.Configuration Issues:
GH_TOKEN
is correctly placed within the env
object in your MCP client's server configurationserver.cjs
is absolute and correctnode --version
GH_DEFAULT_OWNER
and GH_DEFAULT_REPO
environment variables, verify they're correct and the repository existsPermission Issues:
repo
or public_repo
(for repository access)user
(for user information)read:org
(for organization access, if needed)GH_DEFAULT_OWNER
and GH_DEFAULT_REPO
in your MCP client config--default-owner
and --default-repo
flagsowner/repo
format in the set_default_repo
toolserver.cjs
is executable: chmod +x server.cjs
GH_TOKEN
to version control or share it publiclyenv
block in your MCP client configuration# Clone and setup
mkdir github-repos-manager-mcp
cd github-repos-manager-mcp
# Add the server files
npm install
chmod +x server.cjs
# For development testing with nodemon
npm run dev
The recommended approach is configuring your MCP client (e.g., Claude Desktop) to point to your development version with proper GH_TOKEN
configuration. Changes to server.cjs
require restarting the server connection.
# Temporarily set token for quick verification
export GH_TOKEN="ghp_YOUR_DEVELOPMENT_TOKEN"
node server.cjs
unset GH_TOKEN # Always clean up after testing
MIT License - Feel free to use, modify, and distribute this MCP server.
Tools to read, search, and manipulate Git repositories
GitLab API, enabling project management
Gitee API integration, repository, issue, and pull request management, and more.
GitHub's official MCP Server
Beautiful HTML and PNG diff visualization using diff2html, designed for filesystem edit_file dry-run output with high-performance Bun runtime.