Salesforce MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SF_CLIENT_ID | Yes | The Salesforce connected app client ID | |
| SF_LOGIN_URL | Yes | The Salesforce login URL, e.g. https://your-domain.my.salesforce.com | |
| MCP_TRANSPORT | No | The MCP transport to use: 'stdio' or 'http' (defaults vary by packaging; Python defaults to stdio, Docker defaults to HTTP). | stdio |
| SF_CLIENT_SECRET | Yes | The Salesforce connected app client secret |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| sf_queryB | Run a SOQL query and return matching records. Follows |
| sf_searchA | Run a raw SOSL search and return matching records grouped by object type. Example: FIND {Acme} IN ALL FIELDS RETURNING Account(Name), Contact(Name, Email) Complements sf_query: SOSL matches keywords across multiple object types and text fields at once, where SOQL needs an exact object and field match. |
| sf_get_recordA | Fetch a single record by ID. Pass |
| sf_create_recordC | Create a new record of the given object type with the given field values. |
| sf_update_recordC | Update an existing record's field values. |
| sf_upsert_recordA | Create or update a record identified by an external ID field. The standard idempotent create-or-update integration pattern: safe to call repeatedly with the same external ID without creating duplicates. |
| sf_delete_recordC | Delete a record by ID. |
| sf_describe_objectB | Return field metadata (names, types, picklist values, etc.) for one object. |
| sf_list_objectsA | List objects available in the org (global describe), for discoverability. A Developer Edition org alone has 800+ standard objects, so the
result is trimmed to name/label/custom/queryable/createable/
updateable/deletable per object rather than Salesforce's full raw
payload. Narrow further with |
| sf_bulk_queryA | Run a SOQL query via Bulk API 2.0, for result sets too large for sf_query. Slower (job-based, polls until complete) but not subject to sf_query's interactive per-request limits. Prefer sf_query for everyday lookups; reach for this when you expect a very large result set. |
| sf_bulk_loadA | Insert/update/upsert/delete a batch of records via Bulk API 2.0. Use for record volumes too large for sf_create_record/sf_update_record's
one-record-per-call REST endpoints. |
| sf_compositeA | Bundle multiple sub-requests into one atomic Salesforce API call. Each entry in |
| sf_api_usageA | Report current Salesforce REST API usage against the org's daily limit. Reads the |
| sf_call_apex_restA | Call a custom Apex REST endpoint exposed by the org. For any org-specific capability beyond this server's built-in
standard-API tools: an Apex class annotated This is a thin, generic pass-through — it has no idea what any particular custom endpoint does, expects, or returns; that's between the caller and whatever the org's Apex class implements. |
| sf_org_healthA | Report the org's overall health: what kind of org it is, current API/ storage/async limits, and license seat usage (user licenses, permission set licenses, installed package licenses). A heavier, broader report than sf_api_usage (which only checks the daily API request limit) — use this for "what does this org have and how much of it is used", not for a quick mid-conversation limit check. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| summarize_account | Summarize an Account's health: recent opportunities, open cases, and recommended next steps, using live data pulled from the org. |
| draft_followup_email | Draft a follow-up email for an Opportunity, based on its stage and recent logged activity, using live data pulled from the org. |
| data_hygiene_check | Ask the model to find data-quality issues (likely duplicates, missing required fields) for a given object, using the query/search tools directly rather than pre-fetched data. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Salesforce objects | Global describe: every object available in the org. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sudhakar6/salesforce-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server