{"id":28768940,"url":"https://github.com/tsmztech/mcp-server-salesforce","last_synced_at":"2026-08-27T16:10:32.975Z","repository":{"id":272706271,"uuid":"916895985","full_name":"tsmztech/mcp-server-salesforce","owner":"tsmztech","description":"Salesforce MCP Server","archived":false,"fork":false,"pushed_at":"2026-07-19T04:07:24.000Z","size":137,"stargazers_count":163,"open_issues_count":7,"forks_count":93,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-07-19T05:14:51.786Z","etag":null,"topics":["claude","mcp","modelcontextprotocol","salesforce","server"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tsmztech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-15T00:43:26.000Z","updated_at":"2026-07-19T04:07:27.000Z","dependencies_parsed_at":"2025-04-12T01:24:32.719Z","dependency_job_id":"9c0095c4-67b1-4d0f-b86d-7ac2c0a74336","html_url":"https://github.com/tsmztech/mcp-server-salesforce","commit_stats":null,"previous_names":["tsmztech/mcp-server-salesforce"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tsmztech/mcp-server-salesforce","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsmztech%2Fmcp-server-salesforce","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsmztech%2Fmcp-server-salesforce/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsmztech%2Fmcp-server-salesforce/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsmztech%2Fmcp-server-salesforce/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tsmztech","download_url":"https://codeload.github.com/tsmztech/mcp-server-salesforce/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsmztech%2Fmcp-server-salesforce/sbom","scorecard":{"id":857804,"data":{"date":"2025-08-20T02:15:33Z","repo":{"name":"github.com/tsmztech/mcp-server-salesforce","commit":"ceb5099d03a15d3ea1f8ecc1cfb219b344b8778f"},"scorecard":{"version":"v5.1.1","commit":"cd152cb6742c5b8f2f3d2b5193b41d9c50905198"},"score":7.4,"checks":[{"name":"Maintained","score":10,"reason":"23 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":7,"reason":"dependency not pinned by hash detected -- score normalized to 7","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/tsmztech/mcp-server-salesforce/codeql.yml/main?enable=pin","Warn: npmCommand not pinned by hash: .github/workflows/ci.yml:20","Info:   8 out of   9 GitHub-owned GitHubAction dependencies pinned","Info:   2 out of   2 third-party GitHubAction dependencies pinned","Info:   1 out of   2 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#pinned-dependencies"}},{"name":"Token-Permissions","score":9,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:14","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:15","Info: topLevel 'contents' permission set to 'read': .github/workflows/ci.yml:5","Warn: no topLevel permission defined: .github/workflows/codeql.yml:1","Info: topLevel permissions set to 'read-all': .github/workflows/scorecard.yml:8","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#token-permissions"}},{"name":"Dependency-Update-Tool","score":10,"reason":"update tool detected","details":["Info: detected update tool: Dependabot: .github/dependabot.yml:1"],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#dependency-update-tool"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#security-policy"}},{"name":"Code-Review","score":0,"reason":"Found 1/19 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#code-review"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#signed-releases"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#vulnerabilities"}},{"name":"CII-Best-Practices","score":2,"reason":"badge detected: InProgress","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#cii-best-practices"}},{"name":"SAST","score":9,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 19 commits out of 20 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#sast"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":5,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'main'","Info: 'force pushes' disabled on branch 'main'","Warn: 'branch protection settings apply to administrators' is disabled on branch 'main'","Info: 'stale review dismissal' is required to merge on branch 'main'","Warn: required approving review count is 1 on branch 'main'","Info: codeowner review is required on branch 'main'","Warn: 'last push approval' is disabled on branch 'main'","Info: 'up-to-date branches' is required to merge on branch 'main'","Info: status check found to merge onto on branch 'main'","Info: PRs are required in order to make changes on branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#branch-protection"}},{"name":"Contributors","score":0,"reason":"project has 0 contributing companies or organizations -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project has a set of contributors from multiple organizations (e.g., companies).","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#contributors"}},{"name":"CI-Tests","score":8,"reason":"8 out of 9 merged PRs checked by a CI test -- score normalized to 8","details":null,"documentation":{"short":"Determines if the project runs tests before pull requests are merged.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#ci-tests"}}]},"last_synced_at":"2025-08-24T00:22:06.867Z","repository_id":272706271,"created_at":"2025-08-24T00:22:06.867Z","updated_at":"2025-08-24T00:22:06.867Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36944077,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-22T15:14:58.755Z","status":"online","status_checked_at":"2026-08-27T02:00:07.166Z","response_time":96,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude","mcp","modelcontextprotocol","salesforce","server"],"created_at":"2025-06-17T13:03:31.754Z","updated_at":"2026-08-27T16:10:32.968Z","avatar_url":"https://github.com/tsmztech.png","language":"TypeScript","funding_links":[],"categories":["CRM \u0026 ERP","Customer Data Platforms","CRM and Sales Tools","🌐 Web Development","📚 Projects (2474 total)","🤝 Sales / BD"],"sub_categories":["Playwright","How to Submit","MCP Servers","CRM \u0026 Pipeline Management"],"readme":"# Salesforce MCP Server\n[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/tsmztech/mcp-server-salesforce/badge)](https://securityscorecards.dev/viewer/?uri=github.com/tsmztech/mcp-server-salesforce)\n\n\nAn MCP (Model Context Protocol) server implementation that integrates Claude with Salesforce, enabling natural language interactions with your Salesforce data and metadata. This server allows Claude to query, modify, and manage your Salesforce objects and records using everyday language.\n\n\u003ca href=\"https://glama.ai/mcp/servers/kqeniawbr6\"\u003e\n  \u003cimg width=\"380\" height=\"200\" src=\"https://glama.ai/mcp/servers/kqeniawbr6/badge\" alt=\"Salesforce Server MCP server\" /\u003e\n\u003c/a\u003e\n\n## Features\n\n* **Object and Field Management**: Create and modify custom objects and fields using natural language\n* **Smart Object Search**: Find Salesforce objects using partial name matches\n* **Detailed Schema Information**: Get comprehensive field and relationship details for any object\n* **Flexible Data Queries**: Query records with relationship support and complex filters\n* **Data Manipulation**: Insert, update, delete, and upsert records with ease\n* **Cross-Object Search**: Search across multiple objects using SOSL\n* **Apex Code Management**: Read, create, and update Apex classes and triggers\n* **Intuitive Error Handling**: Clear feedback with Salesforce-specific error details\n* **Switchable Authentication**: Supports multiple orgs. Easily switch your active Salesforce org based on the default org configured in your VS Code workspace (use Salesforce_CLI authentication for this feature).\n\n## Installation\n\n### Requirements\n\n- **Node.js 20+**. The server must run under Node — **bun is not supported**: jsforce's HTTP transport hangs under bun, so authentication appears to succeed but every Salesforce API call stalls until the MCP host times out (see [#118](https://github.com/tsmztech/mcp-server-salesforce/issues/118)). Use `npx`/`node` (not `bun x`) in your MCP client configuration.\n\n### Global Installation (npm)\n\n```bash\nnpm install -g @tsmztech/mcp-server-salesforce\n```\n\n### Claude Desktop Quick Installation\n\nFor easy setup with Claude Desktop, download the pre-configured extension:\n\n1. Download [`salesforce-mcp-extension.dxt`](./claude-desktop/salesforce-mcp-extension.dxt) from the `claude-desktop/` folder\n2. Open Claude Desktop → Settings → Extensions\n3. Drag the `.dxt` file into the Extensions window\n4. Configure your Salesforce credentials when prompted\n\nFor manual Claude Desktop configuration, see [Usage with Claude Desktop](#usage-with-claude-desktop) below.\n\n## Tools\n\n### salesforce_search_objects\nSearch for standard and custom objects:\n* Search by partial name matches\n* Finds both standard and custom objects\n* Example: \"Find objects related to Account\" will find Account, AccountHistory, etc.\n\n### salesforce_describe_object\nGet detailed object schema information:\n* Field definitions and properties\n* Relationship details\n* Picklist values\n* Example: \"Show me all fields in the Account object\"\n\n### salesforce_query_records\nQuery records with relationship support:\n* Parent-to-child relationships\n* Child-to-parent relationships\n* Complex WHERE conditions\n* Example: \"Get all Accounts with their related Contacts\"\n* Note: For queries with GROUP BY or aggregate functions, use salesforce_aggregate_query\n\n### salesforce_aggregate_query\nExecute aggregate queries with GROUP BY:\n* GROUP BY single or multiple fields\n* Aggregate functions: COUNT, COUNT_DISTINCT, SUM, AVG, MIN, MAX\n* HAVING clauses for filtering grouped results\n* Date/time grouping functions\n* Example: \"Count opportunities by stage\" or \"Find accounts with more than 10 opportunities\"\n\n### salesforce_dml_records\nPerform data operations:\n* Insert new records\n* Update existing records\n* Delete records\n* Upsert using external IDs\n* Example: \"Update status of multiple accounts\"\n\n### salesforce_manage_object\nCreate and modify custom objects:\n* Create new custom objects\n* Update object properties\n* Configure sharing settings\n* Example: \"Create a Customer Feedback object\"\n\n### salesforce_manage_field\nManage object fields:\n* Add new custom fields\n* Modify field properties\n* Create relationships\n* Automatically grants Field Level Security to System Administrator by default\n* Use `grantAccessTo` parameter to specify different profiles\n* Example: \"Add a Rating picklist field to Account\"\n\n### salesforce_manage_field_permissions\nManage Field Level Security (Field Permissions):\n* Grant or revoke read/edit access to fields for specific profiles\n* View current field permissions\n* Bulk update permissions for multiple profiles\n* Useful for managing permissions after field creation or for existing fields\n* Example: \"Grant System Administrator access to Custom_Field__c on Account\"\n\n### salesforce_search_all\nSearch across multiple objects:\n* SOSL-based search\n* Multiple object support\n* Field snippets\n* Example: \"Search for 'cloud' across Accounts and Opportunities\"\n\n### salesforce_read_apex\nRead Apex classes:\n* Get full source code of specific classes\n* List classes matching name patterns\n* View class metadata (API version, status, etc.)\n* Support for wildcards (* and ?) in name patterns\n* Example: \"Show me the AccountController class\" or \"Find all classes matching Account*Cont*\"\n\n### salesforce_write_apex\nCreate and update Apex classes:\n* Create new Apex classes\n* Update existing class implementations\n* Specify API versions\n* Example: \"Create a new Apex class for handling account operations\"\n\n### salesforce_read_apex_trigger\nRead Apex triggers:\n* Get full source code of specific triggers\n* List triggers matching name patterns\n* View trigger metadata (API version, object, status, etc.)\n* Support for wildcards (* and ?) in name patterns\n* Example: \"Show me the AccountTrigger\" or \"Find all triggers for Contact object\"\n\n### salesforce_write_apex_trigger\nCreate and update Apex triggers:\n* Create new Apex triggers for specific objects\n* Update existing trigger implementations\n* Specify API versions and event operations\n* Example: \"Create a new trigger for the Account object\" or \"Update the Lead trigger\"\n\n### salesforce_execute_anonymous\nExecute anonymous Apex code:\n* Run Apex code without creating a permanent class\n* View debug logs and execution results\n* Useful for data operations not directly supported by other tools\n* Example: \"Execute Apex code to calculate account metrics\" or \"Run a script to update related records\"\n\n### salesforce_manage_debug_logs\nManage debug logs for Salesforce users:\n* Enable debug logs for specific users\n* Disable active debug log configurations\n* Retrieve and view debug logs\n* Configure log levels (NONE, ERROR, WARN, INFO, DEBUG, FINE, FINER, FINEST)\n* Example: \"Enable debug logs for user@example.com\" or \"Retrieve recent logs for an admin user\"\n\n## Setup\n\n### Salesforce Authentication\nYou can connect to Salesforce using one of three authentication methods:\n\n#### 1. Username/Password Authentication (Default)\n1. Set up your Salesforce credentials\n2. Get your security token (Reset from Salesforce Settings)\n\n#### 2. OAuth 2.0 Client Credentials Flow\n1. Create a Connected App in Salesforce\n2. Enable OAuth settings and select \"Client Credentials Flow\"\n3. Set appropriate scopes (typically \"api\" is sufficient)\n4. Save the Client ID and Client Secret\n5. **Important**: Note your instance URL (e.g., `https://your-domain.my.salesforce.com`) as it's required for authentication\n\n#### 3. Salesforce CLI Authentication (Recommended for local/dev) (contribution by @andrea9293)\n1. Install and authenticate Salesforce CLI (`sf`).\n2. Make sure your org is authenticated and accessible via `sf org display --json` in the root of your Salesforce project.\n3. The server will automatically retrieve the access token and instance url using the CLI.\n\n### Optional: Salesforce API Version\n\nBy default, the server uses the jsforce library's default Salesforce API version, which may be too old for newer standard objects (for example, `AccountPlan` requires API version 62.0+ and fails with `sObject type 'AccountPlan' is not supported`). Set the `SALESFORCE_API_VERSION` environment variable to pin a specific version with any authentication method:\n\n```json\n\"env\": {\n  \"SALESFORCE_CONNECTION_TYPE\": \"...\",\n  \"SALESFORCE_API_VERSION\": \"62.0\"\n}\n```\n\nThe value must look like `\"62.0\"` (major version dot minor version).\n\n### Usage with Claude Desktop\n\n\nAdd to your `claude_desktop_config.json`:\n\n\n#### For Salesforce CLI Authentication:\n```json\n{\n  \"mcpServers\": {\n    \"salesforce\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@tsmztech/mcp-server-salesforce\"],\n      \"env\": {\n        \"SALESFORCE_CONNECTION_TYPE\": \"Salesforce_CLI\"\n      }\n    }\n  }\n}\n```\n\n#### For Username/Password Authentication:\n```json\n{\n  \"mcpServers\": {\n    \"salesforce\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@tsmztech/mcp-server-salesforce\"],\n      \"env\": {\n        \"SALESFORCE_CONNECTION_TYPE\": \"User_Password\",\n        \"SALESFORCE_USERNAME\": \"your_username\",\n        \"SALESFORCE_PASSWORD\": \"your_password\",\n        \"SALESFORCE_TOKEN\": \"your_security_token\",\n        \"SALESFORCE_INSTANCE_URL\": \"org_url\"        // Optional. Default value: https://login.salesforce.com\n      }\n    }\n  }\n}\n```\n\n#### For OAuth 2.0 Client Credentials Flow:\n```json\n{\n  \"mcpServers\": {\n    \"salesforce\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@tsmztech/mcp-server-salesforce\"],\n      \"env\": {\n        \"SALESFORCE_CONNECTION_TYPE\": \"OAuth_2.0_Client_Credentials\",\n        \"SALESFORCE_CLIENT_ID\": \"your_client_id\",\n        \"SALESFORCE_CLIENT_SECRET\": \"your_client_secret\",\n        \"SALESFORCE_INSTANCE_URL\": \"https://your-domain.my.salesforce.com\"  // REQUIRED: Must be your exact Salesforce instance URL\n      }\n    }\n  }\n}\n```\n\n\u003e **Note**: For OAuth 2.0 Client Credentials Flow, the `SALESFORCE_INSTANCE_URL` must be your exact Salesforce instance URL (e.g., `https://your-domain.my.salesforce.com`). The token endpoint will be constructed as `\u003cinstance_url\u003e/services/oauth2/token`.\n\n#### For Direct Access Token Authentication:\n```json\n{\n  \"mcpServers\": {\n    \"salesforce\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@tsmztech/mcp-server-salesforce\"],\n      \"env\": {\n        \"SALESFORCE_CONNECTION_TYPE\": \"Access_Token\",\n        \"SALESFORCE_INSTANCE_URL\": \"https://your-domain.my.salesforce.com\",\n        \"SALESFORCE_ACCESS_TOKEN\": \"your_access_token\"\n      }\n    }\n  }\n}\n```\n\n\u003e **Note**: Use `Access_Token` when the OAuth access token is provisioned by an external system (an SSO gateway, the SF CLI on another machine, a refresh-token-based proxy, etc.) and only the resulting access token + instance URL are available at runtime. The server skips the OAuth handshake and uses the provided token directly.\n\n## Running with Docker\n\nYou can run this MCP server inside a Docker container. Because the server communicates over `stdio` (standard input/output), the container is typically executed interactively by an MCP client using `docker run -i`.\n\n### 1. Clone the Repo\n\n```bash\ngit clone https://github.com/tsmztech/mcp-server-salesforce.git\n```\n\n### 2. Navigate to directory\n```bash\ncd mcp-server-salesforce\n```\n\n### 3. Build the Image\n\n```bash\ndocker build -t mcp-server-salesforce .\n```\n\n### 4. Authentication in Containers\n\n\u003e [!NOTE]\n\u003e The Salesforce CLI (`sf`) web-based OAuth login flow is unavailable inside headless Docker containers.\n\u003e\n\u003e When running containerized, use one of the supported environment-variable based authentication methods:\n\u003e\n\u003e - **Username \u0026 Password Authentication**\n\u003e   - `SALESFORCE_CONNECTION_TYPE=User_Password`\n\u003e   - `SALESFORCE_USERNAME`\n\u003e   - `SALESFORCE_PASSWORD`\n\u003e   - `SALESFORCE_TOKEN`\n\u003e\n\u003e - **OAuth 2.0 Client Credentials Flow**\n\u003e   - `SALESFORCE_CONNECTION_TYPE=OAuth_2.0_Client_Credentials`\n\u003e   - `SALESFORCE_CLIENT_ID`\n\u003e   - `SALESFORCE_CLIENT_SECRET`\n\u003e   - `SALESFORCE_INSTANCE_URL`\n\u003e\n\u003e - **Direct Access Token Authentication**\n\u003e   - `SALESFORCE_CONNECTION_TYPE=Access_Token`\n\u003e   - `SALESFORCE_ACCESS_TOKEN`\n\u003e   - `SALESFORCE_INSTANCE_URL`\n\n### 5. MCP Client Configuration\n\nTo register the containerized server with an MCP client (such as Claude Desktop), add the following configuration to your `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"salesforce\": {\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\",\n        \"-i\",\n        \"--rm\",\n        \"-e\",\n        \"SALESFORCE_CONNECTION_TYPE=User_Password\",\n        \"-e\",\n        \"SALESFORCE_USERNAME=your_username\",\n        \"-e\",\n        \"SALESFORCE_PASSWORD=your_password\",\n        \"-e\",\n        \"SALESFORCE_TOKEN=your_security_token\",\n        \"mcp-server-salesforce\"\n      ]\n    }\n  }\n}\n```\n\n### 6. Manual Testing\n\nYou can test the containerized server directly from your terminal:\n\n```bash\ndocker run -i --rm \\\n  -e SALESFORCE_CONNECTION_TYPE=\"User_Password\" \\\n  -e SALESFORCE_USERNAME=\"your_username\" \\\n  -e SALESFORCE_PASSWORD=\"your_password\" \\\n  -e SALESFORCE_TOKEN=\"your_security_token\" \\\n  mcp-server-salesforce\n```\n\nOnce the container is running, you can send an MCP `initialize` JSON-RPC request through `stdin`:\n\n```json\n{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"method\": \"initialize\",\n  \"params\": {\n    \"protocolVersion\": \"2024-11-05\",\n    \"capabilities\": {},\n    \"clientInfo\": {\n      \"name\": \"test-client\",\n      \"version\": \"1.0.0\"\n    }\n  }\n}\n```\n\n## Example Usage\n\n### Searching Objects\n```\n\"Find all objects related to Accounts\"\n\"Show me objects that handle customer service\"\n\"What objects are available for order management?\"\n```\n\n### Getting Schema Information\n```\n\"What fields are available in the Account object?\"\n\"Show me the picklist values for Case Status\"\n\"Describe the relationship fields in Opportunity\"\n```\n\n### Querying Records\n```\n\"Get all Accounts created this month\"\n\"Show me high-priority Cases with their related Contacts\"\n\"Find all Opportunities over $100k\"\n```\n\n### Aggregate Queries\n```\n\"Count opportunities by stage\"\n\"Show me the total revenue by account\"\n\"Find accounts with more than 10 opportunities\"\n\"Calculate average deal size by sales rep and quarter\"\n\"Get the number of cases by priority and status\"\n```\n\n### Managing Custom Objects\n```\n\"Create a Customer Feedback object\"\n\"Add a Rating field to the Feedback object\"\n\"Update sharing settings for the Service Request object\"\n```\nExamples with Field Level Security:\n```\n# Default - grants access to System Administrator automatically\n\"Create a Status picklist field on Custom_Object__c\"\n\n# Custom profiles - grants access to specified profiles\n\"Create a Revenue currency field on Account and grant access to Sales User and Marketing User profiles\"\n```\n\n### Managing Field Permissions\n```\n\"Grant System Administrator access to Custom_Field__c on Account\"\n\"Give read-only access to Rating__c field for Sales User profile\"\n\"View which profiles have access to the Custom_Field__c\"\n\"Revoke field access for specific profiles\"\n```\n\n### Searching Across Objects\n```\n\"Search for 'cloud' in Accounts and Opportunities\"\n\"Find mentions of 'network issue' in Cases and Knowledge Articles\"\n\"Search for customer name across all relevant objects\"\n```\n\n### Managing Apex Code\n```\n\"Show me all Apex classes with 'Controller' in the name\"\n\"Get the full code for the AccountService class\"\n\"Create a new Apex utility class for handling date operations\"\n\"Update the LeadConverter class to add a new method\"\n```\n\n### Managing Apex Triggers\n```\n\"List all triggers for the Account object\"\n\"Show me the code for the ContactTrigger\"\n\"Create a new trigger for the Opportunity object\"\n\"Update the Case trigger to handle after delete events\"\n```\n\n### Executing Anonymous Apex Code\n```\n\"Execute Apex code to calculate account metrics\"\n\"Run a script to update related records\"\n\"Execute a batch job to process large datasets\"\n```\n\n### Managing Debug Logs\n```\n\"Enable debug logs for user@example.com\"\n\"Retrieve recent logs for an admin user\"\n\"Disable debug logs for a specific user\"\n\"Configure log level to DEBUG for a user\"\n```\n\n## Development\n\n### Building from source\n```bash\n# Clone the repository\ngit clone https://github.com/tsmztech/mcp-server-salesforce.git\n\n# Navigate to directory\ncd mcp-server-salesforce\n\n# Install dependencies\nnpm install\n\n# Build the project\nnpm run build\n```\n\n## Contributing\nContributions are welcome! Feel free to submit a Pull Request.\n\n## License\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Issues and Support\nIf you encounter any issues or need support, please file an issue on the [GitHub repository](https://github.com/tsmztech/mcp-server-salesforce/issues).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsmztech%2Fmcp-server-salesforce","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftsmztech%2Fmcp-server-salesforce","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsmztech%2Fmcp-server-salesforce/lists"}