Skip to main content
Glama
sudhakar6

Salesforce MCP Server

by sudhakar6

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SF_CLIENT_IDYesThe Salesforce connected app client ID
SF_LOGIN_URLYesThe Salesforce login URL, e.g. https://your-domain.my.salesforce.com
MCP_TRANSPORTNoThe MCP transport to use: 'stdio' or 'http' (defaults vary by packaging; Python defaults to stdio, Docker defaults to HTTP).stdio
SF_CLIENT_SECRETYesThe 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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
sf_queryB

Run a SOQL query and return matching records.

Follows nextRecordsUrl automatically so the full result set is returned in one call, regardless of Salesforce's per-page row limit.

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 fields to restrict which fields come back.

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 name_contains (matches name or label, case-insensitive) or custom_only=True if you don't need the full list.

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. operation is one of "insert", "update", "upsert", "delete". external_id_field is required for "upsert". For "delete", each record dict needs only an "Id" key.

sf_compositeA

Bundle multiple sub-requests into one atomic Salesforce API call.

Each entry in requests is a Salesforce composite sub-request, e.g.: {"method": "POST", "url": "/services/data/v61.0/sobjects/Account", "referenceId": "NewAccount", "body": {"Name": "Acme"}} A later sub-request can reference an earlier one's result with "@{NewAccount.id}" inside its own body or url. With all_or_none true (the default), the whole batch rolls back if any sub-request fails.

sf_api_usageA

Report current Salesforce REST API usage against the org's daily limit.

Reads the Sforce-Limit-Info header from the most recent API call when available (no extra request needed); falls back to a /limits call otherwise (e.g. right after server startup, before any other tool ran).

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 @RestResource(urlMapping=...) with @HttpGet/@HttpPost/etc. methods. path is that class's URL mapping, e.g. "/MyApi/v1/accounts/001xx0000000001AAA" for a class registered with @RestResource(urlMapping='/MyApi/v1/accounts/*'). method must match whichever HTTP method the class handles.

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

NameDescription
summarize_accountSummarize an Account's health: recent opportunities, open cases, and recommended next steps, using live data pulled from the org.
draft_followup_emailDraft a follow-up email for an Opportunity, based on its stage and recent logged activity, using live data pulled from the org.
data_hygiene_checkAsk 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

NameDescription
Salesforce objectsGlobal describe: every object available in the org.

Latest Blog Posts

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