salesforce-metadata-mcp
This MCP server provides 223 tools for building, configuring, automating, and managing Salesforce orgs directly from Claude or any MCP client, covering the full development lifecycle from schema design to Agentforce AI agents.
Objects & Schema: Create and manage custom objects, fields (formula, picklist, lookup), picklist values, custom metadata types/records, custom labels, custom settings, global value sets, record types, business processes, page layouts, compact layouts, and field dependencies. Describe object schemas and audit field permissions.
Automation & Logic: Build Flows (AutoLaunched, Screen, Record-Triggered, Scheduled) with advanced elements (Decision, Record operations, Apex actions, Subflows, Loops, Assignments, Screens). Create approval processes, validation rules, workflow rules (email alerts, field updates, outbound messages), platform events, assignment rules, escalation rules, auto-response rules, matching rules, duplicate rules, Apex email services, and scheduled Apex jobs.
Security & Access: Configure permission sets, permission set groups, muting permission sets, custom permissions, roles, queues, sharing rules, field-level security audits, and named credentials for secure callouts.
UI & Experience: Build Lightning apps, custom tabs, list views, email templates, static resources, custom notification types, report types, dashboards, report/dashboard folders (with sharing), and Experience Cloud sites/pages.
Apex & LWC Development: Deploy and read Apex classes, triggers, test classes; run tests and execute anonymous Apex; retrieve debug logs; scan code for anti-patterns (PMD, SFGE, ESLint, RetireJS). Create, update, and test Lightning Web Components; generate LWCs from requirements; get SLDS blueprints and accessibility guidance; migrate Aura components to LWC.
Agentforce: Build AI agents with actions (GenAiFunction from Flows/Apex), topics, planners, and a guided 5-step sequence.
External Integrations: Set up Connected Apps (OAuth), external client apps, external data sources/objects, remote site settings, and CSP trusted sites.
Data Management: Query with SOQL, perform single-record CRUD, and bulk import/update/delete via Bulk API 2.0.
Deployment & DevOps: Deploy, retrieve, and delete metadata; create and manage outbound change sets; check deployment status.
User & Group Management: Create and update users, assign to queues/public groups.
MCP Server Management: Generate new MCP server projects, add tools, and list existing tools.
Provides tools for managing Salesforce metadata, objects, automation, security, Apex, LWC, Agentforce, and deployments.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@salesforce-metadata-mcp describe the Account object schema"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
salesforce-metadata-mcp
The only Salesforce MCP server that builds Agentforce agents, OmniStudio components, and DevOps Center pipelines — alongside a complete daily developer loop (schema describe, Apex read, debug logs) and 228 tools total for building, configuring, and automating Salesforce orgs directly from Claude or any MCP client.
Quick Start
npx -y salesforce-metadata-mcpOr install globally:
npm install -g salesforce-metadata-mcp
salesforce-metadata-mcpRelated MCP server: salesforce-mcp
Configuration (Claude Desktop / Claude Code)
Add to your MCP configuration (claude_desktop_config.json or .claude/settings.json):
{
"mcpServers": {
"salesforce": {
"command": "npx",
"args": ["salesforce-metadata-mcp"],
"env": {
"SF_INSTANCE_URL": "https://your-org.salesforce.com",
"SF_ACCESS_TOKEN": "your_access_token"
}
}
}
}See SETUP.md for all authentication methods and detailed setup instructions.
One-click install (Claude Desktop)
Download salesforce-metadata-mcp-<version>.mcpb from the latest release, then drag it into Claude Desktop → Settings → Extensions. It prompts for your org URL and credentials — no JSON editing.
The bundle resolves the server from npm at launch rather than embedding a copy, so it always runs the current published version and never needs re-downloading after an upgrade.
Docker
docker build -t salesforce-metadata-mcp .
docker run -i --rm \
-e SF_INSTANCE_URL="https://your-org.my.salesforce.com" \
-e SF_ACCESS_TOKEN="your_access_token" \
salesforce-metadata-mcpThe image builds from source, runs as a non-root user, and ships production dependencies only. Because this server speaks MCP over stdio, -i is required — the container is driven by its client, not run as a background service. SF_ALIAS will not work in a container: the Salesforce CLI's login flow needs a browser, so use token, JWT, refresh-token, or client-credentials variables instead.
Toolsets — loading 228 tools without burning your context
All 228 tools are always available. Most are not loaded into the model's context until something asks for them.
Listing every tool up front costs roughly 98,000 tokens — about half a 200k context window, spent before you type anything, whether or not the session ever touches OmniStudio or DevOps Center. A 228-candidate tool list also makes the model measurably worse at picking the right tool. So the server starts with a small core loaded and pulls in the rest on demand:
Startup | Tools listed | Approx. tokens |
Default ( | 20 | ~9,900 |
After loading two more toolsets | 43 | ~20,800 |
| 233 | ~99,100 |
The default covers what nearly every session needs: describe/list objects, SOQL query, deploy/retrieve/delete metadata, deploy status, and core schema creation (objects, fields, formula fields, picklist values, validation rules, approval processes).
Five tools are always present and make everything else reachable:
sf_find_tool— search all 228 tools by name and load whatever contains the matches, in one call. Ask for "create an omniscript" and it finds the tools, loadsomnistudio, and they are callable immediately. This is usually all you or the model needs.sf_load_toolset— load named toolsets explicitly.sf_list_toolsets— browse all toolsets, their tool counts, and what is loaded.sf_call_tool— invoke any tool by name, loaded or not, without it having to appear in the tool list first. Arguments are validated and the production guard applies exactly as on a direct call.sf_tool_schema— return any tool's input schema, sosf_call_toolcan be constructed for a tool the client cannot see.
In practice you don't manage this by hand: ask for what you want, and the model loads what it needs.
If loaded tools don't show up
Loading a toolset enables it on the server and emits notifications/tools/list_changed. A client is
supposed to re-fetch tools/list when it sees that. Some clients don't — and when that happens, the
load reports success, the tools really are enabled, and the model still cannot call any of them
because they never entered its tool list.
Two things handle this, so no client can lose access to a tool:
sf_load_toolsetchecks whether the client re-fetched and says so in its response, instead of reporting an unqualified success for tools that have become unreachable.sf_call_toolreaches every tool without needing a re-fetch at all. Combined withsf_tool_schema, the full 228-tool surface is usable from the handshake tool list alone — even underSF_TOOLSETS=none.
To restore the previous behaviour of loading everything at startup, set SF_TOOLSETS=all. To start
with only the five meta-tools, set SF_TOOLSETS=none. To pick your own core, pass a list:
{ "env": { "SF_TOOLSETS": "metadata,objects,automation,security" } }Available toolsets: core, metadata, objects, data, flows, automation, security, apex,
lwc, ui, pages, actions, agentforce, omnistudio, omnichannel, devops, deployment,
integrations, identity, reports, experience, admin, monitoring, audit, einstein,
knowledge, cpq, sandbox, streaming, visualforce, aura, comms, mcp, i18n.
Flow tools live in their own flows toolset because sf_create_flow carries the full Flow element
schema — 15,266 bytes (~4,126 tokens) on its own, the largest tool definition in the server. Keeping
it out of the default means sessions that never build a Flow never pay for it, while sessions that do
still get the complete validated schema.
Tools — 228 total
Highlights below; see TOOLS.md for the complete reference with parameters and example prompts.
Objects & Fields
Tool | Description |
| Create a custom object with all settings |
| Create a field on any object (all types) |
| Create formula fields with full formula language support |
| Add values to existing picklist fields |
| Create a Custom Metadata Type (__mdt) |
| Create records for a Custom Metadata Type |
| Create or update Custom Labels |
| Create Hierarchy or List Custom Settings |
| Create shared picklist usable across objects |
| Create Record Types with picklist overrides |
| Create Business Processes for Opp/Lead/Case |
| Create Page Layouts with sections and fields |
| Create criteria or ownership sharing rules |
| Create controlling/dependent picklist dependency |
| Read an object's full schema — fields, types, picklist values, child relationships, record types |
| Find objects by partial name or label — the discovery step before |
| Impact analysis: what references this component, and does the field hold data? Read-only |
| Update object-level properties, risk-classified with a confirmation gate |
| Update a field's definition, risk-classified — destructive changes report impact before applying |
Automation
Tool | Description |
| Create any Flow type — Assignment, Decision, GetRecords, CreateRecords (with field values), DeleteRecords, Loop |
| Create multi-step approval processes |
| Create data validation rules |
| Create workflow field update actions |
| Create workflow email alert actions |
| Create Platform Event objects |
| Create Lead/Case assignment rules |
| Create Case escalation rules |
| Create Web-to-Lead/Case auto-response rules |
| Create duplicate matching rules |
| Create duplicate detection rules |
| Create inbound Apex email services |
| Schedule an Apex class via cron |
Security & Access
Tool | Description |
| Create Permission Sets with all permissions |
| Create roles in the role hierarchy |
| Create queues with members and objects |
| Create Named Credentials for callouts |
| Audit current field-level security grants across Profiles and Permission Sets |
UI & Experience
Tool | Description |
| Create Lightning Apps with nav/utility bars |
| Create Custom Tabs for objects |
| Create Compact Layouts (highlights panel) |
| Create List Views with filters and columns |
| Create HTML/text email templates |
| Create Static Resources from text content |
| Create Custom Notification Types |
| Create Custom Report Types |
| Create Dashboards with components |
Apex Development
Tool | Description |
| Deploy any Apex class to the org |
| Deploy an Apex trigger on any object |
| Deploy test classes, optionally run tests |
| Run test classes and get pass/fail results |
| Execute anonymous Apex and see output |
| Read the source of an existing Apex class |
| Read the source of an existing Apex trigger |
| Turn on Apex debug logging for a user (TraceFlag) |
| Turn Apex debug logging back off (deletes active TraceFlags) |
| List recent Apex debug logs |
| Read the full content of a debug log |
| Lightweight heuristic scan for SOQL/DML-in-loop, hardcoded IDs, debug statements |
| Multi-engine static analysis (PMD, SFGE SOQL-injection data-flow, RetireJS, ESLint) via Salesforce Code Analyzer |
LWC Development
Tool | Description |
| Deploy a full LWC with HTML, JS, CSS |
| Update an existing LWC component |
Experience Cloud
Tool | Description |
| Create Experience Cloud sites |
| Create pages within Experience sites |
Agentforce
Tool | Description |
| Create Agentforce Agent (Bot shell) |
| Create Agent Actions (GenAiFunction) linked to Flows/Apex |
| Create Agent Topics (GenAiPlugin) with actions wired in |
| Wire agent to its topics (GenAiPlanner) — required for routing |
External Integrations
Tool | Description |
| Create OAuth Connected Apps |
| Create External Client Apps (OAuth) — Salesforce's newer replacement for Connected Apps; Client Credentials Flow (incl. Run As user) is API-settable here, unlike Connected Apps |
| Create External Data Sources for Connect |
| Create External Objects (__x) |
| Whitelist external URLs for callouts |
| Create CSP trusted sites for LWC |
Change Sets & Deployment
Tool | Description |
| Create Outbound Change Sets |
| Add components to a change set |
| Deploy metadata via Metadata API (supports |
| Check deployment job status |
| Retrieve metadata from the org |
| Permanently delete metadata components (CustomObject, CustomField, Flow, GenAiFunction, Bot, etc.) |
MCP Server Management
Tool | Description |
| Generate a new MCP server project on disk |
| Add a new tool to an existing MCP server |
| List all tools in an MCP server project |
Example Prompts
Build a complete object:
"Create a custom object called Project__c with fields: Name (text), Status__c (picklist: Planning/Active/Complete), Budget__c (currency), then add a validation rule requiring Budget when Status is Active."
Deploy Apex:
"Create an Apex class called OpportunityService that queries all Opps with Amount > 100000. Then create a test class for it."
Create a flow:
"Create a record-triggered flow on Opportunity that fires after save when Stage = Closed Won. Send an email alert to the owner and create a follow-up Task due in 30 days."
Set up an LWC:
"Create a Lightning Web Component called accountSummary that displays account name, industry, and annual revenue. Make it available on Record Pages."
Agentforce setup:
"Create an Agentforce agent called SalesAssistant. Then create a GetOrders action linked to the Get_Account_Orders flow. Then create an OrderManagement topic with actions: [GetOrders]. Finally wire SalesAssistant to topic OrderManagement."
Environment Variables
Variable | Description | Required |
| Your org URL (e.g. https://org.salesforce.com) | Always |
| Connected App client ID | For OAuth |
| Connected App client secret | For OAuth |
| OAuth refresh token | For OAuth |
| Salesforce CLI org alias | For CLI |
| Static access token (expires ~1hr) | For static |
| HTTP server port (default: 3000) | For HTTP mode |
|
| Optional |
| Toolsets to load at startup: | Optional |
| Set to | Optional |
|
| Optional |
Production write guard
This server hands an LLM a Salesforce credential, and the LLM decides what to do with it. Any text
the model reads on the way — a case comment, a field description, a retrieved .flow file, an
email body — can carry an instruction, and nothing downstream can tell it apart from one you typed.
So against a production org, nine tools are refused by default:
Blocked on production | Why |
| Destroys metadata and every record in it |
| Destroy data |
| Arbitrary code that leaves no artifact behind |
| Removes a managed package and its data |
| Privilege escalation |
| Account takeover / lockout |
Metadata creation is not affected. All 137 sf_create_* tools, sf_deploy_metadata and
sf_retrieve_metadata work against production exactly as before — authoring metadata by natural
language is the point of this package, and a guard that taxed it would just get switched off.
Apex authoring (sf_create_apex_class, sf_create_apex_trigger) is also not blocked, even
though a trigger runs on every DML. The line drawn is auditability: created Apex is metadata — it
has a name, an author and a deploy record, and can be found and removed. sf_execute_anonymous_apex
leaves nothing to find, which is why that one is blocked.
An org counts as production only when it is not a sandbox, not a Developer Edition org, and not on a trial/scratch expiry. Sandboxes, dev orgs and scratch orgs are never gated.
{ "env": { "SF_PRODUCTION_GUARD": "strict" } } // refuse ALL writes on production
{ "env": { "SF_PRODUCTION_GUARD": "off" } } // no guard at allThe guard is a hard refusal, not a confirmation prompt: a prompt the calling agent can approve by itself is not a control, and this server is often run with client permissions bypassed. Only the environment variable lifts it.
Documentation
SETUP.md — Prerequisites, authentication, Claude configuration
TOOLS.md — All 228 tools with full parameter documentation
AGENTFORCE.md — Agentforce agent creation guide
APEX_LWC.md — Apex and LWC development guide
CHANGELOG.md — Version history
Bugs & Feature Requests
Found a bug or want a new tool? Open an issue — there are templates for bug reports and feature requests. Please include the package version and the tool name, and remove any org URLs or credentials before posting.
License
MIT
Available Tools
20 toolssf_add_picklist_valuesAdd Picklist Values to Existing FieldAIdempotent
Adds new picklist values to an existing Picklist or MultiselectPicklist field without removing existing values. Use when a user wants to add new options to a dropdown.
Inputs: values (required), objectFieldFullName (required).
sf_call_toolCall ToolADestructive
Invokes any of this server's 228 tools by name, including tools whose toolset is not loaded and tools that do not appear in your tool list. Use this whenever a Salesforce tool you need is not directly callable — it works even on clients that do not refresh their tool list after sf_load_toolset. Get the argument shape first with sf_tool_schema or sf_find_tool. Arguments are validated and permission-checked exactly as they are on a direct call.
Inputs: tool (required), arguments.
sf_check_deploy_statusCheck Deployment StatusARead-onlyIdempotent
Checks the status of an in-progress or recently completed metadata deployment by async job ID. Returns the status (Pending, InProgress, Succeeded, Failed, Canceled), component successes, failures, and test results. Use with the deploy ID returned from sf_deploy_metadata.
Inputs: deployId (required).
sf_create_approval_processCreate Salesforce Approval ProcessAIdempotent
Creates or updates a Salesforce Approval Process via the Metadata API. Define who can submit, approval steps with approvers, entry criteria, and what happens on approval or rejection.
Inputs: label (required), objectName (required), processName (required), approvalSteps (required), +10 more.
sf_create_custom_fieldCreate Salesforce Custom FieldBIdempotent
Creates a new custom field on an existing Salesforce object. The field API name must end with '__c'. Supports all field types: Text, Number, Picklist, Lookup, etc.
Inputs: type (required), label (required), fieldName (required), objectName (required), +14 more.
sf_create_custom_objectCreate Salesforce Custom ObjectAIdempotent
Creates a new Salesforce Custom Object using the Metadata API. The object name must end with '__c'. Use this when a user asks to create a new object, entity, or table in Salesforce.
Inputs: label (required), fullName (required), pluralLabel (required), description, +9 more.
sf_create_formula_fieldCreate Formula FieldAIdempotent
Creates a formula field on any Salesforce object. Supports all return types (Text, Number, Currency, Date, DateTime, Checkbox, Percent) and the full Salesforce formula language: IF/AND/OR/NOT, BLANKVALUE, TEXT, VALUE, DATE, DATEVALUE, TODAY, NOW, date functions (MONTH/YEAR/DAY), math (FLOOR/CEILING/MOD), string functions (LEN/LEFT/RIGHT/MID/TRIM/UPPER/LOWER/CONTAINS/BEGINS), record type and picklist functions (ISPICKVAL, ISNULL, ISBLANK), cross-object field references (e.g. Account.Owner.Name), and VLOOKUP. Complex multi-line formulas are fully supported.
Inputs: label (required), formula (required), fieldName (required), returnType (required), +5 more.
sf_create_validation_ruleCreate Salesforce Validation RuleAIdempotent
Creates or updates a Salesforce Validation Rule on any object via the Metadata API. The errorConditionFormula returns TRUE when data is INVALID. Use for data quality enforcement.
Inputs: ruleName (required), objectName (required), errorMessage (required), errorConditionFormula (required), +3 more.
sf_create_workflow_field_updateCreate Salesforce Workflow Field Update ActionAIdempotent
Creates a Workflow Field Update action that can be referenced by Approval Processes, Workflow Rules, or Flows. Sets a field to a literal value, formula result, or null.
Inputs: field (required), label (required), actionName (required), objectName (required), +4 more.
sf_delete_metadataDelete MetadataADestructiveIdempotent
Permanently deletes one or more metadata components of a given type via the Metadata API's deleteMetadata call — works for CustomObject, CustomField, Flow, GenAiFunction, GenAiPlugin, GenAiPlannerBundle, Bot, ApexClass, and most other metadata types. There was previously no way to remove anything created by this MCP server (sf_deploy_metadata only supports adding/updating components, not destructiveChanges) — diagnostic or abandoned metadata had nowhere to go. Deletes each fullName independently: check the response's deleted/errors lists rather than assuming all all-or-nothing. Some types have dependency order requirements (e.g. delete a Bot's GenAiFunction/GenAiPlugin/GenAiPlannerBundle before the Bot itself, delete CustomField before its parent CustomObject) — Salesforce will reject a delete that still has dependents, naming them in the error.
Inputs: fullNames (required), metadataType (required).
sf_deploy_metadataDeploy MetadataAIdempotent
Deploys a set of metadata components directly to the org using the Metadata API SOAP deploy operation. Builds a package.xml and deployment zip in memory. Supports validate-only (checkOnly:true) for pre-deployment validation without making changes. Specify runTests to execute test classes during deployment (required for production). Polls until complete or timeout.
Inputs: runTests, checkOnly, testLevel, components, +3 more.
sf_describe_objectDescribe Object SchemaARead-onlyIdempotent
Retrieves schema metadata for a Salesforce object via the REST Describe API: fields (name, label, type, required, picklist values, length, references), child relationships, and record type info. Call this before querying or creating records on an unfamiliar object, or when a user asks what fields exist on an object.
objectApiName: SObject API name, e.g. 'Account', 'My_Object__c' fieldsOnly: set true for a smaller/faster response with just the field list, omitting child relationships and record types waitForFields: field API names to poll for after a sf_create_custom_field call — Salesforce's own REST describe/SOQL schema cache can lag several minutes behind the Metadata API on some orgs even though the field is fully deployed; this retries so you don't have to. Not caused by this MCP server and not fixable here — it's Salesforce-side. timeoutSeconds: max time to poll when waitForFields is set (default 60, max 300)
Inputs: objectApiName (required), fieldsOnly, waitForFields, timeoutSeconds.
sf_find_toolFind ToolAIdempotent
Searches all 228 Salesforce tools by name — including tools in toolsets that are not loaded — and by default loads whichever toolsets contain the matches, so you can call them immediately. Use this whenever a tool you expect does not appear in the tool list, or when you do not know which toolset a capability lives in. Example queries: "flow", "permission set", "agent", "omniscript", "debug log".
Inputs: query (required), autoLoad.
sf_get_metadata_dependenciesMetadata Impact AnalysisARead-onlyIdempotent
Answers "what breaks if I change this?" for any metadata component. Read-only — it changes nothing.
Returns every component that REFERENCES the target (Apex classes, triggers, flows, validation rules, layouts, report types, formulas), grouped by type. For custom fields it also reports how many records currently hold a value, which is usually the deciding factor in whether a change is safe.
componentType + componentName: e.g. CustomField + 'Account.Revenue__c', or ApexClass + 'AccountService' componentId: alternatively pass the Salesforce Id directly (needed for types outside the supported list) includeUses: also return what the component itself depends on
Run this BEFORE deleting or reshaping anything that holds data. Note the blindSpots list returned with every response: this API cannot see dynamic SOQL, string-built field names, managed-package internals, or external integrations, so an empty result means "nothing found", never "safe to change".
Inputs: componentId, includeUses, componentName, componentType.
sf_list_objectsList / Search ObjectsARead-onlyIdempotent
Finds Salesforce objects by PARTIAL name or label — the discovery step before sf_describe_object, which needs an exact API name you may not know yet.
Use this whenever the user refers to objects loosely ("what objects handle cases?", "is there a custom object for invoices?", "show me the custom objects") rather than by exact API name.
searchTerm: partial API name or label, case-insensitive. Omit to list every object in the org. objectType: 'all' (default), 'custom' (only __c), or 'standard' queryableOnly: true to hide objects that cannot be queried with SOQL limit: max results (default 50)
Results rank exact matches first, then prefix matches, then substring matches, so a search for "Account" returns Account before AccountBrandShare. Returns name, label, keyPrefix and CRUD-ability per object; call sf_describe_object with an exact name for full field detail.
Inputs: limit, objectType, searchTerm, queryableOnly.
sf_list_toolsetsList ToolsetsARead-onlyIdempotent
Lists every available Salesforce toolset, how many tools each contains, and which are currently loaded. This server keeps most of its 228 tools unloaded to save context; unloaded tools do not appear in the tool list until you load their toolset with sf_load_toolset. Call this when you need a capability you cannot see.
Inputs: no named parameters.
sf_load_toolsetLoad ToolsetAIdempotent
Loads one or more Salesforce toolsets, making their tools callable and visible in the tool list. Available toolsets: core, metadata, objects, data, flows, automation, security, apex, lwc, ui, pages, actions, agentforce, omnistudio, omnichannel, devops, deployment, integrations, identity, reports, experience, admin, monitoring, audit, einstein, knowledge, cpq, sandbox, streaming, visualforce, aura, comms, mcp, i18n. Call sf_list_toolsets for descriptions and tool counts.
Inputs: toolsets (required).
sf_query_recordsQuery Records (SOQL)ARead-onlyIdempotent
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").
Row cap: 'limit' defaults to 200 and is a ceiling, not a hint. If the SOQL carries its own LIMIT the smaller of the two applies, so a LIMIT in the query can tighten the cap but never raise it. When rows are cut off the response sets truncated: true and reports appliedLimit and limitSource, so a capped result is never mistaken for a complete one.
Inputs: query (required), limit.
sf_retrieve_metadataRetrieve MetadataARead-onlyIdempotent
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. Accepts 'components' (array), or 'metadataType'+'componentName' as a single-item shortcut, or a raw 'packageXml' document — provide exactly one form.
Inputs: components, packageXml, metadataType, componentName.
sf_tool_schemaGet Tool SchemaARead-onlyIdempotent
Returns the input schema, title and description of any of this server's 228 tools, whether or not its toolset is loaded. Use this to find out what arguments a tool takes when it is not in your tool list, then invoke it with sf_call_tool.
Inputs: tool (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 20 tools
Each tool targets a distinct metadata operation with clear descriptions, making most boundaries easy to identify. Some ambiguity exists between sf_create_custom_field and sf_create_formula_field, since a formula field is a type of custom field, and several tools say "creates or updates" rather than separating those actions.
All tools share the sf_ prefix and mostly follow a verb_noun pattern such as sf_create_custom_object, sf_retrieve_metadata, and sf_delete_metadata. The main deviation is sf_tool_schema, which lacks a verb, and minor semantic variation among verbs like add, get, and query, but the overall convention is consistent.
Twenty tools is on the heavy side for a single server, though the broad Salesforce metadata domain justifies much of it. The five tool-management tools add overhead, but they serve a clear purpose given the server's 228-tool backend.
The set covers the core metadata lifecycle well: create, retrieve, deploy, check status, and delete, plus object discovery, schema description, SOQL querying, and dependency analysis. Minor gaps exist, such as no explicit update tool for custom objects/fields and no metadata listing beyond object discovery, but the generic deploy and delete tools cover most needs.
Maintenance
Related MCP Connectors
mtdt.io MCP: Salesforce DevOps platform connector (metadata deployments, backups and more)
Salesforce-grounded retrieval, diagnoses, and a vetted-Force marketplace for MCP clients.
Build and run AI workflows, agents, data tables and 1000+ API integrations from any MCP client.
One OAuth connector for your team's remote MCP servers, with Tool Packs, guardrails and logs.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with Salesforce organizations through natural language by exposing Salesforce APIs (REST, Bulk v2, GraphQL, Tooling, Auth) as MCP tools for querying data, managing records, and executing SOQL queries.11 npm19MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides comprehensive access to Salesforce Tooling API for metadata management, SOQL queries, code analysis, and debugging through Claude and other AI assistants.84 npm5MIT
- AlicenseAqualityDmaintenanceEnables AI agents to interact with Salesforce through MCP, supporting queries, records, metadata, and bulk operations with flexible OAuth authentication.16MIT
- AlicenseNot gradedqualityCmaintenanceEnables querying and modifying Salesforce data (Accounts, Contacts, Opportunities, Leads, Cases) via MCP tools.84 npmMIT