EVERY CONFIG FORMAT
No two of these clients want the same shape.
Adding the same remote MCP server to five editors takes five different config files in four different shapes. Worse, the common mistakes here do not throw: a wrong key name usually means the server quietly never appears, with no error to search for.
This page is the whole set side by side. The address is the same everywhere:
https://app.astryke.com/mcpWhat differs, at a glance
| Client | File | Top-level key | URL key |
|---|---|---|---|
| Claude Code | no file, a CLI command | n/a | n/a |
| Codex CLI | ~/.codex/config.toml | mcp_servers | url |
| VS Code with Copilot | MCP: Open User Configuration | servers | url |
| Cursor | ~/.cursor/mcp.json | mcpServers | url |
| Devin Desktop | ~/.codeium/windsurf/mcp_config.json | mcpServers | serverUrl |
The two that catch people: VS Code is the only one using servers rather than mcpServers, and Devin Desktop is the only one using serverUrl rather than url. Neither reports an error when it is given the other spelling.
The blocks themselves
Claude Code
Anywhere. This is a command, not a file.
claude mcp add --transport http --scope user astryke-hub https://app.astryke.com/mcpThen: The first call opens a browser to approve. No API key, nothing to paste back. Full setup for Claude Code.
Codex CLI
~/.codex/config.toml
[mcp_servers.astryke-hub]
url = "https://app.astryke.com/mcp"
auth = "oauth"Then: Run codex mcp login astryke-hub. A browser opens to approve. Full setup for Codex CLI.
VS Code with Copilot
Command palette, then "MCP: Open User Configuration"
{
"servers": {
"astryke-hub": {
"type": "http",
"url": "https://app.astryke.com/mcp"
}
}
}Then: Open Copilot Chat and switch the mode dropdown to Agent. MCP tools do not appear in Ask or Edit mode. Full setup for VS Code with Copilot.
Cursor
~/.cursor/mcp.json for every project, or .cursor/mcp.json for just this one
{
"mcpServers": {
"astryke-hub": {
"type": "http",
"url": "https://app.astryke.com/mcp"
}
}
}Then: In the app: Settings, then Tools and MCP, and sign in from there. Full setup for Cursor.
Devin Desktop (formerly Windsurf)
~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"astryke-hub": {
"serverUrl": "https://app.astryke.com/mcp"
}
}
}Then: Open the Cascade panel, find MCP Servers in its settings, and refresh. Sign-in happens from there. Full setup for Devin Desktop (formerly Windsurf).
Anything else
There is no sample block here for other clients, deliberately. Every one so far has wanted a different shape, and a fourth guess would be worse than stating what the server needs and letting you map it onto your own client’s format:
URL: https://app.astryke.com/mcp
Transport: Streamable HTTP (remote, not stdio)
Auth: OAuth, discovered from the 401 this endpoint
returns and from /.well-known/oauth-protected-resourceThere is no API key to issue and no token to paste. An unauthenticated request gets back a 401 carrying the authorization server in a WWW-Authenticate header, and your client takes it from there. Registration is dynamic, so nothing has to be set up on our side for your editor first.
Two things that are true of all of them
The server address is not a sign-in page. Opening https://app.astryke.com/mcp in a browser gets you an API endpoint. If you are being asked to authorize something by hand, the config step did not take.
Registering the server is only half of it. MCP is pull-only, so your agent now can read your board and has no reason to. Each client reads a different file at the start of a session, and putting a standing instruction in it is what turns a connection into something that gets used:
- Claude Code
~/.claude/CLAUDE.md - Codex CLI
~/.codex/AGENTS.md - VS Code with Copilot
.github/copilot-instructions.md - Cursor
.cursor/rules/astryke.mdc - Devin Desktop (formerly Windsurf)
the rules panel in Cascade
The text to put in it is on each client’s own page. One warning that applies to all of them: on Windows, if your agent writes that file through PowerShell, a backtick before a letter is an escape character and will silently remove part of a tool name. Read the file back before trusting it.
Not working? Troubleshooting.