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.
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.
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.
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/mcpOpen 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/mcpFor 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.
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.
claude mcp add --transport http upfling https://mcp.upfling.host/mcpclaude mcp add --transport http upfling https://mcp.upfling.host/mcp \
--header "Authorization: Bearer upf_YOUR_KEY_HERE"{
"mcpServers": {
"upfling": {
"type": "http",
"url": "https://mcp.upfling.host/mcp",
"headers": {
"Authorization": "Bearer ${UPFLING_API_KEY}"
}
}
}
}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.
{
"mcpServers": {
"upfling": {
"url": "https://mcp.upfling.host/mcp"
}
}
}{
"mcpServers": {
"upfling": {
"url": "https://mcp.upfling.host/mcp",
"headers": {
"Authorization": "Bearer upf_YOUR_KEY_HERE"
}
}
}
}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.
{
"mcpServers": {
"upfling": {
"serverUrl": "https://mcp.upfling.host/mcp",
"headers": {
"Authorization": "Bearer upf_YOUR_KEY_HERE"
}
}
}
}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.
{
"servers": {
"upfling": {
"type": "http",
"url": "https://mcp.upfling.host/mcp"
}
}
}{
"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}"
}
}
}
}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.
npx -y mcp-remote https://mcp.upfling.host/mcp \
--header "Authorization: Bearer upf_YOUR_KEY_HERE"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.
Open API keys →upf_YOUR_KEY_HERE
Once the client lists the Upfling tools, ask for something concrete.
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.
Your assistant may also list a sixteenth tool, report_missing_feature. It sends us one sentence when the assistant looks for something Upfling can't do yet, and changes nothing in your account.
API keys are the same ones the REST API.