Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

io.github.semwalajay83-sem/salesforce-metadata-mcp

NPM · SALESFORCE-METADATA-MCP · SCANNED AUG 3

The only Salesforce MCP with Agentforce, OmniStudio & DevOps Center tools — 222 total.

+22 this week 65 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →

Supply Chain Security83
  • No malware found by supply-chain analysis.Pass
  • CVE check failed: a known medium-severity CVE affects @hono/node-server 1.19.17, reached via @modelcontextprotocol/sdk > @hono/node-server. A fixed version is available. View diagnostics → Fail
  • No install/post-install scripts declared.Pass
  • Only part of the dependency tree could be resolved (107 of 111), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability65
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 38003 tokens (~171/item across 222 items; 222 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management23
  • Stability check failed: the tool surface changed between 2.7.0 and 2.8.7: 0 tool removals, 1 breaking changes, 3 additions. See how to fix → Fail
Tool Coverage98
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 94% of tool parameters carry a description.Partial
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

npm · salesforce-metadata-mcp

# add to Claude Code
claude mcp add semwalajay83-sem-salesforce-metadata-mcp -- npx -y salesforce-metadata-mcp
# add to Codex CLI
codex mcp add semwalajay83-sem-salesforce-metadata-mcp -- npx -y salesforce-metadata-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "semwalajay83-sem-salesforce-metadata-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "salesforce-metadata-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add semwalajay83-sem-salesforce-metadata-mcp --command npx --arg -y --arg salesforce-metadata-mcp
# ~/.hermes/config.yaml
mcp_servers:
  semwalajay83-sem-salesforce-metadata-mcp:
    command: "npx"
    args: ["-y", "salesforce-metadata-mcp"]
// mcp.json
{
  "mcpServers": {
    "semwalajay83-sem-salesforce-metadata-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "salesforce-metadata-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 2 Aug 26 +39
    • Known CVEs: unverified → fail security
    • Stability: unverified → fail security
    • Malware scan: unverified → pass security
    • Schema quality: unverified → excellent functional
    • MCP protocol: unverified → pass functional
    • Dependency health: unverified → partial functional
  • 1 Aug 26 −9
    • Known CVEs: fail → unverified security
    • Dependency health: partial → unverified functional
  • 31 Jul 26 +20
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 +7
    • Provenance: unverified → fail security
    • Install scripts: unverified → pass security
    • Security disclosure: unverified → fail functional
    • Dependency health: partial → unverified functional
    • Maintenance: unverified → pass functional
    • License: unverified → pass functional
    • Licence: MIT functional
  • 29 Jul 26 −16
    • Malware scan: pass → unverified security
    • Security disclosure: fail → unverified functional
    • Dependency health: unverified → partial functional
    • Package version: 2.7.0 → 2.8.0 functional
  • 28 Jul 26 −19
    • Tool coverage: 100 → unverified functional
    • First check of Schema quality: unverified functional
  • 27 Jul 26 43

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Analysed npm/[email protected]

Provenance none

Ecosystem: npm · Outcome: none

Vulnerabilities 1 finding
ID CVE Severity Vector Fix available
GHSA-frvp-7c67-39w9 medium CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N yes
Dependencies 107 packages

107 packages in the resolved dependency tree · 107 deprecated · 39 stale.

The dependency tree was only partially resolved, so these counts may be incomplete.

MCP tools — 222 exposed · ~38,003 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
sf_list_sandboxes ~61

Lists all sandbox orgs associated with the production org, including their status, license type, and dates. Returns data from the SandboxInfo Tooling API object. Use this to monitor sandbox creation and refresh status. Must be called from the production org.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

sf_migrate_aura_to_lwc ~127

Analyzes an Aura component and returns a comprehensive migration guide with Aura-to-LWC concept mappings, key differences, and an optional LWC scaffold. A read-only advisory tool — does not modify the org. auraComponentName: the Aura component name to analyze includeScaffold: whether to generate equivalent LWC template, JS, CSS, and meta files

NameTypeReqDescription
auraComponentNamestringyesAura component name to analyze, e.g. 'MyAuraComponent'
includeScaffoldbooleanWhether to generate equivalent LWC scaffold code

No output schema declared.

No examples provided.

sf_promote_devops_work_item ~96

Promotes a DevOps Center work item to a specific pipeline stage by ID. Use to move work items forward in the pipeline when you know the exact target stage. workItemId: DevOps Center work item ID targetStageId: ID of the target pipeline stage

NameTypeReqDescription
targetStageIdstringyesTarget pipeline stage ID
workItemIdstringyesDevOps Center work item ID

No output schema declared.

No examples provided.

sf_query_records ~157

Executes a SOQL query against the org and returns matching records. Provide the full SOQL string in the query param. Use for reading data, checking existing records before creating, or verifying changes. Supports aggregate queries — GROUP BY with COUNT(), SUM(), AVG(), MAX(), MIN(), e.g.: 'SELECT StageName, COUNT(Id), SUM(Amount) FROM Opportunity GROUP BY StageName' Aggregate results come back as regular records with the aggregate expressions as field keys (e.g. "expr0").

NameTypeReqDescription
limitintegerMaximum records to return (default 200)
querystringyesFull SOQL query string, e.g. 'SELECT Id, Name FROM Account WHERE Industry = \'Technology\' LIMIT 10'

No output schema declared.

No examples provided.

sf_refresh_sandbox ~109

Refreshes an existing sandbox org by re-copying it from production via the Tooling API. The sandbox must already exist (use sf_create_sandbox for new sandboxes). Refreshing resets the sandbox to the current state of the production org. The refresh is asynchronous — use sf_list_sandboxes to monitor status.

NameTypeReqDescription
autoActivatebooleanAutomatically activate after refresh
licenseTypestringyesSandbox license type
sandboxNamestringyesSandbox name to refresh

No output schema declared.

No examples provided.

sf_reset_user_password ~107

Resets a Salesforce user's password by username or user ID. Sends a password-reset email to the user's email address. Use when a user is locked out or needs to set a new password. username or userId: identify the user (at least one required) sendEmail: set false to reset without sending an email (default: true)

NameTypeReqDescription
sendEmailbooleanSend password reset email to the user
usernamestringyesSalesforce username of the user to reset

No output schema declared.

No examples provided.

sf_resolve_devops_merge_conflict ~100

Marks a merge conflict in DevOps Center as resolved with a specified resolution strategy. Use after manually resolving conflicts in the source control system. conflictId: merge conflict record ID resolution: resolution strategy — 'ours' (keep our changes), 'theirs' (accept incoming), or 'manual' (already resolved)

NameTypeReqDescription
conflictIdstringyesMerge conflict record ID
resolutionstringyesResolution strategy

No output schema declared.

No examples provided.

sf_retrieve_metadata ~147

Retrieves metadata components from the org and returns their actual file contents. Use this to read existing configuration before making changes, to back up metadata, or to check what is really deployed rather than what you think is deployed. Waits for the async retrieve to finish and unpacks the resulting zip, returning each file's path and source. Large files are truncated.

NameTypeReqDescription
componentNamestringSingle component name (used with metadataType)
componentsarrayMetadata components to retrieve
metadataTypestringSingle metadata type (alternative to components array)
packageXmlstringRaw package.xml content for selective retrieve. If provided, components list is ignored.

No output schema declared.

No examples provided.

sf_run_apex_tests ~107

Runs one or more Apex test classes and returns pass/fail results with any error messages. Uses the Salesforce Tooling API runTestsAsynchronous endpoint and polls for results. Use after deploying Apex code to verify test coverage, or to run regression tests before a release.

NameTypeReqDescription
testClassesarrayyesList of test class names to run, e.g. ['AccountServiceTest', 'ContactTriggerTest']
waitMinutesintegerMax minutes to wait for test results

No output schema declared.

No examples provided.

sf_run_code_scanner ~325

Runs Salesforce Code Analyzer against Apex classes in the org — a real multi-engine static analysis scan (PMD rules including ApexCRUDViolation and OperationWithLimitsInLoop, SFGE data-flow analysis for SOQL injection, RetireJS for vulnerable JS libraries, ESLint, and Salesforce's regex engine), on top of the lighter-weight sf_scan_apex_antipatterns heuristic check. Retrieves class bodies via the Tooling API into a temp workspace, runs the scanner, and cleans up afterward. PMD/CPD/SFGE engines require Java 11+ on the host running this MCP server — if Java isn't detected, the scan automatically falls back to the Java-free engines (eslint, retire-js, regex, flow) and flags this in the response rather than failing. classNames: optional list of class names to scan (omit to scan all active classes) maxClasses: maximum classes to scan (default 20, max 200) ruleSelector: optional override, e.g. ['pmd:Security'] — defaults to 'Recommended' rules (auto-restricted per the Java note above)

NameTypeReqDescription
classNamesarrayApex class names to scan (omit to scan all active classes)
maxClassesintegerMaximum number of classes to scan
ruleSelectorarrayOverride rule selectors, e.g. ['pmd:Security', 'eslint:Recommended']. Defaults to 'Recommended' rules, auto-restricted to non-Java engines (eslint, retire-js, regex, flow) if Java isn't detected on t…

No output schema declared.

No examples provided.

sf_scan_apex_antipatterns ~133

Scans Apex classes in the org for common anti-patterns using the Tooling API. Detects SOQL/DML in loops, hardcoded Salesforce IDs, and debug statements left in production code. Use before deploying to catch performance and quality issues early. classNames: optional list of class names to scan (omits test classes with __Test suffix) maxClasses: maximum classes to scan (default 20, max 200)

NameTypeReqDescription
classNamesarrayApex class names to scan (omit to scan all)
maxClassesintegerMaximum number of classes to scan

No output schema declared.

No examples provided.

sf_search_records ~214

Searches across multiple Salesforce objects using SOSL (Salesforce Object Search Language). SOSL uses the search index and is faster than SOQL for cross-object text searches. searchTerm: the text to search for objects: array of objects to search with optional fields list, e.g. [{ objectName: 'Account', fields: ['Id', 'Name'] }, { objectName: 'Contact', fields: ['Id', 'Name', 'Email'] }] searchGroup: where to search — ALL FIELDS (default), NAME FIELDS, EMAIL FIELDS, or PHONE FIELDS limit: max records per object (default: 20, max: 200)

NameTypeReqDescription
limitintegerMaximum results per object
objectTypesarrayAlias for objects: array of object API name strings
objectsarrayObjects to search across: strings or {objectName, fields} objects
searchTermstringyesSearch term (SOSL FIND clause value, no quotes needed)

No output schema declared.

No examples provided.

sf_send_email ~299

Sends an email from Salesforce using the emailSimple invocable action. The email is sent from the running user's email address through Salesforce's email infrastructure (respects org email deliverability settings). toAddresses: one or more recipient email addresses body / htmlBody: email body content (htmlBody takes precedence) templateName: use an existing email template instead of providing body text whatId: related record ID (e.g. Opportunity, Case) — links the email as an activity whoId: Contact or Lead ID — links the email to the person record saveAsActivity: saves the email as an EmailMessage activity (default: true) Note: Salesforce email limits apply (daily email limits based on org edition). Mass emails should use list email features instead.

NameTypeReqDescription
bodystringPlain text email body
ccAddressesarrayCC email addresses
htmlBodystringHTML email body (takes precedence over body)
saveAsActivitybooleanSave email as an Activity record
subjectstringyesEmail subject line
templateNamestringEmail template API name (uses template instead of body)
toAddressesarrayyesRecipient email addresses
useSignaturebooleanAppend running user's email signature
whatIdstringRelated record ID (e.g. Opportunity or Case ID)
whoIdstringContact or Lead ID

No output schema declared.

No examples provided.

sf_share_report_folder ~111

Shares a Report or Dashboard folder with users, roles, groups, or territories. Sets access levels (View, Edit, Manage) per share recipient. Use after creating a folder to grant team members access.

NameTypeReqDescription
accessLevelstringAccess level shorthand: View, Edit, Manage
folderNamestringyesFolder API name to share
folderTypestringWhether this is a report or dashboard folder
shareWitharrayyesWho to share the folder with

No output schema declared.

No examples provided.

sf_translate_custom_label ~138

Adds or updates a translation for a Salesforce Custom Label via the Metadata API (Translations type). Provide the label API name, the target language code (e.g. 'fr' for French, 'de' for German, 'ja' for Japanese), and the translated value. Translation Workbench must be enabled in the org. Existing translations for the same label and language will be overwritten.

NameTypeReqDescription
labelNamestringyesCustom label full name (API name)
languagestringyesLanguage code, e.g. 'fr', 'de', 'es', 'ja'
translatedValuestringyesTranslated text value

No output schema declared.

No examples provided.

sf_translate_field_label ~175

Adds or updates a translation for a field label (and optionally help text) on a Salesforce object via the Metadata API (CustomObjectTranslation type). Provide the object API name, field API name, language code (e.g. 'fr', 'de', 'es'), and the translated label. Optionally include translated help text. Translation Workbench must be enabled.

NameTypeReqDescription
fieldNamestringyesField API name, e.g. 'Name' or 'MyField__c'
languagestringyesLanguage code, e.g. 'fr', 'de', 'es', 'ja'
objectNamestringyesObject API name, e.g. 'Account'
translatedHelpTextstringTranslated help text (optional)
translatedLabelstringyesTranslated field label

No output schema declared.

No examples provided.

sf_uninstall_package ~142

Uninstalls a second-generation package from a target org using the SF CLI. Removes all metadata delivered by the package. Use before reinstalling a broken package, or to clean up a package no longer needed. packageId: package version ID (04t...) or alias to uninstall targetOrg: target org alias (defaults to SF_ALIAS env var) wait: minutes to wait for uninstall to complete

NameTypeReqDescription
packageIdstringyesPackage version ID (04t...) or alias to uninstall
targetOrgstringTarget org alias (defaults to SF_ALIAS env var)
waitintegerMinutes to wait for uninstall to complete

No output schema declared.

No examples provided.

sf_update_dashboard ~116

Updates an existing Dashboard's title or description by reading the current configuration from the org and applying changes. The dashboard must already exist. For structural changes (adding/removing components), use sf_create_dashboard to create a new version.

NameTypeReqDescription
componentsToAddarrayDashboard components to add
componentsToRemovearrayComponent titles to remove
dashboardNamestringyesDashboard API name
labelstringNew dashboard title/label
runningUserstringUsername to run dashboard as

No output schema declared.

No examples provided.

sf_update_flexcard ~156

Updates an existing OmniStudio FlexCard (OmniUiCard). Reads the current definition, merges the provided changes, and redeploys. Provide only the fields you want to change. The card will be deactivated automatically if active — use sf_activate_flexcard to reactivate after the update. All fields arrays (fields, actions, states) are replaced entirely if provided.

NameTypeReqDescription
actionsarray
cardNamestringyesAPI name of the FlexCard to update
dataSourceNamestring
dataSourceTypestring
descriptionstring
fieldsarray
labelstring
statesarray

No output schema declared.

No examples provided.

sf_update_integration_procedure ~112

Updates an existing Integration Procedure's metadata (description, active status). Identified by procedureName + subType (fullName = procedureName_subType). For element/step changes, use the OmniStudio Integration Procedure Designer. Set isActive: false to deactivate, then make changes, then sf_activate_integration_procedure.

NameTypeReqDescription
descriptionstring
isActiveboolean
procedureNamestringyesType portion of procedure key
subTypestringyes

No output schema declared.

No examples provided.

sf_update_lwc ~142

Updates an existing Lightning Web Component by redeploying it with updated HTML, JavaScript, or CSS. Provide only the files you want to update — any files omitted will use empty placeholders (so you should provide all files you want to keep). The component is redeployed via the Metadata API.

NameTypeReqDescription
apiVersionstringAPI version
componentNamestringyesExisting LWC component name to update
cssstringUpdated CSS (leave undefined to keep existing)
htmlstringUpdated HTML template (leave undefined to keep existing)
javascriptstringUpdated JavaScript controller (leave undefined to keep existing)

No output schema declared.

No examples provided.

sf_update_omniscript ~146

Updates an existing OmniScript's metadata properties (description, LWC mode, embeddable flag). Identified by Type + SubType + Language. Note: OmniScript element/step editing is best done in the OmniScript Designer. This tool updates the container metadata only. The script will be deactivated if currently active — reactivate with sf_activate_omniscript.

NameTypeReqDescription
descriptionstring
isLwcEnabledboolean
isOmniScriptEmbeddableboolean
languagestring
subTypestringyesOmniScript sub-type
typestringyesOmniScript type

No output schema declared.

No examples provided.

sf_update_record ~106

Updates an existing SObject record by record ID via the Salesforce REST API. Provide the object API name, the 15 or 18 character record ID, and the fields to update. Only provided fields are changed — omitted fields retain their current values.

NameTypeReqDescription
fieldsobjectyesKey-value pairs of field API names to update values
objectApiNamestringyesSObject API name
recordIdstringyesSalesforce record ID (15 or 18 chars)

No output schema declared.

No examples provided.

sf_update_user ~145

Updates an existing Salesforce user's properties via the REST API. Look up the user by username and update fields like firstName, lastName, email, title, department, phone, or isActive (to deactivate/reactivate). Only fields you provide are updated.

NameTypeReqDescription
additionalFieldsobjectAdditional User SObject fields to update, e.g. {Department: 'Sales', Title: 'Manager'}
isActivebooleanActivate or deactivate the user
profileNamestringNew profile name
roleNamestringNew role name (or empty string to remove role)
usernamestringyesUsername to identify the user to update

No output schema declared.

No examples provided.

sf_upsert_record ~184

Creates or updates a Salesforce record using an External ID field for matching. If a record with the given external ID value exists, it is updated; otherwise a new record is created. objectApiName: the SObject API name (e.g. 'Account', 'Contact') externalIdField: the External ID field API name used for matching (e.g. 'Legacy_Id__c') externalIdValue: the value to match on fields: the field values to set on the record

NameTypeReqDescription
externalIdFieldstringyesExternal ID field API name, e.g. 'My_External_Id__c'
externalIdValuestringyesValue of the external ID to match on
fieldsobjectyesField key-value pairs to set/update
objectApiNamestringyesSObject API name, e.g. 'Account'

No output schema declared.

No examples provided.