Storing prompts as frontmattered Markdown in a repository means review, history and sharing come for free. The README is unusually candid about where it stops: search is linear across files with no native semantic search on GitHub's side, and performance degrades past 100+ prompts — with an index file suggested as the next step at 200–1000. Add a token before anything else; the rate limit is the first wall people hit.
An MCP server that treats a GitHub repository as your prompt library. Prompts are Markdown files with YAML frontmatter — name, title, category, tags, difficulty, arguments — and the server fetches, searches and composes them, with Handlebars-style variables filled at use time. It is an enhanced fork of prompts-mcp-server, with the GitHub integration being the addition.
- Prompts found by keyword, category or tag — the entry point the tool descriptions push you to use first — `search_prompts`
- The available categories listed with counts, so you can browse rather than guess — `list_prompt_categories`
- A specific prompt retrieved in full by its exact name — `get_prompt`
- Several prompts combined into one workflow — `compose_prompts`
- New prompts written back into the GitHub repository from the client — `create_github_prompt`
- Contextual guidance, and a connection check for when GitHub is the thing that is broken — `prompts_help`, `check_github_status`
- Resource endpoints for browsing and discovery alongside the tools, plus dynamic templates with Handlebars support
Node.js 18+, git, and a GitHub repository holding your prompts. Configuration is environment-driven: `GITHUB_OWNER` and `GITHUB_REPO` are required, `GITHUB_BRANCH` defaults to `main`, `GITHUB_PATH` scopes to a subdirectory, and `GITHUB_TOKEN` is strongly recommended — without one you are on GitHub's unauthenticated limit of 60 requests/hour instead of 5,000, and each directory fetch costs one. `CACHE_TTL` defaults to 5 min and `CACHE_REFRESH_INTERVAL` to 1 min; raise them if you are hitting limits. Clone, `npm install`, `npm run build`, then point your client at `dist/index.js` by absolute path.
