PatchHub
Also available as Markdown for agents

PatchHub MCP server

URL: https://patchhub.sh/mcp

Transport: Streamable HTTP. POST JSON-RPC, JSON responses, stateless (no session ID). Protocol version 2025-06-18.

Install

Claude Code

claude mcp add --transport http patchhub https://patchhub.sh/mcp

With a token instead of OAuth:

claude mcp add --transport http patchhub https://patchhub.sh/mcp --header "Authorization: Bearer phg_…"

Cursor

.cursor/mcp.json:

{ "mcpServers": { "patchhub": { "url": "https://patchhub.sh/mcp" } } }

With a token, add "headers": { "Authorization": "Bearer phg_…" }.

Other clients

Point any client that supports remote (HTTP) MCP servers at https://patchhub.sh/mcp.

If it can't do OAuth, send Authorization: Bearer <token> (create one at https://patchhub.sh/settings).

How sign-in works

PatchHub supports MCP OAuth 2.1.

Your client finds the authorization server through https://patchhub.sh/.well-known/oauth-protected-resource.

It opens a PatchHub page where you sign in and approve the client.

The client receives a normal PatchHub access token. It shows up in https://patchhub.sh/settings and you can revoke it there.

Tools

Every tool accepts an optional intent: the person's goal in their own words. Always set it. Never put secrets in it.

ToolArgumentsWhat it does
get_startedHow PatchHub works and what to do first. Call this first.
list_projectsowner?, query?Find projects.
get_projectproject, include_readme?Details, download variants and README.
create_projectname, description?, private?New empty project you maintain.
list_filesprojectFile paths in the main version.
read_fileproject, pathOne file's content.
list_patchesproject, status?Patches, ranked by popularity. status: published, merged, draft.
get_patchpatch_id, include_diff?Conversation, AI summary and optionally the diff.
create_patchproject, messageThe AI makes a change. Returns a job_id.
send_patch_messagepatch_id, messageRefine your draft. Returns a job_id.
publish_patchpatch_idSafety check, description, publish. Returns a job_id.
merge_patchpatch_idMaintainer: add it to the main version. Returns a job_id.
vote_patchpatch_id, voteUpvote (true) or remove your vote (false).
wait_for_jobjob_id, wait_seconds?Waits up to 55 s (default 50) for a job. Call again until done.
list_versionsprojectVersiond versions.
create_versionproject, name, notes?Maintainer: version the current main version.
downloadproject, version?, variant?, patches?A download link, or a build to wait for.
star_projectproject, star?Star (default) or unstar a project. Counts are public; who starred is private.
list_starrednoneProjects you starred (private to you).
list_commitsproject, limit?, skip?Commit history of main, newest first.
get_commitproject, shaOne commit's message and diff.
get_downloaddownload_idBuild status and download_url.
create_uploadprojectMaintainers: get a put_url to PUT a .zip of a new main version to.
upload_versionproject, upload_id, note?Maintainers: make the uploaded zip the new main version.
send_feedbackkind, message, request_id?Report a real problem once.

Results

Each result is JSON text with data and next.

next lists your next steps in plain English.

When a call fails, the result has isError: true and contains the error object (code, message, hint).

Error codes are listed in https://patchhub.sh/docs/api.md#errors.

Things to ask your agent

  • "Find the snake game on PatchHub and give me a version with the neon theme and wrap-around walls."
  • "Add a dark mode to patchhub/notes and download it for me."
  • "Start a PatchHub project for this folder and push it."
  • "Which patches for my project are the most popular? Merge the safe ones."
  • "Download patchhub/tasks for my Mac."

The full agent guide: https://patchhub.sh/AGENTS.md