Coding agents and IDEs
Every client here speaks Streamable HTTP, so each one connects straight to the URL. Most sign in with OAuth on first use; the key alternative is for headless runs and CI. Keep a key in an environment variable, never in a file you commit.
The check is the same everywhere: ask "What's my Weir usage?" The agent should call get_usage,
which is free.
Claude Code
claude mcp add --transport http weir https://api.weirapp.io/mcpThen run /mcp inside Claude Code and choose Weir to sign in. A browser opens; approve the
connection.
With a key, for CI, claude -p, and anything without a browser:
claude mcp add --transport http weir https://api.weirapp.io/mcp --header "Authorization: Bearer $WEIR_API_KEY"Your shell expands $WEIR_API_KEY before Claude Code sees it, so the key itself is saved in Claude
Code's settings. To keep it out of every file, use a project .mcp.json instead. Claude Code
expands ${WEIR_API_KEY} when it connects:
{
"mcpServers": {
"weir": {
"type": "http",
"url": "https://api.weirapp.io/mcp",
"headers": {
"Authorization": "Bearer ${WEIR_API_KEY}"
}
}
}
}The Claude Agent SDK cannot open a browser either, so it takes the same header. Pass these options
to query():
const options = {
mcpServers: {
weir: {
type: "http",
url: "https://api.weirapp.io/mcp",
headers: { Authorization: `Bearer ${process.env.WEIR_API_KEY}` },
},
},
allowedTools: ["mcp__weir__*"],
};Check: claude mcp list shows weir as connected. Then ask "What's my Weir usage?"
Codex
One config serves the Codex CLI, the IDE extension, and the ChatGPT desktop app. In
~/.codex/config.toml:
[mcp_servers.weir]
url = "https://api.weirapp.io/mcp"Then sign in once:
codex mcp login weirWith a key, name the environment variable that holds it instead:
[mcp_servers.weir]
url = "https://api.weirapp.io/mcp"
bearer_token_env_var = "WEIR_API_KEY"Check: codex mcp list shows weir. Then ask "What's my Weir usage?"
Cursor
In ~/.cursor/mcp.json, or .cursor/mcp.json for one project:
{
"mcpServers": {
"weir": {
"url": "https://api.weirapp.io/mcp"
}
}
}Or add it to Cursor in one click. Cursor asks you to sign in the first time it connects.
Cursor uses OAuth with Weir. It ignores an Authorization header in this file while the server
offers sign-in, so a key here does nothing.
Check: the server shows as connected in Cursor's MCP settings. Then ask "What's my Weir usage?"
VS Code
GitHub Copilot in VS Code. In .vscode/mcp.json, or your user mcp.json. The top-level key is
servers, and the transport has to be stated:
{
"servers": {
"weir": {
"type": "http",
"url": "https://api.weirapp.io/mcp"
}
}
}Or from a terminal:
code --add-mcp '{"name":"weir","type":"http","url":"https://api.weirapp.io/mcp"}'Start the server and sign in when VS Code asks.
With a key, let VS Code prompt for it so it never sits in the file:
{
"inputs": [
{
"type": "promptString",
"id": "weir-api-key",
"description": "Weir API key",
"password": true
}
],
"servers": {
"weir": {
"type": "http",
"url": "https://api.weirapp.io/mcp",
"headers": {
"Authorization": "Bearer ${input:weir-api-key}"
}
}
}
}Check: ask Copilot in agent mode "What's my Weir usage?"
Devin Desktop
Windsurf is now Devin Desktop, and its MCP config moved. In ~/.config/devin/mcp_config.json, or
%APPDATA%\devin\mcp_config.json on Windows:
{
"mcpServers": {
"weir": {
"serverUrl": "https://api.weirapp.io/mcp"
}
}
}Devin Desktop signs in on first use. With a key, add a header that reads the environment:
{
"mcpServers": {
"weir": {
"serverUrl": "https://api.weirapp.io/mcp",
"headers": {
"Authorization": "Bearer ${env:WEIR_API_KEY}"
}
}
}
}Cascade allows 100 tools in total across all servers.
Check: ask Cascade "What's my Weir usage?"
Gemini CLI
gemini mcp add --transport http -s user weir https://api.weirapp.io/mcpGemini CLI signs in when the server first asks for it. Run /mcp auth weir to sign in again.
With a key:
gemini mcp add --transport http -s user --header "Authorization: Bearer $WEIR_API_KEY" weir https://api.weirapp.io/mcpGemini CLI names the tools mcp_weir_<tool>.
Check: ask "What's my Weir usage?"
Zed
In Zed's settings.json:
{
"context_servers": {
"weir": {
"url": "https://api.weirapp.io/mcp"
}
}
}Zed signs in with OAuth. To use a key instead, add
"headers": { "Authorization": "Bearer weir_live_..." } to the entry. Zed then skips sign-in, and
the key sits in the file as written.
Check: ask the agent panel "What's my Weir usage?"
Cline
In Cline's MCP settings file, cline_mcp_settings.json:
{
"mcpServers": {
"weir": {
"type": "streamableHttp",
"url": "https://api.weirapp.io/mcp"
}
}
}The type line matters. Without it Cline uses the older SSE transport and cannot connect. Cline
signs in on first use.
With a key, from the Cline CLI:
cline mcp add weir https://api.weirapp.io/mcp --transport http --header "Authorization: Bearer $WEIR_API_KEY" --yesCheck: ask "What's my Weir usage?"
Goose
In ~/.config/goose/config.yaml:
extensions:
weir:
name: Weir
type: streamable_http
uri: https://api.weirapp.io/mcp
enabled: true
timeout: 300Or add it to Goose in one click. Goose signs in on first use.
With a key, add a header and let Goose read the variable:
extensions:
weir:
name: Weir
type: streamable_http
uri: https://api.weirapp.io/mcp
headers:
Authorization: "Bearer ${WEIR_API_KEY}"
env_keys: [WEIR_API_KEY]
enabled: true
timeout: 300Check: ask "What's my Weir usage?"
Continue
Continue's IDE extensions sign in with OAuth only over SSE, so with Weir they use a key. In
config.yaml:
mcpServers:
- name: Weir
type: streamable-http
url: https://api.weirapp.io/mcp
apiKey: ${{ secrets.WEIR_API_KEY }}Continue sends apiKey as Authorization: Bearer <key>. It reads secrets from its .env files,
not from your shell, so put WEIR_API_KEY there.
Check: ask "What's my Weir usage?"
Anything else
A client that can only start local stdio servers can reach Weir through
mcp-remote, a third-party bridge that runs the sign-in
itself:
{
"mcpServers": {
"weir": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.weirapp.io/mcp"]
}
}
}Every client above connects directly, so none of them needs it.