Install AI Tools

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

Claude

Install the plugin Recommended

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

Start a new Claude Code session in your project. Use --scope user instead for all projects.

Manual MCP setup

From your project directory:

bash
claude mcp add --transport stdio --scope project b2c-dx-mcp -- npx -y @salesforce/b2c-dx-mcp@latest

Start a new session. Use --scope user instead for all projects. See Claude Code MCP setup.

Claude Desktop setup

Codex

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. This setup also works with the Codex IDE extension and the ChatGPT Work desktop app.

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.

ChatGPT online setup

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

From your project directory, run:

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

Start a new Gemini CLI session. Use --scope user instead for all projects. 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:133

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:142

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:403

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:367

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:167

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);
}