
Salesforce
io.github.wyre-technologyPublished by GitHub account wyre-technologyv1.0.3Updated Oct 24, 2026
MCP server for Salesforce CRM — Accounts, Contacts, Opportunities, Leads, Cases.
Overview
Salesforce CRM MCP server that lets an assistant search, describe, query and modify Accounts, Contacts, Opportunities, Leads and Cases in a Salesforce org.
- What you can do
- Find standard and custom objects by partial name and read their full schema, including fields, picklists and relationships
- Run SOQL queries with relationship traversal, plus aggregate queries using GROUP BY, COUNT, SUM, AVG, MIN and MAX
- Search across objects with SOSL
- Insert, update, upsert and delete records on standard CRM objects
- When to use it
- Use it when an assistant needs read or write access to standard Salesforce CRM data — looking up accounts and contacts, reporting on opportunities, or updating leads and cases. It is deliberately narrow; for Apex, custom-object creation or admin tooling the README points to the official Salesforce package instead.
- Requirements
- Runs as a local process (stdio) or as an HTTP container. Needs a Salesforce Connected App with Client Credentials Flow (SALESFORCE_CLIENT_ID, SALESFORCE_CLIENT_SECRET, SALESFORCE_INSTANCE_URL), or username-password credentials (SALESFORCE_USERNAME, SALESFORCE_PASSWORD, SALESFORCE_TOKEN). Set AUTH_MODE=env for local stdio use. HTTP mode requires CONDUIT_S2S_SECRET and X-Gateway-S2S signing.
Installation
In SourceWeft
- Open Salesforce in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
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
Run modes
http(default): listens on:8080, exposes/mcp(JSON-RPC) +/health. Per-request credentials fromX-Salesforce-*headers. This is the gateway deployment shape. HTTP refuses to start unlessCONDUIT_S2S_SECRETis a real secret.stdio: traditional MCP client transport (Claude Desktop / Cursor). Credentials read once from env. The stdio transport does not useCONDUIT_S2S_SECRET.
Copy .env.example and set the variables below. Leave CONDUIT_S2S_SECRET empty in that file.
/health stays unauthenticated and does not read credentials.
Header contract (gateway mode)
Every /mcp request must include a valid X-Gateway-S2S header when CONDUIT_S2S_SECRET is set. Gateway mode also requires the credential headers for the chosen flow. A request missing them returns 401 and does not fall back to SALESFORCE_* in the process environment.
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.
X-Gateway-S2S signing
v1 is HMAC-SHA256, hex-encoded, of the ASCII string t=<unix seconds> (the same t= prefix that starts the header), keyed with CONDUIT_S2S_SECRET. The timestamp must be within 300 seconds of the server clock. A missing or invalid header returns HTTP 401. The secret is never written to logs or the response body.
Salesforce Connected App setup
For Client Credentials flow (the recommended path):
- Salesforce Setup → App Manager → New Connected App.
- Under API (Enable OAuth Settings): turn on Enable OAuth Settings and Enable Client Credentials Flow.
- Save, wait ~5 minutes for propagation.
- Manage → Edit Policies → Client Credentials Flow → set a Run As user (the API calls run with that user's permissions).
- Copy the Consumer Key and Consumer Secret from the Connected App into the gateway BYOC fields as
clientIdandclientSecret. - Set
instanceUrlto the customer's My Domain URL (Setup → My Domain).
Build
Container
The image listens on 0.0.0.0 inside the container (MCP_HTTP_HOST) and defaults to AUTH_MODE=gateway. Publish the port on loopback and pass the S2S secret. In gateway mode, Salesforce credentials arrive on each request as headers; they are not read from the environment.
Compose refuses to start when CONDUIT_S2S_SECRET is unset, sets AUTH_MODE=gateway, publishes 127.0.0.1:8080:8080, and does not inject SALESFORCE_*:
Single-tenant HTTP (AUTH_MODE=env) still requires the S2S secret, then uses SALESFORCE_*:
The published image lives at ghcr.io/wyre-ai/salesforce-mcp with :latest, :sha-<short_sha>, and :v<version> tags.
License
Apache-2.0.
Source: README.md at commit a2a8ebb
Tools
0Version history
1- v1.0.3LatestSep 16, 2026
Score
40% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Declare a license in the repository or the registry entry.