This project provides a basic example of integrating with Salesforce using the Model Context Protocol (MCP). It allows interaction with Salesforce features like sending emails and deploying Apex code through MCP tools.
- Node.js and npm (or yarn) installed.
- A Salesforce org where you can create a Connected App.
-
Install Dependencies:
npm install # or yarn install
-
Configure Salesforce Credentials:
- You MUST create a
credentials.js
file inside autils
folder (./utils/credentials.js
). - This file needs to export a function
getSalesforceCredentials()
which returns your Salesforce connection details necessary for JWT Bearer Flow authentication. - Important: Ensure you have a Connected App configured in Salesforce for JWT authentication, allowing the appropriate scopes and pre-authorizing the relevant user profile.
utils/credentials.js
Example:import fs from 'fs'; import path from 'path'; // You might load these from environment variables, a config file, etc. export function getSalesforceCredentials() { // --- IMPLEMENT YOUR LOGIC HERE to securely load credentials --- const loginUrl = "YOUR_SALESFORCE_LOGIN_URL"; // e.g., https://login.salesforce.com or https://yourdomain.my.salesforce.com const username = "YOUR_SALESFORCE_USERNAME"; const clientId = "YOUR_CONNECTED_APP_CONSUMER_KEY"; // Load your private key used to sign the JWT assertion // Ensure the key is formatted correctly, including BEGIN/END lines. const privateKey = fs.readFileSync(path.resolve(__dirname, 'path/to/your/server.key'), 'utf8'); // Example: const privateKey = process.env.SF_PRIVATE_KEY; if (!loginUrl || !username || !clientId || !privateKey) { throw new Error("Missing required Salesforce credentials in utils/credentials.js"); } return { loginUrl, username, clientId, privateKey }; }
- You MUST create a
-
Configuration File:
- The repository includes a sample
claude_desktop_config.json
file that can be used as a template for configuring your MCP server. - Update the paths and credentials in this file according to your environment setup.
- The repository includes a sample
node server.js