@pw-sf/salesforce-mcp-server
npm
v1.7.4
Published by @pw-sf — no publish provenance, so origin is unverified, but the source is public: the repository link below is self-declared yet readable, so you can inspect the code before adopting it.
MCP server enabling AI assistants to interact with Salesforce orgs through the Salesforce CLI
The grade answers one question — how safe is this server for you to adopt — so it is computed in two auditable stages. Nothing below is an opinion or an LLM's guess; every line is a real term the deterministic engine applied, and the same input always yields the same number.
1. Threat score — 100 − 0 = 100. What the published surface and source actually contain:
The deterministic scan raised no scored threat in the surface it inspected — the threat score stayed at 100. Capability observations and advisory notes are recorded but never lower it.
2. Client adoption risk — 100 − 7 = 93. Three small, subtract-only factors that reflect your risk in adopting it — a clean scan proves less on a powerful, unverified or barely-inspectable package, so the grade says so plainly:
| Points | Adoption-risk factor |
|---|---|
| −6 | capability blast radius (high) — client exposure if the model is manipulated |
| −1 | publisher verification (public source) — no provenance, but the source is public and inspectable |
Capability observations and info notes are shown under Findings but never scored.
Open any row's finding below for the file, line and evidence behind a deduction.
Tool "run_code_analyzer" appears to run shell commands or evaluate code (keyword "run_code" in tool name). Arbitrary execution driven by model input is one of the most dangerous MCP capabilities; combined with any untrusted input it becomes RCE.
Fix: Sandbox execution, allowlist commands/arguments, and never pass model output to a shell unescaped.
Location: tool run_code_analyzer
In the server's implementation (`build/tools/records.js:5`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: ort { exec } from "node:child_process"; import { platform } from "node:os"; import z from "zod"; /** * Wraps a Zod obje
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server build/tools/records.js
In the server's implementation (`build/utils/sfCommand.js:1`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: ort { exec } from "node:child_process"; import { platform } from "node:os"; import { existsSync } from "node:fs"; import
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server build/utils/sfCommand.js
Untrusted-input tools ([apex_log_list, apex_get_log, revenue_cloud_get_decision_table_data]) co-exist with external-action tools ([run_code_analyzer]). A prompt injection could cause unwanted external actions, though no direct sensitive-data leak path was found.
Evidence: untrusted [apex_log_list, apex_get_log, revenue_cloud_get_decision_table_data] → sinks [run_code_analyzer]
Fix: Require confirmation for state-changing/egress actions triggered after processing untrusted content.
Location: flow apex_log_list → run_code_analyzer
Tool "run_code_analyzer" can mutate/egress but declares no destructiveHint. Clients that don't default to spec-safe behavior may not prompt before running it.
Fix: Declare accurate annotations, and gate destructive tools on user confirmation regardless.
Location: tool run_code_analyzer
Each tool and what it can reach — statically extracted from the published source.
apex_get_logingests untrusted inputapex_log_listingests untrusted inputrevenue_cloud_get_decision_table_dataingests untrusted inputrun_code_analyzerruns code / shellassign_permission_setno sensitive capabilityassign_permission_set_licenseno sensitive capabilityclear_default_orgno sensitive capabilitycreate_recordno sensitive capabilitydelete_recordno sensitive capabilitydeploy_startno sensitive capabilitydisplay_userno sensitive capabilityexecute_anonymous_apexno sensitive capabilitygenerate_classno sensitive capabilitygenerate_componentno sensitive capabilitygenerate_triggerno sensitive capabilityget_apex_code_coverageno sensitive capabilityget_apex_test_resultsno sensitive capabilityget_default_orgno sensitive capabilityget_server_permissionsno sensitive capabilityinstall_skillno sensitive capabilitylist_code_analyzer_rulesno sensitive capabilitylist_connected_salesforce_orgsno sensitive capabilitylist_metadatano sensitive capabilitylist_metadata_typesno sensitive capabilitylogin_into_orgno sensitive capabilitylogoutno sensitive capabilityopenno sensitive capabilityopen_recordno sensitive capabilitypackage_installno sensitive capabilitypackage_uninstallno sensitive capabilityquery_recordsno sensitive capabilityquery_records_to_fileno sensitive capabilityrevenue_cloud_amend_assetsno sensitive capabilityrevenue_cloud_cancel_assetsno sensitive capabilityrevenue_cloud_clone_sales_transactionno sensitive capabilityrevenue_cloud_create_context_attributesno sensitive capabilityrevenue_cloud_create_context_mappingsno sensitive capabilityrevenue_cloud_create_pricing_recipe_mappingno sensitive capabilityrevenue_cloud_create_pricing_waterfallno sensitive capabilityrevenue_cloud_create_procedure_plan_definitionno sensitive capabilityrevenue_cloud_deep_cloneno sensitive capabilityrevenue_cloud_deploy_snapshotno sensitive capabilityrevenue_cloud_evaluate_procedure_planno sensitive capabilityrevenue_cloud_evaluate_procedure_plan_by_nameno sensitive capabilityrevenue_cloud_get_api_execution_logsno sensitive capabilityrevenue_cloud_get_catalog_by_idno sensitive capabilityrevenue_cloud_get_categoriesno sensitive capabilityrevenue_cloud_get_category_by_idno sensitive capabilityrevenue_cloud_get_context_attributeno sensitive capabilityrevenue_cloud_get_context_definitionno sensitive capabilityrevenue_cloud_get_context_definitionsno sensitive capabilityrevenue_cloud_get_context_mappingno sensitive capabilityrevenue_cloud_get_context_nodeno sensitive capabilityrevenue_cloud_get_context_node_mappingno sensitive capabilityrevenue_cloud_get_context_tagno sensitive capabilityrevenue_cloud_get_context_tagsno sensitive capabilityrevenue_cloud_get_decision_table_definitionno sensitive capabilityrevenue_cloud_get_eligible_promotionsno sensitive capabilityrevenue_cloud_get_index_configurationsno sensitive capabilityrevenue_cloud_get_index_settingno sensitive capabilityrevenue_cloud_get_index_snapshotsno sensitive capabilityrevenue_cloud_get_lookup_tablesno sensitive capabilityrevenue_cloud_get_pricing_recipeno sensitive capabilityrevenue_cloud_get_pricing_waterfallno sensitive capabilityrevenue_cloud_get_procedure_plan_definitionno sensitive capabilityrevenue_cloud_get_procedure_plan_definitionsno sensitive capabilityrevenue_cloud_get_procedure_plan_versionno sensitive capabilityrevenue_cloud_get_product_classification_detailsno sensitive capabilityrevenue_cloud_get_product_detailsno sensitive capabilityrevenue_cloud_get_product_related_recordsno sensitive capabilityrevenue_cloud_get_sales_transaction_errorsno sensitive capabilityrevenue_cloud_get_simulation_input_variables_with_datano sensitive capabilityrevenue_cloud_get_snapshot_index_errorsno sensitive capabilityrevenue_cloud_global_searchno sensitive capabilityrevenue_cloud_guided_selectionno sensitive capabilityrevenue_cloud_list_catalogsno sensitive capabilityrevenue_cloud_list_productsno sensitive capabilityrevenue_cloud_place_sales_transactionno sensitive capabilityrevenue_cloud_preview_approvalno sensitive capabilityrevenue_cloud_price_contextno sensitive capabilityrevenue_cloud_pricingno sensitive capabilityrevenue_cloud_put_index_configurationsno sensitive capabilityrevenue_cloud_qualificationno sensitive capabilityrevenue_cloud_read_sales_transactionno sensitive capabilityrevenue_cloud_refresh_decision_tableno sensitive capabilityrevenue_cloud_renew_assetsno sensitive capabilityrevenue_cloud_sync_pricing_datano sensitive capabilityrevenue_cloud_update_decision_table_datano sensitive capabilityrevenue_cloud_update_index_settingno sensitive capabilityrevenue_cloud_update_procedure_plan_definitionno sensitive capabilityrevenue_cloud_update_procedure_plan_versionno sensitive capabilityrun_apex_testsno sensitive capabilityscanner_runno sensitive capabilityscanner_run_dfano sensitive capabilityschema_generate_tabno sensitive capabilitysearch_recordsno sensitive capabilityset_default_orgno sensitive capabilitysobject_describeno sensitive capabilitysobject_listno sensitive capabilityupdate_recordno sensitive capabilityCross-tool combinations that form a data-exfiltration primitive (untrusted input → sensitive source → external sink).
Scan history per published version. The engine is deterministic — the same version always yields the same score, so a changed score means the package itself changed.
| Version | Score | Findings | Engine | Scanned |
|---|---|---|---|---|
v1.7.4 latest |
A 93/100 | 5 | 1.13.0 | 2026-09-07 |
Show this server's live Trust Score in your README, docs or website. The badge is served straight from the registry and updates automatically after every rescan — no API key needed. It links back to this page, so anyone who sees the grade can also read the findings behind it instead of taking a number on faith.
The score above is reproducible: the same package version always yields the same result. Run it locally or over the free API — no account, no LLM, fully deterministic.
npx mcptrustchecker scan @pw-sf/salesforce-mcp-server --online
Independent packages implementing the same tool, scanned with the same engine. Compare all 27 side by side →
MCP server for Salesforce CRM integration with Claude Code
A comprehensive Model Context Protocol (MCP) server that provides seamless Salesforce integration for AI development tools.
Comprehensive Salesforce MCP Server with 61+ specialized tools for complete Salesforce ecosystem management - from data operations to advanced DevOps workflows. Supports stdio + HTTP modes for AI assistants and orchestration platforms.
Salesforce CRM integration for the Model Context Protocol (MCP). Autonomous AI access to accounts, contacts, and SOQL queries.
Open-source MCP server that makes any AI assistant a Salesforce expert
MCP Server for Salesforce CRM - Leads, Contacts, Opportunities, Cases
Free public tax reference data — GST/VAT, income, company and capital-gains tax rules for 50+ countries.
The approval gate for unattended UCP buying agents — a policy/approval MCP proxy in front of a merchant's UCP checkout endpoint.
Autotask PSA MCP server. Generic entity query/get/create/update across the full REST API plus convenience tools for tickets, companies, contacts, projects, tasks and time entries. AI-safe with readonly mode and destructive-action confirmation. stdio + opt
MCP server for B2C Commerce developer experience tools
Search, compare and contact real-world companies through a public MCP business directory.
Norwegian business register (Brønnøysundregistrene) as an MCP server — companies, roles, subunits and annual accounts, with the register's silent traps encoded as guards.