Connect your assistant
Add the Composway MCP server to Claude Code, Claude, Cursor, VS Code, Codex, Zed, ChatGPT or any other MCP client.
Everything below uses one URL:
https://mcp.composway.ai/mcpIt speaks Streamable HTTP and authenticates with OAuth 2.1. Your client opens a browser window the first time it connects; sign in with your Composway account and approve the connection. There is no API key, and nothing to paste into a config file beyond the URL.
You need a Composway account first
The server acts as you. If you do not have an account yet, sign up at Composway and create a workspace before connecting - an assistant with no workspace can read very little.
Otherwise, find your client below. They differ only in which file the URL goes in.
Claude apps
In the Claude desktop or web app:
For users under Claude Team or Enterprise licenses, an organization Owner adds the connector first under Organization Settings → Connectors, and members then connect individually - a member cannot add it alone.
ChatGPT
Claude Code
Install the plugin. It sets up the connection and adds skills that drive the tools - how to triage a site, which read settles which finding, what each class of traffic loss means:
claude mcp add --transport http --scope user composway https://mcp.composway.ai/mcpThen run /mcp to sign in. Use --scope project instead to commit the server to
.mcp.json and share it with everyone on the repository:
{
"mcpServers": {
"composway": {
"type": "http",
"url": "https://mcp.composway.ai/mcp"
}
}
}Codex
Add the server, then sign in:
codex mcp add composway --url https://mcp.composway.ai/mcp
codex mcp login composwaycodex mcp login is a separate step, and it is the one people miss - without it the
server is configured but unauthenticated, and every tool call fails. The equivalent
by hand:
[mcp_servers.composway]
url = "https://mcp.composway.ai/mcp"Use .codex/config.toml in a trusted project to scope it there.
Cursor
Use this Add to Cursor link, or write it yourself:
{
"mcpServers": {
"composway": {
"type": "http",
"url": "https://mcp.composway.ai/mcp"
}
}
}Reload Cursor, then sign in when the browser opens. Use .cursor/mcp.json inside a
project to scope it to that project instead.
Zed
{
"context_servers": {
"composway": {
"url": "https://mcp.composway.ai/mcp"
}
}
}Leave out any headers - with no Authorization header configured, Zed runs the
standard MCP OAuth flow and prompts you to sign in.
Any other MCP client
Point it at the URL as a remote Streamable HTTP server and let it run its OAuth flow. Clients differ in what they call this - "custom connector", "remote MCP server", "add server by URL" - but the inputs are the same, and none of them need anything from you beyond the URL.
If a client still speaks only stdio, bridge it with
mcp-remote:
{
"mcpServers": {
"composway": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.composway.ai/mcp"]
}
}
}Check that it worked
Ask your assistant to call get_server_status. A healthy connection returns the
server version, the current tools schema version, and your signed-in identity. If
it reports you as unauthenticated, the OAuth flow did not complete - reconnect.
Then ask it to call list_workspaces. That is the id you will need for nearly
everything else.
Start each session with get_server_status
The tool surface changes as the product does. get_server_status reports a
schemaVersion; when it differs from what your client cached, the client
should re-run tool discovery. Well-behaved clients do this on their own -
the server also emits a tools/list_changed notification - but a long-lived
session that skips it can end up calling a tool with a stale schema.