Personal GitHub MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LLM_MODEL | No | Alias for OPENAI_MODEL. | |
| LOG_LEVEL | No | DEBUG, INFO, WARNING, ERROR. | INFO |
| LLM_API_KEY | No | Alias for OPENAI_API_KEY. | |
| MAX_RESULTS | No | Default result cap for list/search tools (1–100). | 20 |
| GITHUB_TOKEN | No | GitHub Personal Access Token (classic repo scope, or a fine-grained token with read/write on your repos). | |
| LLM_BASE_URL | No | Alias for OPENAI_BASE_URL. | |
| OPENAI_MODEL | No | Model used for README generation. | gpt-4o-mini |
| DEFAULT_BRANCH | No | Branch used when initializing new repos. | main |
| OPENAI_API_KEY | No | Optional OpenAI-compatible API key for LLM-generated READMEs. | |
| GITHUB_USERNAME | No | Account used to scope searches/repo listing. | token owner |
| GIT_AUTHOR_NAME | No | Author for local git commits. | Personal GitHub MCP |
| OPENAI_BASE_URL | No | Base URL for an OpenAI-compatible chat/completions endpoint. | https://api.openai.com/v1 |
| EULER_REPOSITORY | No | Repo that stores Project Euler solutions. | project-euler |
| GIT_AUTHOR_EMAIL | No | Committer email for local commits. | personal-github-mcp@users.noreply.github.com |
| DEFAULT_VISIBILITY | No | Visibility for new repos (private/public). | private |
| PERSONAL_GITHUB_TOKEN | No | Alias for GITHUB_TOKEN. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_repositoriesA | List your GitHub repositories. Args: visibility: 'all', 'private' or 'public'. sort: 'pushed', 'updated', 'created' or 'full_name'. limit: maximum number of repositories to return. |
| repository_summaryB | Return a high-level summary of a GitHub repository. Args: name: repository name ('repo' or 'owner/repo'). |
| create_repositoryA | Create a new repository on GitHub under your account. Args: name: desired repository name (letters, digits, '-', '_', '.'). description: short description shown on GitHub. private: whether the repository is private. |
| project_statisticsA | Show development statistics for a repository. Includes language breakdown, commit counts per author, and open issues / pull requests. Args: name: repository name ('repo' or 'owner/repo'). |
| explain_repositoryB | Explain what a repository is about in plain language. Args: name: repository name ('repo' or 'owner/repo'). |
| stale_repository_reportA | List repositories that have not been pushed to recently. Args: threshold_days: only report repos idle for at least this many days. limit: maximum number of repos to report. |
| recommend_projectA | Recommend a project to work on next. Scores your repositories by recency, activity and (optionally) a comma-separated list of interests matched against the primary language. Args: interests: comma-separated language interests, e.g. 'python, rust'. limit: number of recommendations to return. |
| publish_projectA | Publish a local project as a new GitHub repository. Initializes a git repository if needed, commits all files, creates the remote repository on GitHub and pushes the default branch. Args: path: absolute path to the local project directory. repo_name: GitHub repository name (defaults to the folder name). description: short description for the new repository. private: whether the repository is private. commit_message: optional commit message for the initial commit. branch: default branch for new repositories. |
| publish_current_projectA | Publish the current working directory as a GitHub repository. Detects the project, generates a README and .gitignore when missing, initializes git if needed, creates the GitHub repository if needed, commits and pushes everything, then returns the repository URL. Args: repo_name: GitHub repository name (defaults to the folder name). description: short description for the new repository. private: whether the repository is private. commit_message: optional commit message for the initial commit. branch: default branch for new repositories. |
| backup_projectA | Commit local changes and push them to GitHub. Requires Args: path: absolute path to the local project directory. commit_message: optional commit message (defaults to a dated message). |
| search_codeA | Search GitHub code for a keyword. Args: keyword: the text to search for. language: optional filter, e.g. 'python'. owner: optional GitHub user/org to scope the search to. limit: maximum number of results. |
| search_repositoryA | Search for repositories by name. Args: name: repository name to search for. owner: optional GitHub user/org to scope the search to. limit: maximum number of results. |
| where_did_i_useA | Find where you used a given keyword in your own repositories. Args: keyword: the text to search for in your code. language: optional filter, e.g. 'python'. limit: maximum number of results. |
| search_my_engineering_memoryA | Search your engineering memory across all of your repositories. Looks through repository metadata, README files, architecture documentation and source code, returning ranked results. Args: keyword: the text to search for. limit: maximum number of ranked results to return. |
| upload_euler_solutionB | Upload a Project Euler solution to your solutions repository. Files are stored as Args: problem_number: the Project Euler problem number. file_path: absolute path to the local solution file. commit_message: optional commit message. |
| publish_euler_solutionA | Publish a Project Euler solution with an auto-generated README. Detects the problem in the current directory (or Args: path: optional directory containing the problem (defaults to the current working directory). commit_message: optional commit message. |
| update_progressA | Report your current Project Euler progress from GitHub. Returns the list of solved problems, totals and the next unsolved problem number. |
| compare_repositoriesA | Compare two repositories and summarize their differences. Args: repository_a: first repository name ('repo' or 'owner/repo'). repository_b: second repository name ('repo' or 'owner/repo'). |
| dependency_summaryA | Summarize the dependencies of a local project. Detects a manifest file (pyproject.toml, requirements.txt, package.json, Cargo.toml, go.mod, Gemfile, composer.json) and lists its dependencies. Args: path: absolute path to the local project directory. |
| architecture_summaryA | Summarize the architecture of a local project. Reports file language breakdown, top-level structure, and likely entry points. Args: path: absolute path to the local project directory. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sam170203/personal-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server