mcp-setup ยท diff
git:20260603.ff934d9 to git:20260609.73a43e0
118 added, 24 removed. Audit A to A.
---
name: mcp-setup
- description: Add, authenticate, list, and remove MCP (Model Context Protocol) servers
- compatibility: "Designed for Vellum personal assistants"
+ description: Add, authenticate, list, and remove MCP (Model Context Protocol) servers โ connect any external tool or service that publishes an MCP endpoint to the assistant
+ compatibility: "Works on both the Vellum desktop app (local daemon) and the Vellum web app (platform-hosted). Auth flow differs by environment."
metadata:
emoji: "๐"
vellum:
category: "integrations"
display-name: "MCP Setup"
---
- Help users configure MCP servers so external tools (e.g. Linear, GitHub, Notion) become available in conversations.
+ Configure MCP servers to give the assistant access to any external tool or service that publishes an MCP endpoint.
- ## CLI Commands
+ **DO NOT** run exploratory commands. Do not check available CLI commands, search for bun/npx/node, or investigate transport types. Follow the steps below exactly and stop when done. (Looking up a service's MCP endpoint URL in its own documentation is allowed when the service is not in the recipe table, per Step 3.)
- All commands use `assistant mcp`. Run `list`, `add`, and `remove` via the `bash` tool โ they just read/write config and don't need host access. Run `auth` via `host_bash` because it binds a localhost OAuth callback server that the user's host browser must redirect back to.
+ ## When to Use
+ USE THIS SKILL WHEN:
+
+ - User asks to connect any external tool or service via MCP
+ - User asks "what MCP servers / integrations do I have?"
+ - An MCP tool returns an auth error โ run `assistant mcp auth <name>`
+ - User wants to disconnect an integration
+
+ ## Prefer Native OAuth Integration (check this first)
+
+ Many services have built-in OAuth integrations that are simpler and more reliable than MCP. Before setting up MCP, check whether the service already has a native OAuth provider:
+
+ ```
+ assistant oauth providers list
+ ```
+
+ If the service appears in that list, connect it natively instead of using MCP:
+
+ ```
+ assistant oauth connect <provider>
+ ```
+
+ **Only use MCP when:**
+
+ - The service is not in `assistant oauth providers list`
+ - The user explicitly asks to use MCP for a specific service
+ - The native OAuth integration fails or lacks features the user needs
+
+ ## Step 1 โ Detect your environment
+
+ **Before doing anything else**, determine which environment you are in.
+
+ Try `host_bash`:
+
+ ```
+ echo "desktop ok"
+ ```
+
+ - If it succeeds โ you are on the **desktop app**. Use `host_bash` for all commands, including `auth` (opens a local browser).
+ - If it is unavailable โ you are on the **web app** (or a cloud-hosted session). Use `bash` for all commands, including `auth` (the platform handles the browser redirect).
+
+ Both environments fully support MCP. The only difference is which tool runs the commands.
+
+ ## Step 2 โ Check the recipe table
+
+ **Check this table before doing anything else.** If the service is listed, run the command shown and do nothing else โ no exploration, no checking available commands, no looking up documentation.
+
+ | Service | Command | After? |
+ | --------------- | -------------------------------------------------------------------------------------- | ------------------------------- |
+ | Context7 (docs) | `assistant mcp add context7 -t streamable-http -u https://mcp.context7.com/mcp -r low` | Done โ no auth needed |
+ | Linear | `assistant mcp add linear -t streamable-http -u https://mcp.linear.app/mcp` | Run `assistant mcp auth linear` |
+ | Figma | `assistant mcp add figma -t streamable-http -u https://mcp.figma.com/mcp` | Run `assistant mcp auth figma` |
+
+ If the service is not in this table, go to Step 3.
+
+ ## Step 3 โ Unknown service
+
+ Find the MCP endpoint URL in the service's documentation, then run:
+
+ ```
+ assistant mcp add <name> -t streamable-http -u <url>
+ ```
+
+ Then run `assistant mcp list`. If it shows `! Needs authentication`, run `assistant mcp auth <name>`.
+
+ - On **desktop** โ run via `host_bash` (opens the local browser).
+ - On **web app** โ run via `bash` (the platform handles the browser redirect).
+
+ ---
+
+ ## Reference: All Commands
+
+ Run `list`, `add`, `remove`, and `reload` via `bash` on both environments. Run `auth` via `host_bash` on desktop, or via `bash` on the web app.
+
### List servers
```
assistant mcp list
+ assistant mcp list --json # machine-readable output
```
- Shows all configured servers with connection status, transport type, and URL.
+ Shows each server's connection status, transport, URL/command, and risk level. Status indicators:
+ - `โ` Connected
+ - `โ` Error or disabled
+ - `!` Needs authentication
+
### Add a server
```
- assistant mcp add <name> -t <transport-type> -u <url> [-r <risk>] [--disabled]
+ assistant mcp add <name> -t <transport> -u <url> [-r low|medium|high] [--disabled]
```
- - `<name>` - unique identifier (e.g. `linear`, `github`)
- - `-t` - transport type: `stdio`, `sse`, or `streamable-http`
- - `-u` - server URL (required for `sse`/`streamable-http`)
- - `-c` - command (required for `stdio`), `-a` for args
- - `-r` - risk level: `low`, `medium`, or `high` (default: `high`)
+ Transport types:
+ - `streamable-http` โ most modern remote servers (use this by default)
+ - `sse` โ legacy remote servers
+ - `stdio` โ local process: use `-c <command>` and `-a <args...>` instead of `-u`
+
+ Risk level (`-r`) controls approval prompts per tool call โ `low` auto-approves, `high` always prompts (default: `high`).
+
Examples:
```
assistant mcp add linear -t streamable-http -u https://mcp.linear.app/mcp
assistant mcp add context7 -t streamable-http -u https://mcp.context7.com/mcp -r low
assistant mcp add local-db -t stdio -c npx -a -y @my/mcp-server
```
### Authenticate (OAuth)
```
assistant mcp auth <name>
```
- Opens the user's browser for OAuth authorization. Only works for `sse`/`streamable-http` servers that require authentication. After the user completes login in the browser, tokens are saved automatically.
+ - On **desktop** โ run via `host_bash` (opens the user's local browser for OAuth login).
+ - On **web app** โ run via `bash` (the platform handles the browser redirect and saves tokens).
- Use this when:
+ Tokens are saved automatically. Use when:
- - A server shows `! Needs authentication` in `assistant mcp list`
+ - `assistant mcp list` shows `! Needs authentication`
- An MCP tool call fails with an auth/token error
- Setting up a new OAuth-protected server for the first time
### Remove a server
```
assistant mcp remove <name>
```
- Removes the server config and cleans up any stored OAuth credentials.
+ Removes config and cleans up stored OAuth credentials.
- ## After Changes
+ ### Reload
- After adding, removing, or authenticating a server, the user must **quit and relaunch the Vellum app** for changes to take effect. The app runs its own assistant process - `assistant daemon restart` only restarts the CLI assistant, which is a separate process.
+ ```
+ assistant mcp reload
+ ```
- Tell the user: "Please quit and relaunch the Vellum app, then start a new conversation."
+ Manually signals the assistant to reconnect all MCP servers from disk. Normally not needed โ the assistant detects changes automatically after `add`, `remove`, and `auth`. Use this only if a server's tools aren't appearing after ~10 seconds.
- ## When to Use
+ ## Advanced Configuration
- - User asks to connect/set up an external service via MCP
- - User asks "what MCP servers do I have?"
- - An MCP tool returns an auth error - offer to run `assistant mcp auth <name>`
- - User wants to remove an MCP integration
+ `mcp add` covers the common cases. For advanced options, edit `~/.vellum/workspace/config.json` directly under `mcp.servers.<name>`:
+
+ - `env` โ environment variables for stdio servers
+ - `headers` โ custom HTTP headers for remote servers
+ - `maxTools` โ per-server tool cap (default: 20)
+ - `allowedTools` / `blockedTools` โ tool name filters
+ - `globalMaxTools` โ total cap across all servers (default: 50)
+
+ ## SKILL COMPLETE WHEN
+
+ Match the completion condition to the task:
+
+ - **Add / authenticate:** the server appears in `assistant mcp list` with status `โ Connected` and the user confirms its tools are available in the conversation.
+ - **List:** the current servers (or the fact that none are configured) have been reported to the user.
+ - **Remove / disconnect:** `assistant mcp remove <name>` succeeds and the server no longer appears in `assistant mcp list`.