Labsco
MCP SERVER

Smart Prompts MCP Server

by jezweb

Serve a prompt library out of a GitHub repository — searchable by tag and category, composable, and writable back to the repo.

Prompts, Skills & Instruction Packs
Summary
Your prompts live in git, and the search is honest about its ceiling.

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.

What it is

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.

What you get
  • 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
Requirements

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.