{"_id":"@brightfox/sf-mcp-setup","_rev":"4-279a2a6704414a2c646dd7079fdd213c","name":"@brightfox/sf-mcp-setup","dist-tags":{"latest":"0.3.6"},"versions":{"0.3.2":{"name":"@brightfox/sf-mcp-setup","version":"0.3.2","keywords":["salesforce","sfdx","sfdx-plugin","sf-plugin","mcp","model-context-protocol","claude","claude-desktop","cursor","ai","cli","plugin"],"author":{"name":"Brightfox","email":"info@brightfox.nl"},"license":"MIT","_id":"@brightfox/sf-mcp-setup@0.3.2","maintainers":[{"name":"jacobkr","email":"kris.jacobs@brightfox.eu"},{"name":"jaspersto","email":"tom.jaspers@brightfox.eu"},{"name":"alwinvandijken","email":"alwinvandijken@gmail.com"},{"name":"jowinwaaijer","email":"jowinw@gmail.com"}],"homepage":"https://bitbucket.org/brightfox/sf-mcp-setup","bugs":{"url":"https://bitbucket.org/brightfox/sf-mcp-setup/issues"},"dist":{"shasum":"0230087b68578134b869dee6604e269f7455155d","tarball":"https://registry.npmjs.org/@brightfox/sf-mcp-setup/-/sf-mcp-setup-0.3.2.tgz","fileCount":48,"integrity":"sha512-M50Arfb88tEyTnyzre0PJT2kn7dz9r4Dmc1ibhAu+r3+h1L8/U3ulbzVtv11QkM3JL1YL0kS5qzbwBag+fYgaA==","signatures":[{"sig":"MEYCIQD79QSvFLDpgDb7+GUVKCTQajlj+TSD4UH4cLEoTGHFNgIhAIfYkToLWG1DOYM066tnAd35r0ZU2yGY6afFKMXjvntY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120256},"main":"lib/index.js","type":"module","oclif":{"bin":"sf","topics":{"mcp":{"description":"Commands to configure MCP authentication for Salesforce"}},"dirname":"brightfox-sf-mcp-setup","commands":"./lib/commands","devPlugins":["@oclif/plugin-command-snapshot"],"topicSeparator":" "},"types":"lib/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a479ddcc230e46829706cee5cc0d97115b572a7d","scripts":{"lint":"eslint src --ext .ts","test":"vitest run","build":"tsc -p . --declaration","clean":"rm -rf lib","prepack":"npm run clean && npm run build && oclif manifest","postpack":"rm -f oclif.manifest.json","test:watch":"vitest"},"_npmUser":{"name":"jowinwaaijer","email":"jowinw@gmail.com"},"repository":{"url":"git+https://bitbucket.org/brightfox/sf-mcp-setup.git","type":"git"},"_npmVersion":"11.2.0","description":"SFDX CLI plugin to configure Salesforce MCP (Model Context Protocol) for Claude Desktop, Cursor, and other AI assistants","directories":{},"_nodeVersion":"22.14.0","dependencies":{"fs-extra":"^11.2.0","handlebars":"^4.7.8","@oclif/core":"^4.2.8","@salesforce/core":"^8.8.5","@inquirer/prompts":"^7.2.1","@salesforce/sf-plugins-core":"^12.2.2","@salesforce/source-deploy-retrieve":"^12.10.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"oclif":"^4.17.2","eslint":"^9.17.0","vitest":"^2.1.8","typescript":"^5.7.2","@oclif/test":"^4.1.8","@types/node":"^22.10.2","@types/fs-extra":"^11.0.4","@typescript-eslint/parser":"^8.18.2","@oclif/plugin-command-snapshot":"^5.2.28","@typescript-eslint/eslint-plugin":"^8.18.2"},"_npmOperationalInternal":{"tmp":"tmp/sf-mcp-setup_0.3.2_1767796197334_0.8788844319215257","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@brightfox/sf-mcp-setup","version":"0.3.3","keywords":["salesforce","sfdx","sfdx-plugin","sf-plugin","mcp","model-context-protocol","claude","claude-desktop","cursor","ai","cli","plugin"],"author":{"name":"Brightfox","email":"info@brightfox.nl"},"license":"MIT","_id":"@brightfox/sf-mcp-setup@0.3.3","maintainers":[{"name":"jacobkr","email":"kris.jacobs@brightfox.eu"},{"name":"jaspersto","email":"tom.jaspers@brightfox.eu"},{"name":"alwinvandijken","email":"alwinvandijken@gmail.com"},{"name":"jowinwaaijer","email":"jowinw@gmail.com"}],"homepage":"https://bitbucket.org/brightfox/sf-mcp-setup","bugs":{"url":"https://bitbucket.org/brightfox/sf-mcp-setup/issues"},"dist":{"shasum":"6c5e74a3f11fc90c2840c6b5dafeae84cbe7ec40","tarball":"https://registry.npmjs.org/@brightfox/sf-mcp-setup/-/sf-mcp-setup-0.3.3.tgz","fileCount":48,"integrity":"sha512-VVH4rlflESgSaTBTVDfJfTzhh3tA5ROvy+Tt53ArfIYJULW/tJ44GPM7Tj/L502UONbn3F3Y8tmvaBq0Gh9WuQ==","signatures":[{"sig":"MEYCIQDiKHsKP8Y8T0YesXJIp4QRqQlJkCi++zw/SEwgODOlEwIhAL6WzBDh3SuPAZ/U3VldDm9GeCvkKS0ZUdvNIiVkZJt0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":135350},"main":"lib/index.js","type":"module","oclif":{"bin":"sf","topics":{"mcp":{"description":"Commands to configure MCP authentication for Salesforce"}},"dirname":"brightfox-sf-mcp-setup","commands":"./lib/commands","devPlugins":["@oclif/plugin-command-snapshot"],"topicSeparator":" "},"types":"lib/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c0a762b06ae03ae67597e29b6ebfda4482676b98","scripts":{"lint":"eslint src --ext .ts","test":"vitest run","build":"tsc -p . --declaration","clean":"rm -rf lib","prepack":"npm run clean && npm run build && oclif manifest","postpack":"rm -f oclif.manifest.json","test:watch":"vitest"},"_npmUser":{"name":"jowinwaaijer","email":"jowinw@gmail.com"},"repository":{"url":"git+https://bitbucket.org/brightfox/sf-mcp-setup.git","type":"git"},"_npmVersion":"11.2.0","description":"SFDX CLI plugin to configure Salesforce MCP (Model Context Protocol) for Claude Desktop, Cursor, and other AI assistants","directories":{},"_nodeVersion":"22.14.0","dependencies":{"fs-extra":"^11.2.0","handlebars":"^4.7.8","@oclif/core":"^4.2.8","@salesforce/core":"^8.8.5","@inquirer/prompts":"^7.2.1","@salesforce/sf-plugins-core":"^12.2.2","@salesforce/source-deploy-retrieve":"^12.10.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"oclif":"^4.17.2","eslint":"^9.17.0","vitest":"^2.1.8","typescript":"^5.7.2","@oclif/test":"^4.1.8","@types/node":"^22.10.2","@types/fs-extra":"^11.0.4","@typescript-eslint/parser":"^8.18.2","@oclif/plugin-command-snapshot":"^5.2.28","@typescript-eslint/eslint-plugin":"^8.18.2"},"_npmOperationalInternal":{"tmp":"tmp/sf-mcp-setup_0.3.3_1767813577300_0.17485983506946456","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@brightfox/sf-mcp-setup","version":"0.3.4","keywords":["salesforce","sfdx","sfdx-plugin","sf-plugin","mcp","model-context-protocol","claude","claude-desktop","cursor","ai","cli","plugin"],"author":{"name":"Brightfox","email":"info@brightfox.nl"},"license":"MIT","_id":"@brightfox/sf-mcp-setup@0.3.4","maintainers":[{"name":"jacobkr","email":"kris.jacobs@brightfox.eu"},{"name":"jaspersto","email":"tom.jaspers@brightfox.eu"},{"name":"alwinvandijken","email":"alwinvandijken@gmail.com"},{"name":"jowinwaaijer","email":"jowinw@gmail.com"}],"homepage":"https://bitbucket.org/brightfox/sf-mcp-setup","bugs":{"url":"https://bitbucket.org/brightfox/sf-mcp-setup/issues"},"dist":{"shasum":"262a62077dae6c67c71066b7bbc6e1d8a7a881c9","tarball":"https://registry.npmjs.org/@brightfox/sf-mcp-setup/-/sf-mcp-setup-0.3.4.tgz","fileCount":48,"integrity":"sha512-qyor1ahhfYCXiNrBkjOACk+WPu7NWKxrDvgThI4dvlAB3dsru/tt564bfxQ5L0QtSp4UEU561Hz7g8jaT/eySA==","signatures":[{"sig":"MEUCIQDJD4dQtZV/LchUOdY32HgrC4kY7B8wxrXEIUrkPuTchwIgQNGoJ2Ch6Bg0SeiAh19csoa5NXk+QGJH5eJLeJaAC2M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":147712},"main":"lib/index.js","type":"module","oclif":{"bin":"sf","topics":{"mcp":{"description":"Commands to configure MCP authentication for Salesforce"}},"dirname":"brightfox-sf-mcp-setup","commands":"./lib/commands","devPlugins":["@oclif/plugin-command-snapshot"],"topicSeparator":" "},"types":"lib/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5b9d78a770745377a58dbdc721fde89306d73f24","scripts":{"lint":"eslint src --ext .ts","test":"vitest run","build":"tsc -p . --declaration","clean":"rm -rf lib","prepack":"npm run clean && npm run build && oclif manifest","postpack":"rm -f oclif.manifest.json","test:watch":"vitest"},"_npmUser":{"name":"jowinwaaijer","email":"jowinw@gmail.com"},"repository":{"url":"git+https://bitbucket.org/brightfox/sf-mcp-setup.git","type":"git"},"_npmVersion":"11.2.0","description":"SFDX CLI plugin to configure Salesforce MCP (Model Context Protocol) for Claude Desktop, Cursor, and other AI assistants","directories":{},"_nodeVersion":"22.14.0","dependencies":{"fs-extra":"^11.2.0","handlebars":"^4.7.8","@oclif/core":"^4.2.8","@salesforce/core":"^8.8.5","@inquirer/prompts":"^7.2.1","@salesforce/sf-plugins-core":"^12.2.2","@salesforce/source-deploy-retrieve":"^12.10.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"oclif":"^4.17.2","eslint":"^9.17.0","vitest":"^2.1.8","typescript":"^5.7.2","@oclif/test":"^4.1.8","@types/node":"^22.10.2","@types/fs-extra":"^11.0.4","@typescript-eslint/parser":"^8.18.2","@oclif/plugin-command-snapshot":"^5.2.28","@typescript-eslint/eslint-plugin":"^8.18.2"},"_npmOperationalInternal":{"tmp":"tmp/sf-mcp-setup_0.3.4_1769002339820_0.1253699328279152","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@brightfox/sf-mcp-setup","version":"0.3.6","description":"SFDX CLI plugin to configure Salesforce MCP (Model Context Protocol) for Claude Desktop, Cursor, and other AI assistants","author":{"name":"Brightfox","email":"info@brightfox.nl"},"license":"MIT","repository":{"type":"git","url":"git+https://bitbucket.org/brightfox/sf-mcp-setup.git"},"homepage":"https://bitbucket.org/brightfox/sf-mcp-setup","bugs":{"url":"https://bitbucket.org/brightfox/sf-mcp-setup/issues"},"publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","types":"lib/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"build":"tsc -p . --declaration","clean":"rm -rf lib","lint":"eslint src --ext .ts","test":"vitest run","test:watch":"vitest","postpack":"rm -f oclif.manifest.json","prepack":"npm run clean && npm run build && oclif manifest"},"dependencies":{"@inquirer/prompts":"^7.2.1","@oclif/core":"^4.2.8","@salesforce/core":"^8.8.5","@salesforce/sf-plugins-core":"^12.2.2","@salesforce/source-deploy-retrieve":"^12.10.5","fs-extra":"^11.2.0","handlebars":"^4.7.8"},"devDependencies":{"@oclif/plugin-command-snapshot":"^5.2.28","@oclif/test":"^4.1.8","@types/fs-extra":"^11.0.4","@types/node":"^22.10.2","@typescript-eslint/eslint-plugin":"^8.18.2","@typescript-eslint/parser":"^8.18.2","eslint":"^9.17.0","oclif":"^4.17.2","typescript":"^5.7.2","vitest":"^2.1.8"},"oclif":{"bin":"sf","dirname":"brightfox-sf-mcp-setup","commands":"./lib/commands","topicSeparator":" ","topics":{"mcp":{"description":"Commands to configure MCP authentication for Salesforce"}},"devPlugins":["@oclif/plugin-command-snapshot"]},"keywords":["salesforce","sfdx","sfdx-plugin","sf-plugin","mcp","model-context-protocol","claude","claude-desktop","cursor","ai","cli","plugin"],"_id":"@brightfox/sf-mcp-setup@0.3.6","gitHead":"ddbc49fbb1ae6e1465c549ff1c8f55381d7f065f","_nodeVersion":"22.14.0","_npmVersion":"11.2.0","dist":{"integrity":"sha512-BL0EPocIi+eFmai+psTqqlGlT/BVGQryYwr5eIWRxNiILt4sYGrNzmEKn3OdICKvNmdOtcRKI8KTOxqUe1cQxg==","shasum":"71b260891723f2f2055a12f20aa97c5535c7714b","tarball":"https://registry.npmjs.org/@brightfox/sf-mcp-setup/-/sf-mcp-setup-0.3.6.tgz","fileCount":48,"unpackedSize":174161,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGUWi7SaTKHo7+qAuMqYKNguHFNV/R2GZgx6a+Ng+91fAiEAui6OVwrNiAF7SaW8gt6nt4OC58y4jZTNDD36i+Vc68A="}]},"_npmUser":{"name":"jowinwaaijer","email":"jowinw@gmail.com"},"directories":{},"maintainers":[{"name":"jacobkr","email":"kris.jacobs@brightfox.eu"},{"name":"jaspersto","email":"tom.jaspers@brightfox.eu"},{"name":"alwinvandijken","email":"alwinvandijken@gmail.com"},{"name":"jowinwaaijer","email":"jowinw@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sf-mcp-setup_0.3.6_1769161036180_0.17839021161375945"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-07T14:29:57.235Z","modified":"2026-01-23T09:37:16.518Z","0.3.2":"2026-01-07T14:29:57.495Z","0.3.3":"2026-01-07T19:19:37.465Z","0.3.4":"2026-01-21T13:32:19.996Z","0.3.6":"2026-01-23T09:37:16.345Z"},"bugs":{"url":"https://bitbucket.org/brightfox/sf-mcp-setup/issues"},"author":{"name":"Brightfox","email":"info@brightfox.nl"},"license":"MIT","homepage":"https://bitbucket.org/brightfox/sf-mcp-setup","keywords":["salesforce","sfdx","sfdx-plugin","sf-plugin","mcp","model-context-protocol","claude","claude-desktop","cursor","ai","cli","plugin"],"repository":{"type":"git","url":"git+https://bitbucket.org/brightfox/sf-mcp-setup.git"},"description":"SFDX CLI plugin to configure Salesforce MCP (Model Context Protocol) for Claude Desktop, Cursor, and other AI assistants","maintainers":[{"name":"jacobkr","email":"kris.jacobs@brightfox.eu"},{"name":"jaspersto","email":"tom.jaspers@brightfox.eu"},{"name":"alwinvandijken","email":"alwinvandijken@gmail.com"},{"name":"jowinwaaijer","email":"jowinw@gmail.com"}],"readme":"# @brightfox/sf-mcp-setup\n\nSFDX CLI plugin to configure Salesforce MCP (Model Context Protocol) for Claude Desktop, Cursor, and other MCP clients.\n\n**Version 0.3.3** - Cross-platform support with workspace directory configuration.\n\n[![npm version](https://badge.fury.io/js/@brightfox%2Fsf-mcp-setup.svg)](https://www.npmjs.com/package/@brightfox/sf-mcp-setup)\n\n---\n\n## Quick Start\n\n### Install the plugin:\n\n```bash\nsf plugins install @brightfox/sf-mcp-setup\n```\n\n### One-liner setup for Claude Desktop:\n\n```bash\nsf mcp setup --target-org myOrg --mcp-servers dx --configure-client claude-desktop --workspace-dir default\n```\n\nThen restart Claude Desktop (Cmd+Q on macOS) and you're ready to go!\n\n---\n\n## Installation\n\n```bash\n# From npm (recommended)\nsf plugins install @brightfox/sf-mcp-setup\n\n# From source (development)\ngit clone https://bitbucket.org/brightfox/sf-mcp-setup.git\ncd sf-mcp-setup\nnpm install && npm run build\nsf plugins link .\n```\n\n---\n\n## Usage\n\n### Interactive Setup\n\n```bash\nsf mcp setup --target-org myOrg\n```\n\nThis will prompt you for:\n- Which MCP servers to enable (DX, Hosted CRM)\n- Whether to auto-configure Claude Desktop or Cursor\n- Client types for Hosted (Local, Web)\n- Contact email for the External Client App\n\n### Non-Interactive Setup\n\n```bash\n# DX Server + Claude Desktop (recommended)\nsf mcp setup --target-org myOrg --mcp-servers dx --configure-client claude-desktop\n\n# DX Server + Cursor IDE\nsf mcp setup --target-org myOrg --mcp-servers dx --configure-client cursor\n\n# DX Server only (generates .mcp.json, manual client config)\nsf mcp setup --target-org myOrg --mcp-servers dx\n\n# Hosted CRM (generates External Client App metadata)\nsf mcp setup --target-org myOrg \\\n  --mcp-servers hosted \\\n  --contact-email admin@example.com\n\n# Both DX and Hosted\nsf mcp setup --target-org myOrg \\\n  --mcp-servers both \\\n  --contact-email admin@example.com\n```\n\n### Options\n\n| Flag | Description | Options |\n|------|-------------|---------|\n| `--target-org`, `-o` | Target Salesforce org (required) | Org alias or username |\n| `--mcp-servers`, `-s` | MCP servers to enable | `dx`, `hosted`, `both` |\n| `--configure-client` | Auto-configure MCP client | `claude-desktop`, `cursor` |\n| `--workspace-dir`, `-w` | Salesforce project directory | Path or `default` |\n| `--auth-flow`, `-a` | OAuth authentication flow | `jwt`, `web`, `client_credentials` |\n| `--contact-email`, `-e` | Contact email for app | Email address |\n| `--output` | Output directory | Default: `force-app/main/default` |\n| `--config-output` | .mcp.json location | `local` (project), `global` (~/) |\n| `--deploy`, `-d` | Deploy metadata after generation | Flag |\n| `--json` | Output results as JSON | Flag |\n\n---\n\n## Multi-Org Support\n\nEach Salesforce org gets its own uniquely named MCP server entry, allowing you to configure multiple orgs without conflicts:\n\n```json\n{\n  \"mcpServers\": {\n    \"salesforce-admin@company.com.production\": {\n      \"command\": \"/path/to/npx\",\n      \"args\": [\"-y\", \"@salesforce/mcp\", \"--orgs\", \"admin@company.com.production\", \"--toolsets\", \"all\"]\n    },\n    \"salesforce-dev@company.com.sandbox\": {\n      \"command\": \"/path/to/npx\",\n      \"args\": [\"-y\", \"@salesforce/mcp\", \"--orgs\", \"dev@company.com.sandbox\", \"--toolsets\", \"all\"]\n    }\n  }\n}\n```\n\nSimply run `sf mcp setup` for each org you want to connect.\n\n---\n\n## Workspace Directory\n\nThe MCP server needs a Salesforce project directory to work with metadata operations. You have three options:\n\n### 1. Use default workspace (recommended for quick setup)\n```bash\nsf mcp setup --target-org myOrg --configure-client claude-desktop --workspace-dir default\n```\nCreates `~/salesforce-mcp-workspace/` with a minimal `sfdx-project.json`.\n\n### 2. Use existing project\n```bash\nsf mcp setup --target-org myOrg --configure-client claude-desktop --workspace-dir ~/projects/my-sf-project\n```\nMust contain a valid `sfdx-project.json`.\n\n### 3. Interactive prompt\nIf you don't specify `--workspace-dir`, the plugin will ask you during setup.\n\n---\n\n## What Gets Configured\n\n### Claude Desktop (`--configure-client claude-desktop`)\n\nThe plugin automatically:\n- Detects your NVM installation and Node.js version\n- Finds the SF CLI path\n- Creates/validates the workspace directory\n- Generates config with `cwd` pointing to the workspace\n- Sets up proper PATH environment for the MCP server\n\n**Config location:**\n- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`\n- Windows: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\nExample generated config:\n```json\n{\n  \"mcpServers\": {\n    \"salesforce-your-org@example.com\": {\n      \"command\": \"/Users/you/.nvm/versions/node/v22.14.0/bin/npx\",\n      \"args\": [\"-y\", \"@salesforce/mcp\", \"--orgs\", \"your-org@example.com\", \"--toolsets\", \"all\"],\n      \"cwd\": \"/Users/you/salesforce-mcp-workspace\",\n      \"env\": {\n        \"PATH\": \"/Users/you/.nvm/versions/node/v22.14.0/bin:/Users/you/.local/bin:/usr/local/bin:/usr/bin:/bin\",\n        \"HOME\": \"/Users/you\"\n      }\n    }\n  }\n}\n```\n\n---\n\n## After Setup\n\n### Test your connection\n\n1. **Restart Claude Desktop** (Cmd+Q, then reopen)\n2. Look for the **hammer icon** in the chat input\n3. Test with: *\"Query the first 5 Account names from my Salesforce org\"*\n\n---\n\n## Hosted MCP (Beta)\n\nFor Salesforce Hosted MCP Servers, the plugin generates External Client App metadata.\n\n### Generated Files (Hosted CRM)\n\n```\nforce-app/main/default/\n├── externalClientApps/\n│   └── SalesforceMCP.eca-meta.xml\n├── extlClntAppGlobalOauthSets/\n│   └── SalesforceMCPGlobalOAuth.ecaGlblOauth-meta.xml\n├── extlClntAppOauthSettings/\n│   └── SalesforceMCPOAuthSettings.ecaOauth-meta.xml\n└── permissionsets/\n    ├── MCP_API_Access.permissionset-meta.xml\n    ├── MCP_Admin.permissionset-meta.xml\n    └── MCP_Hosted_Access.permissionset-meta.xml\n```\n\n### Post-Deployment Steps\n\n1. Deploy: `sf project deploy start --source-dir force-app/main/default`\n2. Go to **Setup > External Client App Manager**\n3. Find **Salesforce MCP** and click **Manage**\n4. Note the **Consumer Key** for your MCP client configuration\n5. Assign users to the **MCP_Hosted_Access** permission set\n\n---\n\n## Troubleshooting\n\n### \"Cannot connect to Salesforce CLI\"\n\nThis usually means the PATH is not set correctly. Use `--configure-client claude-desktop` to auto-detect paths.\n\n### MCP server not showing in Claude Desktop\n\n1. Check the config exists: `cat ~/Library/Application\\ Support/Claude/claude_desktop_config.json`\n2. Fully quit Claude Desktop (Cmd+Q)\n3. Reopen Claude Desktop\n4. Check logs: `tail -f ~/Library/Logs/Claude/mcp*.log`\n\n### \"Cloud container\" error in Claude Desktop\n\nThis is a Claude Desktop misunderstanding. MCP servers run **locally** on your machine, not in the cloud. The error usually means the PATH is incorrect - use `--configure-client claude-desktop` to fix.\n\n---\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Build\nnpm run build\n\n# Link for local testing\nsf plugins link .\n\n# Run tests\nnpm test\n```\n\n---\n\n## Version History\n\n### v0.3.3\n- Added `--workspace-dir` flag for configuring MCP working directory\n- Interactive prompt for workspace selection\n- Cross-platform support (macOS Intel/ARM, Windows)\n- `cwd` parameter in generated configs for reliable metadata operations\n\n### v0.3.2\n- Published on NPM as `@brightfox/sf-mcp-setup`\n- Org-specific MCP server naming (`salesforce-{orgAlias}`)\n- Multi-org support without config conflicts\n\n### v0.3.1\n- Added `--configure-client` flag for auto-configuring Claude Desktop and Cursor\n- Auto-detects NVM paths for reliable MCP server execution\n\n### v0.3.0\n- External Client Apps for Hosted MCP (Salesforce best practice)\n- 3-file ECA structure (header, global OAuth, scopes)\n- PKCE required for all External Client Apps\n\n---\n\n## License\n\nMIT\n\n## Author\n\n[Brightfox](https://brightfox.nl)\n","readmeFilename":"README.md"}