Use SteadyLink in Claude, ChatGPT, Cursor and more
Add SteadyLink to Claude, ChatGPT, Codex, Cursor, VS Code and other AI tools with one URL, so you can upload files and get permanent links from a chat.
On this page
SteadyLink works as a connector (an MCP server) in AI tools. Once it's added, you can ask for things like "upload this report and give me a link" or "replace the price list but keep the link", and the assistant does it in your workspace.
Pick your app to add SteadyLink in one click. Every other tool uses the same address, https://mcp.steadylink.io/mcp.
https://mcp.steadylink.io/mcpThe first time a tool uses it, a SteadyLink page opens in your browser. You sign in, pick the workspace the tool can use, choose whether it can change files or only read them, and select Allow.
Claude#
Works in claude.ai, Claude Desktop and the Claude mobile apps. A connector you add once shows up in all of them.
Add SteadyLink to Claude. The link opens Claude's add-connector dialog with the name and URL filled in, and you confirm it there.
To add it by hand:
Open connectors
In Claude, go to Customize > Connectors and select Add custom connector.
Paste the URL
Name it
SteadyLink, pastehttps://mcp.steadylink.io/mcpand select Add. Leave the OAuth fields empty.Connect
Select Connect, sign in to SteadyLink and pick a workspace. In a chat, turn SteadyLink on from the + menu under Connectors.
On the Free plan Claude allows one custom connector.
Claude Team and Enterprise. Members can't add custom connectors themselves. An Owner adds SteadyLink once for the organization with this prefilled link (or Organization settings > Connectors > Add > Custom > Web). Each member then finds it under Customize > Connectors and selects Connect to sign in with their own SteadyLink account.
Claude Code#
claude mcp add --transport http steadylink https://mcp.steadylink.io/mcpThen run /mcp inside Claude Code and choose SteadyLink to sign in. If you already added SteadyLink on claude.ai, Claude Code picks it up from your account and you can skip this.
To share it with your team through the repo, add it to .mcp.json instead:
{
"mcpServers": {
"steadylink": { "type": "http", "url": "https://mcp.steadylink.io/mcp" }
}
}ChatGPT#
SteadyLink isn't in the ChatGPT plugin directory yet. A listing is on the way, and until then you can add it as a custom server in developer mode.
Turn on developer mode
In ChatGPT, open Settings > Apps > Advanced settings and turn on Developer mode. On Business and Enterprise workspaces an admin may need to allow it first.
Add the server
Go to chatgpt.com/plugins, select the + button, then Add custom MCP server. Name it
SteadyLink, pastehttps://mcp.steadylink.io/mcpas the URL and choose OAuth for authentication.Connect
Accept the developer mode warning, select Create as a plugin, and sign in to SteadyLink when asked. In a new chat, type
@and pick SteadyLink.
If Add custom MCP server isn't there, your ChatGPT plan or workspace doesn't allow custom servers. OpenAI doesn't publish an exact plan list, and reports suggest some plans only allow read access for custom servers. ChatGPT is also the one app that can hand a file you attach in the chat straight to SteadyLink.
Codex#
The Codex CLI, the Codex IDE extension and the ChatGPT desktop app share one config file. Add this to ~/.codex/config.toml:
[mcp_servers.steadylink]
url = "https://mcp.steadylink.io/mcp"Or run codex mcp add steadylink --url https://mcp.steadylink.io/mcp. Then sign in:
codex mcp login steadylinkCursor#
Add to Cursor. Cursor asks you to confirm, then sends you to the SteadyLink sign-in page.
Or add it to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):
{
"mcpServers": {
"steadylink": { "url": "https://mcp.steadylink.io/mcp" }
}
}VS Code and GitHub Copilot#
Install in VS Code or Install in VS Code Insiders.
From a terminal:
code --add-mcp '{"name":"steadylink","type":"http","url":"https://mcp.steadylink.io/mcp"}'Or add it to .vscode/mcp.json. VS Code uses servers, not mcpServers:
{
"servers": {
"steadylink": { "type": "http", "url": "https://mcp.steadylink.io/mcp" }
}
}Kiro, Goose and LM Studio#
- Kiro. Add to Kiro, or add
"steadylink": { "url": "https://mcp.steadylink.io/mcp" }undermcpServersin~/.kiro/settings/mcp.json. This also covers Kiro CLI, which replaced the Amazon Q Developer CLI. - Goose. Add to Goose.
- LM Studio. LM Studio doesn't document OAuth sign-in, so it connects with an API key. Add to LM Studio, then open its
mcp.jsonand replaceslk_YOUR_KEYwith your key.
Other editors and agents#
These have no install link, so paste the config into the file named in each tab. Each tool spells the server entry a little differently.
Add to mcp_config.json (~/.config/devin/mcp_config.json, or %APPDATA%\devin\mcp_config.json on Windows). Windsurf is now Devin Desktop.
{
"mcpServers": {
"steadylink": { "serverUrl": "https://mcp.steadylink.io/mcp" }
}
}On Enterprise, MCP has to be turned on by an admin, and if your admin keeps an allowlist, its server ID must be steadylink, matching the key above.
Add to Zed's settings.json, or use Settings > AI > MCP Servers > Add Server > Add Remote Server. Leave out any Authorization header so Zed runs the sign-in.
{
"context_servers": {
"steadylink": { "url": "https://mcp.steadylink.io/mcp" }
}
}In AI Assistant, open Settings > Tools > AI Assistant > Model Context Protocol (MCP), select Add, choose HTTP, paste this and select Apply. JetBrains doesn't document how it handles sign-in, so if no SteadyLink page opens, use mcp-remote.
{
"mcpServers": {
"steadylink": { "url": "https://mcp.steadylink.io/mcp" }
}
}Use MCP Servers > Remote Servers with transport Streamable HTTP, or add this to cline_mcp_settings.json. Without type, Cline falls back to an older transport.
{
"mcpServers": {
"steadylink": { "type": "streamableHttp", "url": "https://mcp.steadylink.io/mcp" }
}
}Add to .roo/mcp.json in your project or to Roo's global mcp_settings.json. Roo's docs don't cover OAuth, so if no SteadyLink page opens, use mcp-remote.
{
"mcpServers": {
"steadylink": { "type": "streamable-http", "url": "https://mcp.steadylink.io/mcp" }
}
}Add to config.yaml. Continue only uses MCP tools in agent mode.
mcpServers:
- name: SteadyLink
type: streamable-http
url: https://mcp.steadylink.io/mcpGemini CLI was replaced by Antigravity CLI in June 2026. With Gemini CLI:
gemini mcp add --transport http steadylink https://mcp.steadylink.io/mcpAntigravity CLI reportedly reads ~/.gemini/antigravity-cli/mcp_config.json and needs serverUrl (a url key fails silently). That comes from migration guides, not Google's own docs, so check it if the server doesn't load.
{
"mcpServers": {
"steadylink": { "serverUrl": "https://mcp.steadylink.io/mcp" }
}
}Any other tool#
If a tool can add a remote MCP server by URL, give it https://mcp.steadylink.io/mcp. If it can only run local (stdio) servers, bridge to SteadyLink with mcp-remote, which needs Node.js 18 or later and opens the sign-in page itself. The command is npx -y mcp-remote https://mcp.steadylink.io/mcp, and in most config files it looks like this:
{
"mcpServers": {
"steadylink": { "command": "npx", "args": ["-y", "mcp-remote", "https://mcp.steadylink.io/mcp"] }
}
}Use an API key instead#
Scripts, CI jobs and headless agents can't open a browser to sign in. For those, use a workspace API key on a separate address:
https://mcp.steadylink.io/key/mcp
Authorization: Bearer slk_...Create the key in Dashboard > Developers > API keys (workspace admins and owners can do this) with the Read files scope, plus Change files if it should upload. For example, in Claude Code:
claude mcp add --transport http steadylink https://mcp.steadylink.io/key/mcp --header "Authorization: Bearer $STEADYLINK_API_KEY"The same address works with the Claude API MCP connector (pass the key as authorization_token) and with the OpenAI Responses API (pass it as authorization).
Keep in mind that an API key belongs to the workspace, not to a person, so its actions aren't tied to anyone's name, and ChatGPT doesn't accept API keys at all. Don't use the key address in an app that can sign in normally, because Cursor and some other apps ignore a configured header when the address also offers sign-in, which is why keys get their own address.
What it can do#
| Tool | What it does |
|---|---|
whoami | Says which account, workspace and plan the connection uses. |
list_files | Lists or searches files, with each file's link, size and version. |
get_file | Shows one file's details, permanent link and version history. |
get_usage | Shows how much storage is used and left, and the largest file you can upload. |
upload_file | Adds a new file. It never overwrites a file with the same name. |
replace_file | Puts a new version behind an existing link. |
finish_upload | Finishes an upload once the file has arrived and passed the malware scan, then returns the link. |
restore_version | Rolls a link back to an earlier version. |
If you connected with Read-only on, only the first four work. No tool can delete files or change workspace settings, and everything the assistant does follows your own role in the workspace.
Things to try:
- "Upload this CSV to SteadyLink and give me a permanent link."
- "Replace the price list PDF with this new one, but keep the link."
- "Which of my files are over 100 MB?"
- "The last replace was a mistake. Put the previous version back."
How uploads work#
AI apps pass files around in different ways, so SteadyLink accepts a file three ways and the assistant picks the one that fits.
- Small files (text, or a small file the assistant can read) go straight into the request.
- Links. If the file is already online, the assistant sends its address and SteadyLink fetches it. Files you attach in ChatGPT arrive this way.
- An upload page. For anything bigger, SteadyLink returns a one-time upload link. In Claude's apps you open it and drop the file in. Tools with a terminal, like Claude Code, Codex and Cursor, can send the file there themselves.
Every new file is scanned before its link goes live, the same as an upload from the dashboard.
Replacing keeps the link#
Replacing a file publishes a new version behind the same permanent link, so every page and message that uses the link shows the new file. Because that's the one change that affects people who already have the link, apps that support it (Claude does) ask you to confirm each replace. The previous version is kept, and restore_version puts it back.
Disconnect an app#
Open Dashboard > Developers > Connected apps and select Disconnect next to the app. It loses access on its next request. Workspace admins and owners see every connected app in the workspace, and members see their own. You can also remove SteadyLink inside the app, but disconnecting in SteadyLink is what cuts off access.
A connection is tied to one workspace. To switch workspaces, disconnect and connect again.
Troubleshooting#
- A workspace can't be picked. It's on the Hobby plan, or it requires single sign-on. Upgrade the workspace, or use the Sign in with single sign-on button on the sign-in page.
- An install button does nothing. The
cursor://,vscode:,goose://andlmstudio://links only work when the app is installed. Use the config shown next to the button instead. - Claude Team or Enterprise members can't add it. An Owner has to add SteadyLink for the organization first (see Claude).
- Cursor or Windsurf Enterprise blocks it. Your admin needs to allow
https://mcp.steadylink.io/mcp, and in Windsurf the server ID must besteadylink. - "Unverified app" on the sign-in page. SteadyLink shows that for apps it hasn't reviewed, along with where the app sends you back. Only allow it if you started the connection yourself.
- The assistant says it can't upload. The connection is read-only, or your workspace role can't change files. Disconnect and connect again with Read-only off, or ask a workspace admin for a different role.
- The app keeps asking you to sign in. Disconnect it in Connected apps, remove SteadyLink in the app, and add it again.