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 / ConfigResolver

Class: ConfigResolver ​

Defined in: packages/b2c-tooling-sdk/src/config/resolver.ts:135

Resolves configuration from multiple sources with consistent behavior.

ConfigResolver is the preferred high-level API for loading B2C configuration. It provides:

  • Consistent hostname mismatch protection across SDK and CLI
  • Extensibility via the ConfigSource interface
  • Convenience methods for creating B2CInstance and auth credentials

Resolution Priority ​

Configuration is resolved with the following precedence (highest to lowest):

  1. Explicit overrides (passed to resolve methods)
  2. Sources in order (dw.json, ~/.mobify by default)

Usage ​

typescript
import { createConfigResolver } from '@salesforce/b2c-tooling-sdk/config';

const resolver = createConfigResolver();

// Simple resolution
const { config, warnings } = resolver.resolve({
  hostname: process.env.SFCC_SERVER,
  clientId: process.env.SFCC_CLIENT_ID,
});

// Create B2CInstance directly
const instance = resolver.createInstance({ hostname: '...' });

// Get auth credentials for use with resolveAuthStrategy
const credentials = resolver.createAuthCredentials({ clientId: '...' });

Custom Sources ​

You can provide custom configuration sources:

typescript
import { ConfigResolver } from '@salesforce/b2c-tooling-sdk/config';

class MySource implements ConfigSource {
  name = 'my-source';
  load(options) { return { hostname: 'custom.example.com' }; }
}

const resolver = new ConfigResolver([new MySource()]);

Constructors ​

Constructor ​

new ConfigResolver(sources?): ConfigResolver

Defined in: packages/b2c-tooling-sdk/src/config/resolver.ts:144

Creates a new ConfigResolver.

Parameters ​

sources? ​

ConfigSource[]

Custom configuration sources. If not provided, uses default sources (dw.json, ~/.mobify, package.json). Sources are automatically sorted by priority (lower number = higher priority).

Returns ​

ConfigResolver

Methods ​

createAuthCredentials() ​

createAuthCredentials(overrides, options): Promise<AuthCredentials>

Defined in: packages/b2c-tooling-sdk/src/config/resolver.ts:477

Creates auth credentials from resolved configuration.

The returned credentials can be used with resolveAuthStrategy() to automatically select the best authentication method.

Parameters ​

overrides ​

Partial<NormalizedConfig> = {}

Explicit values that take highest priority

options ​

ResolveConfigOptions = {}

Resolution options

Returns ​

Promise<AuthCredentials>

Auth credentials suitable for resolveAuthStrategy()

Example ​

typescript
import { resolveAuthStrategy } from '@salesforce/b2c-tooling-sdk';

const credentials = resolver.createAuthCredentials({
  clientId: process.env.SFCC_CLIENT_ID,
});

const strategy = resolveAuthStrategy(credentials);

createInstance() ​

createInstance(overrides, options): Promise<B2CInstance>

Defined in: packages/b2c-tooling-sdk/src/config/resolver.ts:441

Creates a B2CInstance from resolved configuration.

This is a convenience method that combines configuration resolution with B2CInstance creation.

Parameters ​

overrides ​

Partial<NormalizedConfig> = {}

Explicit values that take highest priority

options ​

ResolveConfigOptions = {}

Resolution options

Returns ​

Promise<B2CInstance>

Configured B2CInstance

Throws ​

Error if hostname is not available in resolved config

Example ​

typescript
const instance = resolver.createInstance({
  clientId: process.env.SFCC_CLIENT_ID,
  clientSecret: process.env.SFCC_CLIENT_SECRET,
});

await instance.webdav.put('path/file.txt', content);

resolve() ​

resolve(overrides, options): Promise<ConfigResolutionResult>

Defined in: packages/b2c-tooling-sdk/src/config/resolver.ts:169

Resolves configuration from all sources.

Parameters ​

overrides ​

Partial<NormalizedConfig> = {}

Explicit values that take highest priority

options ​

ResolveConfigOptions = {}

Resolution options

Returns ​

Promise<ConfigResolutionResult>

Resolution result with config, warnings, and source info

Example ​

typescript
const { config, warnings, sources } = resolver.resolve(
  { hostname: process.env.SFCC_SERVER },
  { instance: 'staging' }
);

if (warnings.length > 0) {
  console.warn('Config warnings:', warnings);
}