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.
Available components
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
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 2 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
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
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
claude mcp add semwalajay83-sem-salesforce-metadata-mcp -- npx -y salesforce-metadata-mcp
codex mcp add semwalajay83-sem-salesforce-metadata-mcp -- npx -y salesforce-metadata-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"semwalajay83-sem-salesforce-metadata-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"salesforce-metadata-mcp"
],
"enabled": true
}
}
} openclaw mcp add semwalajay83-sem-salesforce-metadata-mcp --command npx --arg -y --arg salesforce-metadata-mcp
mcp_servers:
semwalajay83-sem-salesforce-metadata-mcp:
command: "npx"
args: ["-y", "salesforce-metadata-mcp"] {
"mcpServers": {
"semwalajay83-sem-salesforce-metadata-mcp": {
"command": "npx",
"args": [
"-y",
"salesforce-metadata-mcp"
]
}
}
} 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.
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.
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.
sf_list_sandboxes 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 Migrate Aura Component 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
| Name | Type | Req | Description |
|---|---|---|---|
| auraComponentName | string | yes | Aura component name to analyze, e.g. 'MyAuraComponent' |
| includeScaffold | boolean | — | Whether to generate equivalent LWC scaffold code |
No output schema declared.
No examples provided.
sf_promote_devops_work_item Promote DevOps Center Work Item to Stage ~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
| Name | Type | Req | Description |
|---|---|---|---|
| targetStageId | string | yes | Target pipeline stage ID |
| workItemId | string | yes | DevOps Center work item ID |
No output schema declared.
No examples provided.
sf_query_records Query Records (SOQL) ~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").
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Maximum records to return (default 200) |
| query | string | yes | Full 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| autoActivate | boolean | — | Automatically activate after refresh |
| licenseType | string | yes | Sandbox license type |
| sandboxName | string | yes | Sandbox name to refresh |
No output schema declared.
No examples provided.
sf_reset_user_password 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)
| Name | Type | Req | Description |
|---|---|---|---|
| sendEmail | boolean | — | Send password reset email to the user |
| username | string | yes | Salesforce username of the user to reset |
No output schema declared.
No examples provided.
sf_resolve_devops_merge_conflict Resolve DevOps Center 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)
| Name | Type | Req | Description |
|---|---|---|---|
| conflictId | string | yes | Merge conflict record ID |
| resolution | string | yes | Resolution strategy |
No output schema declared.
No examples provided.
sf_retrieve_metadata 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.
| Name | Type | Req | Description |
|---|---|---|---|
| componentName | string | — | Single component name (used with metadataType) |
| components | array | — | Metadata components to retrieve |
| metadataType | string | — | Single metadata type (alternative to components array) |
| packageXml | string | — | Raw package.xml content for selective retrieve. If provided, components list is ignored. |
No output schema declared.
No examples provided.
sf_run_apex_tests 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.
| Name | Type | Req | Description |
|---|---|---|---|
| testClasses | array | yes | List of test class names to run, e.g. ['AccountServiceTest', 'ContactTriggerTest'] |
| waitMinutes | integer | — | Max minutes to wait for test results |
No output schema declared.
No examples provided.
sf_run_code_scanner Run Code Analyzer (PMD/ESLint/RetireJS/SFGE) ~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)
| Name | Type | Req | Description |
|---|---|---|---|
| classNames | array | — | Apex class names to scan (omit to scan all active classes) |
| maxClasses | integer | — | Maximum number of classes to scan |
| ruleSelector | array | — | Override 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 Scan Apex for Anti-Patterns ~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)
| Name | Type | Req | Description |
|---|---|---|---|
| classNames | array | — | Apex class names to scan (omit to scan all) |
| maxClasses | integer | — | Maximum number of classes to scan |
No output schema declared.
No examples provided.
sf_search_records Search Records (SOSL) ~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)
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Maximum results per object |
| objectTypes | array | — | Alias for objects: array of object API name strings |
| objects | array | — | Objects to search across: strings or {objectName, fields} objects |
| searchTerm | string | yes | Search term (SOSL FIND clause value, no quotes needed) |
No output schema declared.
No examples provided.
sf_send_email Send Email via Salesforce ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | — | Plain text email body |
| ccAddresses | array | — | CC email addresses |
| htmlBody | string | — | HTML email body (takes precedence over body) |
| saveAsActivity | boolean | — | Save email as an Activity record |
| subject | string | yes | Email subject line |
| templateName | string | — | Email template API name (uses template instead of body) |
| toAddresses | array | yes | Recipient email addresses |
| useSignature | boolean | — | Append running user's email signature |
| whatId | string | — | Related record ID (e.g. Opportunity or Case ID) |
| whoId | string | — | Contact or Lead ID |
No output schema declared.
No examples provided.
sf_share_report_folder Share Report or Dashboard 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.
| Name | Type | Req | Description |
|---|---|---|---|
| accessLevel | string | — | Access level shorthand: View, Edit, Manage |
| folderName | string | yes | Folder API name to share |
| folderType | string | — | Whether this is a report or dashboard folder |
| shareWith | array | yes | Who to share the folder with |
No output schema declared.
No examples provided.
sf_translate_custom_label 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.
| Name | Type | Req | Description |
|---|---|---|---|
| labelName | string | yes | Custom label full name (API name) |
| language | string | yes | Language code, e.g. 'fr', 'de', 'es', 'ja' |
| translatedValue | string | yes | Translated text value |
No output schema declared.
No examples provided.
sf_translate_field_label 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.
| Name | Type | Req | Description |
|---|---|---|---|
| fieldName | string | yes | Field API name, e.g. 'Name' or 'MyField__c' |
| language | string | yes | Language code, e.g. 'fr', 'de', 'es', 'ja' |
| objectName | string | yes | Object API name, e.g. 'Account' |
| translatedHelpText | string | — | Translated help text (optional) |
| translatedLabel | string | yes | Translated field label |
No output schema declared.
No examples provided.
sf_uninstall_package 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
| Name | Type | Req | Description |
|---|---|---|---|
| packageId | string | yes | Package version ID (04t...) or alias to uninstall |
| targetOrg | string | — | Target org alias (defaults to SF_ALIAS env var) |
| wait | integer | — | Minutes to wait for uninstall to complete |
No output schema declared.
No examples provided.
sf_update_dashboard 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.
| Name | Type | Req | Description |
|---|---|---|---|
| componentsToAdd | array | — | Dashboard components to add |
| componentsToRemove | array | — | Component titles to remove |
| dashboardName | string | yes | Dashboard API name |
| label | string | — | New dashboard title/label |
| runningUser | string | — | Username to run dashboard as |
No output schema declared.
No examples provided.
sf_update_flexcard Update OmniStudio 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.
| Name | Type | Req | Description |
|---|---|---|---|
| actions | array | — | — |
| cardName | string | yes | API name of the FlexCard to update |
| dataSourceName | string | — | — |
| dataSourceType | string | — | — |
| description | string | — | — |
| fields | array | — | — |
| label | string | — | — |
| states | array | — | — |
No output schema declared.
No examples provided.
sf_update_integration_procedure Update OmniStudio 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.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | — | — |
| isActive | boolean | — | — |
| procedureName | string | yes | Type portion of procedure key |
| subType | string | yes | — |
No output schema declared.
No examples provided.
sf_update_lwc Update Lightning Web Component ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| apiVersion | string | — | API version |
| componentName | string | yes | Existing LWC component name to update |
| css | string | — | Updated CSS (leave undefined to keep existing) |
| html | string | — | Updated HTML template (leave undefined to keep existing) |
| javascript | string | — | Updated JavaScript controller (leave undefined to keep existing) |
No output schema declared.
No examples provided.
sf_update_omniscript Update OmniStudio 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.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | — | — |
| isLwcEnabled | boolean | — | — |
| isOmniScriptEmbeddable | boolean | — | — |
| language | string | — | — |
| subType | string | yes | OmniScript sub-type |
| type | string | yes | OmniScript type |
No output schema declared.
No examples provided.
sf_update_record Update SObject 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.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | object | yes | Key-value pairs of field API names to update values |
| objectApiName | string | yes | SObject API name |
| recordId | string | yes | Salesforce record ID (15 or 18 chars) |
No output schema declared.
No examples provided.
sf_update_user Update Salesforce 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.
| Name | Type | Req | Description |
|---|---|---|---|
| additionalFields | object | — | Additional User SObject fields to update, e.g. {Department: 'Sales', Title: 'Manager'} |
| isActive | boolean | — | Activate or deactivate the user |
| profileName | string | — | New profile name |
| roleName | string | — | New role name (or empty string to remove role) |
| username | string | yes | Username to identify the user to update |
No output schema declared.
No examples provided.
sf_upsert_record Upsert SObject 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
| Name | Type | Req | Description |
|---|---|---|---|
| externalIdField | string | yes | External ID field API name, e.g. 'My_External_Id__c' |
| externalIdValue | string | yes | Value of the external ID to match on |
| fields | object | yes | Field key-value pairs to set/update |
| objectApiName | string | yes | SObject API name, e.g. 'Account' |
No output schema declared.
No examples provided.