Use Duct from your agent.
No token to copy.
Add this address to Claude Code, Codex, Cursor, VS Code, OpenCode, Claude or ChatGPT. Your browser opens on Duct, you click Allow, and your agent can read your projects and draft their details.
https://api.getduct.ai/mcp
Want Duct's own agent to call your MCP servers instead? That is the other direction: Your MCP servers in Duct →
How to connect your agent
Add it, allow it, ask it.
Add Duct to your agent
Give your agent the address above, with one command or one line of settings. The exact steps for each agent are below.
Sign in and click Allow
Your browser opens on Duct and asks whether your agent may use your account. Click Allow. There is no token to copy.
Ask it something
Try “Set up this product in Duct.” Your agent reads your repo and drafts the project's description, audience and competitors.
Setup by agent
Seven agents. One address.
Every agent connects to the same server. Pick yours for the exact steps.
Claude Code
- In your terminal, run:
claude mcp add --transport http --scope user duct https://api.getduct.ai/mcp
- In Claude Code, run
/mcp, pickductand chooseAuthenticate. - Your browser opens on Duct. Click Allow.
Codex
- In your terminal, run:
codex mcp add duct --url https://api.getduct.ai/mcp - Then sign in:
codex mcp login duct
- Your browser opens on Duct. Click Allow.
Cursor
- Add Duct to
~/.cursor/mcp.json:{ "mcpServers": { "duct": { "url": "https://api.getduct.ai/mcp" } } } - In Cursor's MCP settings, press the login prompt on the duct server.
- Your browser opens on Duct. Click Allow.
VS Code
- Open the Command Palette and run
MCP: Add Server. - Choose HTTP, paste the address and name it
duct:https://api.getduct.ai/mcp
- VS Code asks you to sign in the first time it uses Duct. Your browser opens on Duct. Click Allow.
OpenCode
- Add Duct to
opencode.json:{ "$schema": "https://opencode.ai/config.json", "mcp": { "duct": { "type": "remote", "url": "https://api.getduct.ai/mcp" } } } - Then sign in:
opencode mcp auth duct
- Your browser opens on Duct. Click Allow.
Claude, on claude.ai or Claude Desktop
- On claude.ai or in Claude Desktop, open Settings → Connectors and choose Add custom connector.
- Name it Duct and paste the address:
https://api.getduct.ai/mcp
- Press Connect. Duct opens in your browser. Click Allow.
ChatGPT
- In ChatGPT's settings, turn on developer mode.
- Add a connector with this address, and choose OAuth for authentication:
https://api.getduct.ai/mcp
- Duct opens in your browser. Click Allow.
Another agent? If it can add a remote MCP server by its address, give it the same one. If it can't sign in, use a token.
What your agent can do
It reads and drafts. You decide.
Duct gives your agent three tools today. Approving, applying and connecting stay with you, in Duct.
- List your projects.
- Read one project.
- Draft a project's description, audience and competitors from your repo or files.
- Approve or apply changes.
- Connect tools.
- See keys or credentials.
- Overwrite what you typed in Duct. A draft only fills blanks or replaces an earlier draft.
Every change shows in the project's activity.
Access
Every agent is listed. Disconnect any one.
You see every connected agent
In Duct, open Settings → Connect your AI agent. Every agent you allowed is there, and you can disconnect it. A disconnected agent stops on its next call.
No browser? Use a token.
For CI, a remote machine or an agent without sign-in. Create one on the same settings page, under No browser? Use a token. Your agent sends it as a header:
Authorization: Bearer duct_mcp_…
In Claude Code:
claude mcp add --transport http --scope user duct https://api.getduct.ai/mcp --header "Authorization: Bearer YOUR_TOKEN"
Troubleshooting
Stuck? Start here.
My browser never opened
Start the sign-in yourself: run /mcp in Claude Code, codex mcp login duct in Codex, or opencode mcp auth duct in OpenCode.
It says it couldn't register, or “does not support dynamic client registration”
Update your agent to its latest version and try again. If it still fails, connect with a token instead.
It worked, and now it gets a 401
You disconnected it in Duct, or its sign-in lapsed after 90 days without use. Sign in again from your agent.
I asked it to set up the project and nothing changed
A draft never overwrites what you typed in Duct. It only fills blank fields or replaces an earlier draft. Check the project page in Duct.
I host Duct myself
Use your own API address followed by /mcp, in place of https://api.getduct.ai/mcp.
Copied