Back to Browse

Salesforce MCP Server

Business ToolsLow Risk9.9MCP RegistryLocal
Free

Server data from the Official MCP Registry

MCP server for Salesforce CRM — Accounts, Contacts, Opportunities, Leads, Cases.

About

MCP server for Salesforce CRM — Accounts, Contacts, Opportunities, Leads, Cases.

Security Report

9.9
Low Risk9.9Low Risk

Valid MCP server (2 strong, 4 medium validity signals). 1 code issue detected. No known CVEs in dependencies. Imported from the Official MCP Registry. 1 finding(s) downgraded by scanner intelligence.

11 files analyzed · 1 issue found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

env_vars

Check that this permission is expected for this type of plugin.

HTTP Network Access

Connects to external APIs or services over the internet.

What You'll Need

Set these up before or after installing:

Credential source: 'env' reads vars locally, 'gateway' expects header injection from the WYRE MCP Gateway. Set to 'env' for stdio/local use.Optional

Environment variable: AUTH_MODE

Salesforce auth flow: 'client_credentials' (default, requires a Connected App with Client Credentials Flow enabled) or 'username_password' (fallback).Optional

Environment variable: SALESFORCE_AUTH_FLOW

Connected App consumer key. Required when SALESFORCE_AUTH_FLOW=client_credentials.Optional

Environment variable: SALESFORCE_CLIENT_ID

Connected App consumer secret. Required when SALESFORCE_AUTH_FLOW=client_credentials.Required

Environment variable: SALESFORCE_CLIENT_SECRET

Salesforce org's My Domain URL (e.g. https://yourorg.my.salesforce.com). Required when SALESFORCE_AUTH_FLOW=client_credentials.Optional

Environment variable: SALESFORCE_INSTANCE_URL

Salesforce username. Only used when SALESFORCE_AUTH_FLOW=username_password.Optional

Environment variable: SALESFORCE_USERNAME

Salesforce password. Only used when SALESFORCE_AUTH_FLOW=username_password.Required

Environment variable: SALESFORCE_PASSWORD

Salesforce security token. Only used when SALESFORCE_AUTH_FLOW=username_password; optional if the org has IP allowlisting configured instead.Required

Environment variable: SALESFORCE_TOKEN

Transport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting.Optional

Environment variable: MCP_TRANSPORT

Log verbosity: debug, info, warn, errorOptional

Environment variable: LOG_LEVEL

Documentation

View on GitHub

From the project's GitHub README.

salesforce-mcp

MCP (Model Context Protocol) server for Salesforce CRM, scoped to the WYRE Gateway BYOC use case.

A focused HTTP MCP server that exposes a Salesforce org's CRM data surface to Claude (and other MCP clients) through the WYRE MCP Gateway. Built for the multi-tenant gateway pattern: credentials are injected per-request via HTTP headers, no startup secrets are baked into the container.

Scope discipline

This package intentionally ships a narrow tool surface — six CRM data tools — and deliberately omits the Apex code-management / custom-object-creation / EXECUTE_ANONYMOUS surfaces that broader Salesforce MCP servers include. The use case is read/write access to standard CRM objects (Accounts, Contacts, Opportunities, Leads, Cases). Customers who need DX or admin tooling should use the official @salesforce/mcp package instead.

Tools

ToolPurpose
salesforce_search_objectsFind standard + custom objects by partial name.
salesforce_describe_objectFull schema (fields, picklists, relationships) for an object.
salesforce_query_recordsExecute SOQL with relationship traversal.
salesforce_aggregate_querySOQL GROUP BY / COUNT / SUM / AVG / MIN / MAX.
salesforce_dml_recordsInsert / update / delete / upsert records.
salesforce_search_allCross-object SOSL search.

Run modes

  • http (default): listens on :8080, exposes /mcp (JSON-RPC) + /health. Per-request credentials from X-Salesforce-* headers. This is the gateway deployment shape.
  • stdio: traditional MCP client transport (Claude Desktop / Cursor). Credentials read once from env. Useful for local testing.
# HTTP mode (gateway default)
PORT=8080 MCP_TRANSPORT=http AUTH_MODE=gateway npm start

# stdio mode (env-baked, local testing)
MCP_TRANSPORT=stdio \
SALESFORCE_AUTH_FLOW=client_credentials \
SALESFORCE_CLIENT_ID=... SALESFORCE_CLIENT_SECRET=... \
SALESFORCE_INSTANCE_URL=https://yourorg.my.salesforce.com \
node dist/entry.js

Header contract (gateway mode)

HeaderRequired?Notes
X-Salesforce-Auth-Modeoptionalclient_credentials (default) or username_password.
X-Salesforce-Client-Idfor client_credentialsConnected App consumer key.
X-Salesforce-Client-Secretfor client_credentialsConnected App consumer secret.
X-Salesforce-Instance-Urlfor client_credentialsCustomer's My Domain URL (e.g. https://acmecorp.my.salesforce.com).
X-Salesforce-Usernamefor username_passwordSalesforce user.
X-Salesforce-Passwordfor username_passwordSalesforce password.
X-Salesforce-Tokenfor username_passwordSecurity token (required unless IP allowlisted).

Per-request authentication means the same container instance can service many customers without restart — each MCP tools/call builds a fresh jsforce.Connection from the headers on that request.

Salesforce Connected App setup

For Client Credentials flow (the recommended path):

  1. Salesforce Setup → App Manager → New Connected App.
  2. Under API (Enable OAuth Settings): turn on Enable OAuth Settings and Enable Client Credentials Flow.
  3. Save, wait ~5 minutes for propagation.
  4. Manage → Edit Policies → Client Credentials Flow → set a Run As user (the API calls run with that user's permissions).
  5. Copy the Consumer Key and Consumer Secret from the Connected App into the gateway BYOC fields as clientId and clientSecret.
  6. Set instanceUrl to the customer's My Domain URL (Setup → My Domain).

Build

npm install
npm run build

Container

docker build -t salesforce-mcp:dev .
docker run --rm -p 8080:8080 -e MCP_TRANSPORT=http salesforce-mcp:dev
curl -s http://localhost:8080/health

The published image lives at ghcr.io/wyre-ai/salesforce-mcp with :latest, :sha-<short_sha>, and :v<version> tags.

License

Apache-2.0.

Reviews

No reviews yet

Be the first to review this server!