MCP server by Vinodh-Pillai
SFOM MCP Server
Extensive Salesforce Order Management MCP server built with Spring Boot and Spring AI. It exposes safe, AI-friendly tools for Salesforce/SFOM metadata, records, order lifecycle, fulfillment orchestration, payments, Apex, Flows, scheduled jobs, custom objects, and diagnostics.
Modes
sfom.mode=readonly blocks all mutating tools and is the default.
sfom.mode=write enables guarded write tools. Write tools still validate object mutability and strip fields that Salesforce marks non-createable/non-updateable when metadata is available.
Backends
sfom.backend=mock starts with rich mock SFOM metadata and data. This is the default and is used by tests.
sfom.backend=salesforce uses Salesforce REST APIs.
Required live settings:
sfom.salesforce.login-url=https://login.salesforce.com
sfom.salesforce.client-id=...
sfom.salesforce.client-secret=...
sfom.salesforce.username=...
sfom.salesforce.password=...
sfom.salesforce.security-token=...
sfom.salesforce.api-version=v61.0
Run
./gradlew bootRun
Windows:
.\gradlew.cmd bootRun
MCP defaults to Streamable HTTP on /mcp. Configure STDIO/SSE with Spring AI MCP properties in application.yml.
Tool Areas
- Server/mode:
sfom_server_profile,sfom_write_policy - Metadata:
sfom_list_objects,sfom_describe_object,sfom_search_fields,sfom_tool_catalog - Records/SOQL:
sfom_query,sfom_get_record,sfom_create_record,sfom_update_record,sfom_delete_record - SFOM lifecycle:
sfom_order_lifecycle,sfom_order_exception_report,sfom_create_fulfillment_order,sfom_update_fulfillment_order_status - Payments:
sfom_payment_timeline,sfom_update_payment_status - Flows/Apex/jobs:
sfom_list_flows,sfom_invoke_flow,sfom_list_apex_classes,sfom_execute_anonymous_apex,sfom_list_scheduled_jobs,sfom_abort_job - Automation intelligence:
sfom_list_apex_triggers,sfom_list_async_apex_jobs,sfom_list_flow_interviews,sfom_describe_automation_for_object - Custom metadata intelligence:
sfom_list_platform_events,sfom_recommend_fields_for_object,sfom_recommended_select,sfom_dependency_map_for_object,sfom_custom_object_inventory
The tool catalog is metadata-driven. A client can ask for object-specific tool guidance after the server discovers standard, custom, managed-package, and SFOM objects.