MCP server for Salesforce Tooling API integration
npm install salesforce-mcp-serverA Model Context Protocol (MCP) server that provides comprehensive access to Salesforce Tooling API functionality through Claude and other compatible AI assistants.
1. Clone this repository:
``bash`
git clone
cd salesforce-mcp
2. Install dependencies:
`bash`
npm install
3. Build the project:
`bash`
npm run build
Configure your Salesforce connection using environment variables:
The MCP server uses Salesforce CLI authentication. Make sure you have authenticated to your org using the Salesforce CLI:
`bashUse default authenticated org
npm run dev
Prerequisites:
- Install Salesforce CLI: https://developer.salesforce.com/tools/cli
- Authenticate to your org:
sf org login web
- Verify authentication: sf org listUsage
$3
`bash
Development mode
npm run devProduction mode (after build)
./build/index.js
`$3
`bash
claude mcp add salesforce-mcp -s project \
-e SF_TARGET_ORG=myorg \
-- npx salesforce-mcp-server@latest
`$3
#### REST API Tools
-
search_async_apex_jobs - Search AsyncApexJob records with filtering by status, job type, Apex class name, date range
- get_async_apex_job - Get detailed information about a specific AsyncApexJob by ID
- call_rest_api - Make generic REST API calls to Salesforce
- get_org_limits - Get organization limits information
- get_sobjects_list - Get list of all available SObjects
- describe_sobject - Describe a specific SObject schema#### Apex Class Management
-
list_apex_classes - List all Apex classes with optional filtering
- get_apex_class - Get detailed information about a specific Apex class
- create_apex_class - Create a new Apex class
- update_apex_class - Update an existing Apex class
- delete_apex_class - Delete an Apex class#### Apex Trigger Management
-
list_apex_triggers - List all Apex triggers
- get_apex_trigger - Get detailed information about a specific trigger
- create_apex_trigger - Create a new Apex trigger
- update_apex_trigger - Update an existing trigger
- delete_apex_trigger - Delete a trigger#### Visualforce Page Management
-
list_apex_pages - List all Visualforce pages
- get_apex_page - Get detailed information about a specific page
- create_apex_page - Create a new Visualforce page
- update_apex_page - Update an existing page
- delete_apex_page - Delete a page#### Query & Analysis Tools
-
execute_tooling_query - Execute SOQL queries against Tooling API
- describe_tooling_object - Get schema information for Tooling objects
- search_metadata - Search for metadata across different types
- get_code_coverage - Get code coverage information
- get_org_coverage - Get organization-wide coverage statistics
- get_symbol_table - Analyze code structure and symbols
- analyze_dependencies - Analyze code dependencies
- get_completion_suggestions - Get code completion suggestions#### Development Tools
-
run_tests - Execute Apex tests
- get_test_results - Get test execution results
- get_debug_logs - Retrieve debug logs
- get_debug_log_body - Get full debug log content
- validate_syntax - Validate Apex code syntax
- check_apex_sharing - Check Apex sharing declarations
- analyze_soql_performance - Analyze SOQL query performance
- get_org_info - Get organization information
- list_sobjects - List available SObjectsExample Usage with Claude
Once the MCP server is running and connected to Claude, you can use natural language commands like:
- "Search for completed AsyncApexJob records for BatchProcessor class"
- "Get details of AsyncApexJob with ID 707XXXXXXXXXXXXXXX"
- "Find all failed batch jobs from the last week"
- "List all Apex classes that contain 'Account' in their name"
- "Show me the code coverage for all classes below 75%"
- "Get the symbol table for the AccountTriggerHandler class"
- "Create a new Apex class called TestUtils with basic utility methods"
- "Run all tests and show me the results"
Development
$3
`
src/
āāā auth/ # Salesforce authentication
āāā client/ # Tooling API HTTP client
āāā tools/ # MCP tool implementations
āāā types/ # TypeScript type definitions
āāā utils/ # Utility functions
āāā index.ts # Main server entry point
`$3
- npm run build - Build the TypeScript project
- npm run dev - Run in development mode with hot reload
- npm run watch - Watch mode for TypeScript compilation
- npm run lint - Run ESLint
- npm run format - Format code with Prettier
- npm test` - Run tests- Node.js 18+
- Valid Salesforce org with API access
- Salesforce CLI installed and authenticated
MIT License - see LICENSE file for details