Upfling.host
Instant static website hosting
Documentation
MCP SETUP
Connect AI tools
Give Claude or ChatGPT a live Upfling deploy. Describe the site; the assistant publishes it. Coding tools like Claude Code, Cursor, Windsurf, and VS Code connect the same way.
Server
- URL
- https://mcp.upfling.host/mcp
- Auth
- Sign in with your Upfling account, or an API key
One endpoint for every client. Signing in through the client uses OAuth, so no secret ever touches a config file. An API key works anywhere you can set a header.
Deploying from a pipeline instead? You can call the REST API from CI with the same key.
1
Step 1
Connect your client
Start with Claude or ChatGPT: paste one URL, sign in, and you're connected. Nothing to install. The coding tools further down take a short config snippet instead.
Claude and Claude Desktop
Open Settings, then Connectors, then Add custom connector. Name it Upfling, paste the URL below, and sign in when Claude asks. Nothing else to fill in: Claude registers itself and Upfling issues the token.
Upfling is also listed in Claude's connector directory, which does the same setup without the URL. See what the connector does.
https://mcp.upfling.host/mcp
ChatGPT
Open Settings, then Connectors, then Create. Paste the URL below and sign in when ChatGPT asks. In a normal chat and in Deep Research, ChatGPT can read your sites: it searches them and fetches a page or a file. To publish and edit from ChatGPT, turn on Developer Mode under Settings, then Connectors; it asks before every write.
https://mcp.upfling.host/mcp
Coding tools
For people who work in a terminal or an editor. Signing in is still the default; the key form follows where the tool supports headers. Each one is configured with a JSON file. If a client will not start after you paste the block, check that the JSON parses before you look anywhere else.
Claude Code
One command adds the server; then type /mcp inside Claude Code, pick upfling, and sign in. If you'd rather not sign in, pass a key as a header, or commit the JSON as .mcp.json and keep the key in an UPFLING_API_KEY environment variable.
Terminal
claude mcp add --transport http upfling https://mcp.upfling.host/mcp
Terminal
claude mcp add --transport http upfling https://mcp.upfling.host/mcp \
--header "Authorization: Bearer upf_YOUR_KEY_HERE"
.mcp.json
{
"mcpServers": {
"upfling": {
"type": "http",
"url": "https://mcp.upfling.host/mcp",
"headers": {
"Authorization": "Bearer ${UPFLING_API_KEY}"
}
}
}
}
Cursor
Save as .cursor/mcp.json in your project, or ~/.cursor/mcp.json to use it everywhere. Cursor prompts you to sign in; add the headers block instead if you'd rather use a key.
.cursor/mcp.json
{
"mcpServers": {
"upfling": {
"url": "https://mcp.upfling.host/mcp"
}
}
}
.cursor/mcp.json
{
"mcpServers": {
"upfling": {
"url": "https://mcp.upfling.host/mcp",
"headers": {
"Authorization": "Bearer upf_YOUR_KEY_HERE"
}
}
}
}
Windsurf
Add to ~/.codeium/windsurf/mcp_config.json and put your API key in place of upf_YOUR_KEY_HERE; Windsurf's sign-in support isn't verified, so this one uses the key form. Windsurf calls the field serverUrl, not url.
~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"upfling": {
"serverUrl": "https://mcp.upfling.host/mcp",
"headers": {
"Authorization": "Bearer upf_YOUR_KEY_HERE"
}
}
}
}
VS Code (Copilot)
Save as .vscode/mcp.json. VS Code prompts you to sign in. The second form uses an inputs block so VS Code asks for the key once and keeps it in its own secret store, and nothing lands in git.
.vscode/mcp.json
{
"servers": {
"upfling": {
"type": "http",
"url": "https://mcp.upfling.host/mcp"
}
}
}
.vscode/mcp.json
{
"inputs": [
{
"type": "promptString",
"id": "upfling-api-key",
"description": "Upfling API key",
"password": true
}
],
"servers": {
"upfling": {
"type": "http",
"url": "https://mcp.upfling.host/mcp",
"headers": {
"Authorization": "Bearer ${input:upfling-api-key}"
}
}
}
}
Other clients
Any client that speaks Streamable HTTP works with the URL at the top of this page, signing in through OAuth or sending an API key header. Clients that can do neither can go through mcp-remote.
Terminal
npx -y mcp-remote https://mcp.upfling.host/mcp \
--header "Authorization: Bearer upf_YOUR_KEY_HERE"
2
Step 2
Or use an API key
For CI, scripts, or a client that can't open a browser. Create a key on the API keys page and copy it; you only see it once. Wherever a snippet shows the placeholder below, paste your key.
upf_YOUR_KEY_HERE
3
Step 3
Try a prompt
Once the client lists the Upfling tools, ask for something concrete.
- Deploy this HTML as a live site called portfolio.
- List my Upfling sites and tell me which ones are still pending.
- Fix the typo in index.html on my-portfolio and redeploy.
- How much storage am I using, and how many sites can I still create?
What the assistant can do
Fifteen tools. The assistant picks them itself, so you never type a tool name, but knowing what exists helps you ask for the right thing.
Sites
- list_sites
- Every site on the account, with URL and status.
- get_site
- Details for one site: URL, status, and when it last changed.
- create_site
- Publish a new site from inline text files.
- update_site
- Rename a site, change its subdomain, set a password or homepage.
- delete_site
- Move a site to trash, or delete it for good.
Files
- write_site_files
- Add or overwrite specific files. Everything else stays.
- replace_site_files
- Swap the whole file set. Files not in the call are removed.
- read_site_file
- Read one file back, inline or as a short-lived link.
- list_site_files
- List the files on a site with size and type.
- delete_site_files
- Remove one file. The site stays live.
Large files
- request_upload
- Reserve upload URLs for binary files or anything over 1 MB.
- confirm_upload
- Publish an uploaded batch once every file is in place.
Search
- search
- Find your sites and files by name, title, description, domain, or path. ChatGPT starts here.
- fetch
- Read one search result: a site summary with its file list, or a file's content.
Account
- get_account_info
- Plan, site count, storage used, and what is left.
Limits and notes
- Inline files: up to 200 files per call, 1 MB per file, text only (HTML, CSS, JS, SVG, JSON).
- Images, fonts, PDFs, and anything over 1 MB go through request_upload and confirm_upload: the assistant asks for presigned upload URLs, uploads the bytes to them itself, then confirms the batch.
- Plan limits apply exactly as in the dashboard: 2 sites and 25 MB on Free, more on paid plans.
- Rate limits are shared with the REST API: 60 requests a minute on Free, 300 on Lite and Pro, 600 on Business.
- Signing in grants the client sites:read and sites:write for your account only. API keys are the same upf_ keys the REST API uses; revoke one on the API keys page and every client using it stops within seconds.
If something fails
- The sign-in page never opens
- The client couldn't reach the server or is an older build without OAuth support. Check the URL ends in /mcp, update the client, or use the API key form for now.
- 401 Unauthorized
- The sign-in expired or the key is wrong, revoked, or missing its upf_ prefix. Sign in again, or create a new key on the API keys page and update the config.
- insufficient_scope on a write
- You approved read access only. Remove the server from the client and add it again, then approve both scopes on the consent screen.
- 429 Too Many Requests
- You hit the per-minute limit for your plan. Wait for the Retry-After header to pass, or move to a plan with a higher limit.
- The assistant says it has no Upfling tools
- Restart the client after editing its config. Most clients read MCP settings only on startup.
API keys are the same ones the REST API.
{"@context":"https://schema.org","@type":"Organization","@id":"https://upfling.host/#organization","name":"Upfling","legalName":"Upfling","url":"https://upfling.host/","logo":"https://upfling.host/logo512.png","contactPoint":[{"@type":"ContactPoint","contactType":"customer support","email":"support@upfling.host"}],"sameAs":["https://x.com/upflinghost"]}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://upfling.host/"},{"@type":"ListItem","position":2,"name":"MCP Setup","item":"https://upfling.host/docs/mcp"}]}