GitHub
GitHub’s official server lets AI read and manage code, issues and pull requests in your account. Use GitHub’s hosted version or run it locally with Docker.
Description from the maker (original English)
Host files from coding agents; stage on a branch and attach to GitHub PRs.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
UPLOADS_TOKEN, UPLOADS_WORKSPACE, UPLOADS_API_URL, AuthorizationValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"uploads": {
"command": "npx",
"args": [
"-y",
"@buildinternet/uploads",
"mcp"
],
"env": {
"UPLOADS_TOKEN": "your-value",
"UPLOADS_WORKSPACE": "your-value",
"UPLOADS_API_URL": "your-value"
}
}
}
}Run this in your terminal
claude mcp add --transport http uploads https://agents.uploads.sh/mcp --header 'Authorization: your-value'claude mcp add uploads --env UPLOADS_TOKEN=your-value --env UPLOADS_WORKSPACE=your-value --env UPLOADS_API_URL=your-value -- npx -y @buildinternet/uploads mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"uploads": {
"url": "https://agents.uploads.sh/mcp",
"headers": {
"Authorization": "your-value"
}
}
}
}Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"uploads": {
"command": "npx",
"args": [
"-y",
"@buildinternet/uploads",
"mcp"
],
"env": {
"UPLOADS_TOKEN": "your-value",
"UPLOADS_WORKSPACE": "your-value",
"UPLOADS_API_URL": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"uploads": {
"type": "http",
"url": "https://agents.uploads.sh/mcp",
"headers": {
"Authorization": "your-value"
}
}
}
}Paste into .vscode/mcp.json in your project
{
"servers": {
"uploads": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@buildinternet/uploads",
"mcp"
],
"env": {
"UPLOADS_TOKEN": "your-value",
"UPLOADS_WORKSPACE": "your-value",
"UPLOADS_API_URL": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.
Your choice stays on this device in a cookie; no account needed.
UPLOADS_WORKSPACE envUPLOADS_API_URL envAuthorization secret HTTP headerThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
The server asks you to sign in before it lists its tools.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026
The registry name was verified against the domain uploads.sh (the registry checks domain ownership)
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Responded in 546 ms (HTTP 401)
Declares OAuth sign-in, so your AI app can take you to log in
Not checked yet; we read the tool list when we check the endpoint
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: UPLOADS_TOKEN, Authorization
Either way works: install it on your computer or connect to the cloud version.
The GitHub repo last changed –, and the latest version (0.62.1) reached the registry 2 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
In the same category: GitHub, Desktop Commander, Cloudflare MCP
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
GitHub’s official server lets AI read and manage code, issues and pull requests in your account. Use GitHub’s hosted version or run it locally with Docker.
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
uploads
The missing upload command for coding agents.
Capture screenshots, recordings, and other artifacts as you work: test reports, logs, JSON, PDFs, zips. When the pull request opens, uploads.sh puts them in one tidy comment that updates automatically on each revision. Hosted uploads.sh is free to start. Connect your own bucket — Cloudflare R2 or any S3-compatible provider — so storage in that bucket is unmetered, or self-host the open-source service.
uploads.sh · Docs · npm → · Quick start · What it looks like · Screenshots in CI · What's in this repo · Develop
Under active development. uploads.sh is being built in the open, so APIs can still change. Feedback is welcome — open an issue.
uploads hosts the artifacts coding agents produce at stable public URLs they can use in pull requests and issues: screenshots and screen recordings, but also test reports, logs, JSON, CSV, Markdown, PDFs, and zip archives (the full list is under Plans & limits). On a branch, uploads put stages each file as soon as it is ready. When the pull request opens, uploads.sh promotes the staged files into one managed comment.
GitHub's own attachments work from a browser and, since GitHub CLI 2.99 (September 2026), from gh … --attach, but only once a pull request or issue exists, and the files stay behind GitHub's own hosting, where they cannot be embedded or fetched anywhere else. uploads.sh gives agents a stable public URL from the same terminal where they build and test the change, while the branch is still in progress; GitHub has no public API (yet) for that. The hosted MCP server does the same for agents that cannot run a command at all, taking files as bytes or a URL.
Keys are hash-free, so re-uploading the same filename overwrites in place and the URL never changes — every embed of it updates at once. Workspaces keep tenants (and their budgets and key policies) apart.
This repo is the source of the canonical deployment at uploads.sh: the API worker, auth worker, MCP server, the hosted read-gate Worker, the Astro web app, and the @buildinternet/uploads CLI (published to npm from packages/uploads).
One comment per PR, rewritten in place on every sync. Files tagged --state before and --state after pair into a side-by-side table; other images and video land below it, and non-media files (reports, logs, archives) list in a file table with their type and size.
The real comment on #436.
Pairing is by --meta path=… when several pairs share a comment (one before and one after per path), and falls back to filenames that differ only by a before/after token — hero-before.webp with hero-after.webp.
Everything you attach also lands in your workspace, grouped by where it came from — pages by path, projects by repo or app — and browsable from one place.
The screenshots view groups uploads by project and path.
Open any file for a share page: copy-ready embeds (Markdown, HTML, and more), the raw URL, and a delete button.
Each file's share page — copy-ready embeds, details, and delete.
Install the CLI and sign in once:
npm install --global @buildinternet/uploads
uploads login
Upload a file and tag the page it shows:
uploads put ./settings.png --meta path=/settings
On a branch, put stages the file automatically. Open the pull request however you normally would. The GitHub App promotes the staged files into one managed attachments comment.
Use the same commands for before-and-after evidence, an open pull request, a browser capture, or an annotated image:
# Pair two states from the same page in the pull request comment.
uploads put ./before.png --meta path=/settings --state before uploads put ./after.png --meta path=/settings --state after
uploads staged
uploads attach ./before.png ./after.png
uploads screenshot http://localhost:4321/settings --via local --annotate ./callouts.json
attach detects the repository and current PR through gh, uploads all files, and creates or updates that same one comment. On an issue it also keeps a Markdown issue artifact (and a gallery link, when there is one) unless the workspace or the repo turns that off. Without the GitHub App, run uploads attach --promote after opening the pull request to promote files that you staged earlier. All commands run under npx @buildinternet/uploads … without a global install.
Sign in with GitHub or a magic link, then create your own workspace or accept an invite into one — see enrollment. Hosted files are public URLs — private-repo attachments get non-guessable links (how that works), but anyone holding a URL can view the file. A file that looks like it shows a credential, ID, or card number is held for your review before it goes public, but don't rely on that: do not upload secrets or sensitive UI.
The GitHub App adds an uploads.sh check to pull requests that change UI files, next to your tests and builds. No workflow or Actions step is needed. Out of the box it only reports, so nobody is blocked. Turn on Require screenshots on UI changes in the workspace's Settings → GitHub, or set it for one repo in .uploads.yml, and the check fails until screenshots arrive:
comment:
check: require: [before-after, desktop, mobile] # or just [uploads]
The PR comment shows a checklist that ticks itself as files arrive. Images dragged into the PR on GitHub count too, so contributors without uploads.sh are never stuck, and a skip-uploads label skips a PR that needs no screenshots. Add uploads.sh as a required status check in branch protection to make it block merges. Setup, which files count as UI, and skip labels are in Require screenshots on pull requests.
The hosted MCP server runs at https://agents.uploads.sh/mcp and is listed in the MCP Registry as sh.uploads/mcp. Local stdio is uploads mcp on the same npm package.
# Claude Code
claude mcp add --transport http uploads https://agents.uploads.sh/mcp
codex mcp add uploads --url https://agents.uploads.sh/mcp
opencode mcp add uploads --url https://agents.uploads.sh/mcp
uploads install adds the agent skills and the MCP server, so future sessions can capture each visual milestone without being asked. The skills also install standalone into any agent runtime:
npx skills add buildinternet/uploads
That installs three skills: github-screenshots (visuals → PRs/issues), uploads-cli (full CLI reference), and annotate-screenshots (callouts and redaction on a capture).
On Claude Code or Codex, the plugin bundles the skills, the MCP server, and a pre-PR screenshot reminder. In Claude Code it also shows staged screenshots above the prompt and attaches them when the PR opens. On claude.ai and in Cowork, add uploads from the Claude directory. The same folder (plugins/claude/uploads) is the common agent-plugin layout, and it is submitted to the xAI plugin marketplace as uploads.
Full CLI usage, including annotations, managed comments, public galleries, and change feeds (repo-wide or one pull request), lives in docs/cli.md.
uploads feed create prints a live page of the screenshots on a repo:
uploads feed create --repo buildinternet/uploads.
REST routes are in docs/api.md.
| Path | What |
|---|---|
apps/ | The deployables: the REST API worker (api.uploads.sh), the optional public viewer, the auth worker, the remote MCP server, the Slack app (link previews and held-upload messages), the hosted read-gate Worker, and the Astro site at uploads.sh |
| packages/ | Shared code — most notably @buildinternet/uploads (the CLI, published to npm), @uploads/storage (the files-sdk adapter factory all storage
Only the beginning is shown; read the rest in the repo