- Built from scratch: apollo, chargebee, datadog, greenhouse, lever, loom, pandadoc, salesloft, sendgrid, supabase, typeform, webflow, zoho-crm, twilio, reonomy - TSC fixes: brevo, google-console, housecall-pro, meta-ads, rippling, bamboohr, close, fieldedge, freshdesk, helpscout, toast, touchbistro, hubspot, notion, quickbooks, airtable, gusto, intercom, linear, monday, salesforce, shopify, square, wave, xero - Entry points added: close, touchbistro - All 65 active servers compile with 0 TypeScript errors - 4 specialty servers skipped (competitor-research, compliance-grc, n8n-apps, product-analytics)
Salesforce MCP Server
Model Context Protocol (MCP) server for Salesforce integration. Provides tools for querying and managing Salesforce data through the REST API.
Features
- SOQL Queries: Execute powerful SOQL queries with automatic pagination
- CRUD Operations: Create, read, update, and delete records across all Salesforce objects
- Bulk API: Handle large data operations efficiently with Bulk API 2.0
- Composite Requests: Batch multiple operations in a single API call
- Object Metadata: Describe Salesforce objects and fields
- Rate Limiting: Automatic retry with exponential backoff and API limit tracking
- Type Safety: Comprehensive TypeScript types for all Salesforce entities
Installation
npm install
npm run build
Configuration
Create a .env file based on .env.example:
SF_ACCESS_TOKEN=your_oauth2_access_token_here
SF_INSTANCE_URL=https://yourinstance.my.salesforce.com
SF_API_VERSION=v59.0 # Optional, defaults to v59.0
Getting an Access Token
- Connected App: Create a Connected App in Salesforce Setup
- OAuth Flow: Use OAuth 2.0 to obtain an access token
- Refresh Token: Implement token refresh logic for long-running servers
For development, you can use Salesforce CLI:
sfdx force:org:display --verbose -u your_org_alias
Usage
Development Mode
npm run dev
Production Mode
npm run build
npm start
Available Tools
Query Tools
salesforce_query: Execute SOQL queriessalesforce_describe_object: Get object metadata
CRUD Tools
salesforce_create_record: Create new recordssalesforce_update_record: Update existing recordssalesforce_delete_record: Delete records
Bulk Operations
- Bulk API 2.0 support for large data operations
- Automatic CSV upload and job monitoring
Architecture
Core Components
src/types/index.ts: TypeScript definitions for all Salesforce entitiessrc/clients/salesforce.ts: REST API client with retry logic and cachingsrc/server.ts: MCP server with lazy-loaded tool modulessrc/main.ts: Entry point with environment validation
Supported Objects
- Standard Objects: Account, Contact, Lead, Opportunity, Case, Task, Event
- Marketing: Campaign, CampaignMember
- Admin: User, UserRole, Profile, PermissionSet
- Reports: Report, Dashboard
- Files: ContentDocument, ContentVersion, Attachment
- Custom Objects: Generic support for any custom object
API Patterns
SOQL Queries
// Simple query
const result = await client.query('SELECT Id, Name FROM Account LIMIT 10');
// Query builder
const soql = client.buildSOQL({
select: ['Id', 'Name', 'Industry'],
from: 'Account',
where: "Industry = 'Technology'",
orderBy: 'Name ASC',
limit: 100
});
// Query all (auto-pagination)
const allAccounts = await client.queryAll('SELECT Id, Name FROM Account');
CRUD Operations
// Create
const result = await client.createRecord('Account', {
Name: 'Acme Corp',
Industry: 'Technology'
});
// Update
await client.updateRecord('Account', accountId, {
Phone: '555-1234'
});
// Delete
await client.deleteRecord('Account', accountId);
Bulk API
// Create bulk job
const job = await client.createBulkJob({
object: 'Account',
operation: 'insert'
});
// Upload CSV data
await client.uploadBulkData(job.id, csvData);
// Close job
await client.closeBulkJob(job.id);
Error Handling
The client includes:
- Automatic retry with exponential backoff (3 retries)
- Rate limit detection and handling
- Structured error responses
- API limit tracking via
Sforce-Limit-Infoheader
Resources
License
MIT