Install AI Tools

B2C Commerce tools, documentation, and skills for your assistant.

Claude

Using Claude Desktop? See Claude Desktop (Cowork) setup.

Install the plugin Recommended

bash
claude plugin marketplace add SalesforceCommerceCloud/b2c-developer-tooling
claude plugin install b2c-dx-mcp@b2c-developer-tooling

Start a new Claude Code session. To install for the current project only, run it from your project directory with --scope project.

Manual MCP setup
bash
claude mcp add --transport stdio --scope user b2c-dx-mcp -- npx -y @salesforce/b2c-dx-mcp@latest

Start a new session. To configure the current project only, run it from your project directory with --scope project. See Claude Code MCP setup.

Codex/ChatGPT

Using the ChatGPT desktop app (ChatGPT Work)? See ChatGPT Work setup.

Install the plugin Recommended

bash
codex plugin marketplace add SalesforceCommerceCloud/b2c-developer-tooling
codex plugin add b2c-dx-mcp@b2c-developer-tooling

Start a new Codex session in your project. Codex plugins also work in ChatGPT Work.

Manual MCP setup
bash
codex mcp add b2c-dx-mcp -- npx -y @salesforce/b2c-dx-mcp@latest

Or add this to ~/.codex/config.toml (or $CODEX_HOME/config.toml if customized):

toml
[mcp_servers.b2c-dx-mcp]
command = "npx"
args = ["-y", "@salesforce/b2c-dx-mcp@latest"]

Start a new session. See Codex MCP configuration.

VS Code

Install the plugin Recommended

  1. Open the Command Palette (Cmd/Ctrl+Shift+P) and run Chat: Install Plugin from Source.
  2. Enter SalesforceCommerceCloud/b2c-developer-tooling.
  3. Select b2c-dx-mcp and follow the installation prompts.
  4. Start a new chat in GitHub Copilot.
Manual MCP setup

Add this to .vscode/mcp.json in your workspace:

json
{
  "servers": {
    "b2c-dx-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@salesforce/b2c-dx-mcp@latest"]
    }
  }
}

See VS Code MCP setup.

Copilot CLI setup

Cursor

Reload the MCP server in Cursor after installation.

Manual MCP setup

Add this to .cursor/mcp.json in your project:

json
{
  "mcpServers": {
    "b2c-dx-mcp": {
      "command": "npx",
      "args": ["-y", "@salesforce/b2c-dx-mcp@latest"]
    }
  }
}

For all projects, use ~/.cursor/mcp.json instead.

See Cursor's MCP documentation.

OpenCode

Add this to opencode.json in your project:

json
{
  "mcp": {
    "b2c-dx-mcp": {
      "type": "local",
      "command": ["npx", "-y", "@salesforce/b2c-dx-mcp@latest"],
      "enabled": true
    }
  }
}

Restart OpenCode. For all projects, use ~/.config/opencode/opencode.json. See OpenCode MCP setup.

Gemini

Run:

bash
gemini mcp add --scope user b2c-dx-mcp -- npx -y @salesforce/b2c-dx-mcp@latest

Start a new Gemini CLI session. To configure the current project only, run it from your project directory with --scope project. See Gemini CLI MCP setup.

No separate skills plugins needed.

Other clients and manual setup →
Skip to content
View as Markdown
View as Markdown

@salesforce/b2c-tooling-sdk / config / ConfigSource

Interface: ConfigSource ​

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:401

A configuration source that can contribute config values.

Implement this interface to create custom configuration sources. Sources are called in order, and later sources can override earlier ones.

Example ​

typescript
import type { ConfigSource, ConfigLoadResult, ResolveConfigOptions } from '@salesforce/b2c-tooling-sdk/config';

class MyCustomSource implements ConfigSource {
  name = 'my-custom-source';

  async load(options: ResolveConfigOptions): Promise<ConfigLoadResult | undefined> {
    // Load config from your custom source (sync return values also work)
    return { config: { hostname: 'example.com' }, location: '/path/to/config' };
  }
}

Properties ​

credentialFields? ​

optional credentialFields: keyof NormalizedConfig[]

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:461

Fields this source can securely store (e.g., ['password', 'clientSecret']).


name ​

name: string

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:403

Human-readable name for diagnostics


priority? ​

optional priority: number

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:416

Priority for source ordering. Lower numbers = higher priority.

Recommended ranges:

  • < 0: Before built-in sources (override defaults)
  • 0: Built-in sources (DwJsonSource, MobifySource)
  • 1-999: After built-in sources (fill gaps)
  • 1000: Lowest priority (PackageJsonSource)

Default ​

ts
0

Methods ​

createInstance()? ​

optional createInstance(options): MaybePromise<void>

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:440

Create a new instance in this source.

Parameters ​

options ​

CreateInstanceOptions & ResolveConfigOptions

Creation options including name and config

Returns ​

MaybePromise<void>


listInstances()? ​

optional listInstances(options?): MaybePromise<InstanceInfo[]>

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:434

List all instances from this source.

Parameters ​

options? ​

ResolveConfigOptions

Resolution options

Returns ​

MaybePromise<InstanceInfo[]>

Array of instance info objects. May return synchronously or as a Promise.


load() ​

load(options): MaybePromise<ConfigLoadResult | undefined>

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:425

Load configuration from this source.

Parameters ​

options ​

ResolveConfigOptions

Resolution options

Returns ​

MaybePromise<ConfigLoadResult | undefined>

Config and location from this source, or undefined if source not available. May return synchronously or as a Promise.


removeCredential()? ​

optional removeCredential(instanceName, field, options?): MaybePromise<void>

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:483

Remove a credential for an instance.

Parameters ​

instanceName ​

string

Instance name

field ​

keyof NormalizedConfig

Config field to remove

options? ​

ResolveConfigOptions

Resolution options

Returns ​

MaybePromise<void>


removeInstance()? ​

optional removeInstance(name, options?): MaybePromise<void>

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:447

Remove an instance from this source.

Parameters ​

name ​

string

Instance name to remove

options? ​

ResolveConfigOptions

Resolution options

Returns ​

MaybePromise<void>


setActiveInstance()? ​

optional setActiveInstance(name, options?): MaybePromise<void>

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:454

Set an instance as active.

Parameters ​

name ​

string

Instance name to set as active

options? ​

ResolveConfigOptions

Resolution options

Returns ​

MaybePromise<void>


storeCredential()? ​

optional storeCredential(instanceName, field, value, options?): MaybePromise<void>

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:470

Store a credential value for an instance.

Parameters ​

instanceName ​

string

Instance name

field ​

keyof NormalizedConfig

Config field to store

value ​

string

Value to store

options? ​

ResolveConfigOptions

Resolution options

Returns ​

MaybePromise<void>


updateConfig()? ​

optional updateConfig(patch, options): MaybePromise<ConfigUpdateResult>

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:508

Persist field values to the exact entry load returns for the same options (for example the selected dw.json instance). An undefined value removes the field. Implement only for sources the user owns and can edit; throw when the target is ambiguous or a value can't be represented.

b2c setup set calls this on the source that supplies the field, or for a field nothing sets, on the source that supplied the instance (its instanceName, else hostname). Sources without this method are treated as read-only, except credential stores, which receive storeCredential / removeCredential for their credentialFields.

Parameters ​

patch ​

Partial<NormalizedConfig>

Fields to set, or undefined to remove

options ​

ResolveConfigOptions

The options this source was loaded with

Returns ​

MaybePromise<ConfigUpdateResult>

Where the values were written