$npx -y skills add indranilbanerjee/contentforge --skill cf-connectSet up an MCP connector with step-by-step instructions. Use to connect Notion, Canva, Webflow, etc.
| 1 | # /contentforge:cf-connect — Guided Connector Setup |
| 2 | |
| 3 | Set up a specific MCP integration for ContentForge with step-by-step instructions tailored to the connector's transport type. Handles HTTP connectors (OAuth-based), npx connectors (API keys, environment variables, `.mcp.json` entry), unknown connector names (fuzzy matching), and post-setup verification. |
| 4 | |
| 5 | ## The ground truth about connectors |
| 6 | |
| 7 | ContentForge ships with an **empty `.mcp.json`** (`"mcpServers": {}`). This is deliberate (v3.9.0 Cowork-safety decision): no connector auto-connects when the plugin is installed. **Every connector is opt-in** — the user adds it to `.mcp.json` (or connects it at the platform level in Cowork/Desktop Settings → Integrations). |
| 8 | |
| 9 | Never claim a connector is pre-wired or already connected. All status claims must come from running `python scripts/connector-status.py` — never from this file or from memory. |
| 10 | |
| 11 | ## When to Use |
| 12 | |
| 13 | Use `/contentforge:cf-connect <name>` when: |
| 14 | - You want to connect a specific service (e.g., `/contentforge:cf-connect wordpress`) |
| 15 | - A skill told you a connector is missing and suggested using this command |
| 16 | - You're setting up a new ContentForge installation and configuring integrations |
| 17 | - You need the exact environment variables and `.mcp.json` entry for an npx connector |
| 18 | - You want to verify an existing connector is working correctly |
| 19 | |
| 20 | ## What This Command Does |
| 21 | |
| 22 | 1. **Look Up Connector** — Find the connector in the registry, handle typos and close matches |
| 23 | 2. **Check Current Status** — Determine if already configured or needs setup |
| 24 | 3. **Present Setup Instructions** — Tailored to transport type (HTTP vs npx) |
| 25 | 4. **Guide Credential Acquisition** — Where to get API keys, which permissions to set |
| 26 | 5. **Provide .mcp.json Entry** — Ready-to-paste configuration |
| 27 | 6. **Verify After Setup** — Confirm environment variables are set and configuration is valid |
| 28 | |
| 29 | ## Required Inputs |
| 30 | |
| 31 | **Required:** |
| 32 | - **Connector name** — The service to connect (e.g., `notion`, `wordpress`, `google-sheets`, `canva`) |
| 33 | - Fuzzy matching is supported: `wp` matches `wordpress`, `gsheets` matches `google-sheets`, `ga` matches `google-analytics` |
| 34 | |
| 35 | **Optional:** |
| 36 | - **Environment** — `cowork` or `claude-code` (auto-detected if not specified) |
| 37 | |
| 38 | ## What Happens |
| 39 | |
| 40 | ### Step 1: Look Up Connector (Instant) |
| 41 | |
| 42 | Run the setup guide lookup: |
| 43 | |
| 44 | ``` |
| 45 | python scripts/connector-status.py --action setup-guide --name <connector> |
| 46 | ``` |
| 47 | |
| 48 | This returns: |
| 49 | - Connector metadata (name, category, description, transport type) |
| 50 | - Whether it's already configured in this installation |
| 51 | - Setup steps specific to the transport type |
| 52 | - Skills unlocked by this connector |
| 53 | - For npx: required environment variables and `.mcp.json` entry |
| 54 | |
| 55 | **If the connector name is not found**, check common aliases before showing an error: |
| 56 | |
| 57 | | Input | Matches To | |
| 58 | |-------|-----------| |
| 59 | | `wp`, `wordpress` | `wordpress` | |
| 60 | | `gsheets`, `sheets`, `google-sheets` | `google-sheets` | |
| 61 | | `gdrive`, `drive`, `google-drive` | `google-drive` | |
| 62 | | `ga`, `ga4`, `google-analytics` | `google-analytics` | |
| 63 | | `gsc`, `search-console` | `google-search-console` | |
| 64 | | `gcal`, `calendar` | `google-calendar` | |
| 65 | | `x`, `twitter` | `twitter-x` | |
| 66 | | `li`, `linkedin` | `linkedin-publishing` | |
| 67 | | `ig`, `insta` | `instagram` | |
| 68 | | `hs`, `hubspot` | `hubspot-cms` | |
| 69 | | `sarvam` | `sarvam-ai` | |
| 70 | |
| 71 | If no match is found after alias lookup, run `python scripts/connector-status.py --action list-available` and present the actual list. |
| 72 | |
| 73 | ### Step 2: Check Current Status (Instant) |
| 74 | |
| 75 | ``` |
| 76 | python scripts/connector-status.py --action check --name <connector> |
| 77 | ``` |
| 78 | |
| 79 | This returns `connected` or `not_connected`, plus (for npx connectors) which env vars are set vs missing. Render exactly what the script reports. |
| 80 | |
| 81 | **If already configured:** confirm to the user, list the skills it enables (from the script JSON), and stop — no action needed. |
| 82 | |
| 83 | **If not configured, proceed to Step 3.** |
| 84 | |
| 85 | ### Step 3: Present Setup Instructions |
| 86 | |
| 87 | Instructions differ based on transport type. Both types require the user to add an entry to `.mcp.json` (or connect at the platform level) — nothing is pre-wired. |
| 88 | |
| 89 | #### HTTP Connectors (e.g., Notion, Canva, Figma, Webflow, Slack, Gmail, Google Calendar, Ahrefs) |
| 90 | |
| 91 | HTTP connectors are the easiest: one `.mcp.json` entry, no API keys for OAuth-based ones, and they work in **both Cowork and Claude Code**. |
| 92 | |
| 93 | Setup pattern to walk the user through: |
| 94 | |
| 95 | 1. **Get the verified endpoint URL.** Use the endpoint from the setup-guide script output, cross-checked against `.mcp.json.connectors-reference` (the plugin's catalog of verified HTTP endpoints). Do not guess endpoint URLs from memory — unverified URLs waste the user's time. |
| 96 | 2. **Add the entry to `.mcp.json`** in the plugin root: |
| 97 | ```json |
| 98 | "notion": { |
| 99 | "type": "http", |
| 100 | "url": "<verified endpoint from the reference file>" |
| 101 | } |
| 102 | ``` |
| 103 | In Cowork |