sf-explorer/omnistudio-mcp-server
If you are the rightful owner of omnistudio-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
OmniStudio Dependency Analyzer MCP Server is an experimental server implementation that leverages LangGraph for intelligent dependency traversal and analysis in Salesforce OmniStudio environments.
OmniStudio Dependency Analyzer MCP Server
⚠️ Experimental Project: This is an experimental MCP server implementation that leverages LangGraph for intelligent dependency traversal and analysis. We're exploring novel approaches to dependency management and welcome your feedback and contributions!
A powerful MCP (Model Context Protocol) server for analyzing Salesforce OmniStudio dependencies using TypeScript, LangChain, and LangGraph.
🚀 Quick Install
# Use with npx (no installation needed!)
npx @sf-explorer/omnistudio-mcp-server
# Or install globally
npm install -g @sf-explorer/omnistudio-mcp-server
Then add to your Claude Desktop or Cursor config - see Configuration.
🧪 Why This Experimental Approach?
This project explores the intersection of Model Context Protocol (MCP) and LangGraph's state-based orchestration to solve complex dependency analysis challenges:
Benefits of the LangGraph + MCP Approach
- 🎯 State-Based Orchestration: LangGraph's state machine pattern naturally models dependency traversal, making the analysis flow explicit and maintainable
- 🔄 Recursive Graph Traversal: Complex nested dependencies (OmniScripts calling IPs calling DataRaptors) are handled elegantly through graph nodes
- 🛡️ Circular Dependency Detection: Built-in state tracking prevents infinite loops in circular references
- 🎨 Multiple Output Formats: The graph structure enables easy transformation to Mermaid, GraphViz, D3.js, or JSON visualizations
- 🤖 AI-Ready Architecture: MCP integration makes it seamless for AI assistants like Claude to analyze and reason about complex OmniStudio architectures
- 🔌 Extensible Pipeline: Adding new dependency types or analysis steps is as simple as adding new graph nodes
Why We Need Your Feedback
We're testing whether this architecture can:
- ✅ Scale to large orgs with thousands of components
- ✅ Handle edge cases in real-world OmniStudio deployments
- ✅ Provide actionable insights for migration and refactoring
- ✅ Integrate smoothly with developer workflows
Your feedback, bug reports, and contributions help shape the future of this approach!
📊 Quick Example: What This Tool Produces
Here's a real example of the dependency analysis output for a customer onboarding flow:
graph TD
OS001["CustomerOnboarding\n[OmniScript]\nType: Service | SubType: New"]:::omniscript
IP001["ValidateCustomer\n[IntegrationProcedure]"]:::integration
IP002["CreateAccount\n[IntegrationProcedure]"]:::integration
DR001["CustomerExtract\n[DataRaptor Extract]"]:::dataraptor
DR002["AccountTransform\n[DataRaptor Transform]"]:::dataraptor
DR003["AccountLoad\n[DataRaptor Load]"]:::dataraptor
APEX001["CustomerValidationService\n[Apex Class]"]:::apex
OBJ001["Contact\n[Standard Object]"]:::object
OBJ002["Account\n[Standard Object]"]:::object
HTTP001["CreditCheck API\n[External Service]"]:::http
OS001 -->|calls| IP001
OS001 -->|calls| IP002
IP001 -->|uses| DR001
IP001 -->|invokes| APEX001
IP001 -->|calls| HTTP001
OBJ001 -->|reads from| DR001
IP002 -->|uses| DR002
IP002 -->|uses| DR003
DR002 -->|uses| DR001
DR003 -->|writes to| OBJ002
classDef omniscript fill:#4CAF50,stroke:#2E7D32,color:#fff,stroke-width:3px
classDef integration fill:#2196F3,stroke:#1565C0,color:#fff,stroke-width:2px
classDef dataraptor fill:#9C27B0,stroke:#6A1B9A,color:#fff,stroke-width:2px
classDef apex fill:#FF9800,stroke:#E65100,color:#fff,stroke-width:2px
classDef object fill:#607D8B,stroke:#37474F,color:#fff,stroke-width:2px
classDef http fill:#F44336,stroke:#C62828,color:#fff,stroke-width:2px
What you see above:
- 🟢 OmniScript initiates the customer onboarding process
- 🔵 Integration Procedures handle validation and account creation logic
- 🟣 DataRaptors extract, transform, and load customer data
- 🟠 Apex Class performs custom business validation
- ⚫ Salesforce Objects (Contact, Account) show data flow
- 🔴 External API call for credit check verification
This is generated automatically from your Salesforce org metadata. See the Real-World Example for more complex scenarios!
🌟 Features
- 🔍 Comprehensive Dependency Analysis: Analyze OmniScripts, Integration Procedures, FlexCards, LWC, and Apex dependencies
- 🔎 Type/SubType Search: Search and analyze OmniScripts and Integration Procedures by their Type and SubType fields (e.g.,
Quote_Create) instead of system-generated names - 🏢 Multi-Namespace Support: Automatically works with Core OmniStudio, vlocity_cmt (Communications Cloud), and vlocity_ins (Financial Services Cloud)
- 📊 Visual Dependency Graphs: Generate interactive dependency visualizations in multiple formats
- Mermaid diagrams (for documentation and Markdown)
- GraphViz DOT format (for advanced visualizations)
- D3.js JSON (for interactive web visualizations)
- JSON (for programmatic access)
- 💬 Pre-Built MCP Prompts: 7 ready-to-use prompts for common analysis tasks (analyze, debug, document, explore, etc.) -
- 🔧 Resource Exposure: Access and query OmniStudio components through MCP resources
- 🤖 AI-Powered Analysis: Leverage LangGraph for intelligent dependency resolution
- 🌐 MCP Protocol: Standard Model Context Protocol for seamless integration with AI assistants like Claude
- 🔄 Namespace Abstraction: Work with a unified Core API regardless of your OmniStudio deployment type
🏗️ Architecture
- MCP Server: Built with
@modelcontextprotocol/sdk - Dependency Analysis: LangGraph for state-based dependency graph construction and traversal
- AI Integration: LangChain for extensible AI capabilities
- Salesforce Integration: jsforce for robust Salesforce API interactions
📦 Installation
Option 1: Using npx (Recommended) ⭐
The easiest way to use this MCP server is via npx:
# No installation needed! Just use npx in your MCP config
npx @sf-explorer/omnistudio-mcp-server
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"omnistudio": {
"command": "npx",
"args": ["-y", "@sf-explorer/omnistudio-mcp-server"],
"env": {
"SF_AUTH_MODE": "sfdx",
"SF_SFDX_ORG_ALIAS": "your-org-alias",
"SF_API_VERSION": "60.0"
}
}
}
}
Benefits:
- ✅ No manual installation or updates needed
- ✅ Always uses the latest version
- ✅ No need to clone the repository
- ✅ Cleaner setup
Option 2: Local Development
If you want to contribute or modify the code:
# Clone the repository
git clone https://github.com/sf-explorer/omnistudio-mcp-server.git
cd omnistudio-mcp-server
# Install dependencies
npm install
# Build the project
npm run build
⚙️ Configuration
The server supports three authentication modes: SFDX, Username/Password, and OAuth.
Option 1: SFDX Authentication (Recommended) ⭐
If you have an org already authenticated with the Salesforce CLI, you can use it directly:
# Salesforce Credentials (SFDX Mode)
SF_AUTH_MODE=sfdx
SF_SFDX_ORG_ALIAS=myorg # Your org alias or username
SF_API_VERSION=60.0
# Server Configuration
MCP_SERVER_NAME=omnistudio-analyzer
MCP_SERVER_VERSION=1.0.0
Prerequisites:
- Install Salesforce CLI: https://developer.salesforce.com/tools/salesforcecli
- Authenticate your org:
# New CLI (sf) sf org login web --alias myorg # Or legacy CLI (sfdx) sfdx auth:web:login --setalias myorg
Benefits of SFDX Mode:
- ✅ No need to store passwords in
.envfile - ✅ Uses OAuth tokens automatically
- ✅ Leverages existing CLI authentication
- ✅ Tokens refresh automatically
- ✅ Works with both production and sandbox orgs
Option 2: Username/Password Authentication
Create a .env file with your Salesforce credentials:
# Salesforce Credentials (Username/Password Mode)
SF_AUTH_MODE=username_password # Optional, this is the default
SF_USERNAME=your_salesforce_username@example.com
SF_PASSWORD=your_salesforce_password
SF_SECURITY_TOKEN=your_security_token # Optional if using IP filter
SF_DOMAIN=login # Use 'test' for sandbox
SF_API_VERSION=60.0
# Server Configuration
MCP_SERVER_NAME=omnistudio-analyzer
MCP_SERVER_VERSION=1.0.0
Option 3: Direct OAuth Token
If you have an OAuth access token, you can use it directly:
# Salesforce Credentials (OAuth Mode)
SF_AUTH_MODE=oauth
SF_ACCESS_TOKEN=your_oauth_access_token
SF_INSTANCE_URL=https://yourinstance.salesforce.com
SF_API_VERSION=60.0
# Server Configuration
MCP_SERVER_NAME=omnistudio-analyzer
MCP_SERVER_VERSION=1.0.0
🚀 Usage
Running the Server
# Development mode (with hot reload)
npm run dev
# Production mode
npm run build
npm start
Using the Client
# Build first
npm run build
# Run the example client
npm run client
Integration with Claude Desktop
Using npx (Recommended):
{
"mcpServers": {
"omnistudio": {
"command": "npx",
"args": ["-y", "@sf-explorer/omnistudio-mcp-server"],
"env": {
"SF_AUTH_MODE": "sfdx",
"SF_SFDX_ORG_ALIAS": "your-org-alias",
"SF_API_VERSION": "60.0"
}
}
}
}
Using local installation:
{
"mcpServers": {
"omnistudio": {
"command": "node",
"args": ["/absolute/path/to/omnistudio/dist/index.js"]
}
}
}
Integration with VSCode and Cursor
Cursor Setup (MCP Support Built-in) ⭐
Cursor has native MCP support built into the editor. Follow these steps:
Step 1: Authenticate with Salesforce CLI
# Install Salesforce CLI if not already installed
# Visit: https://developer.salesforce.com/tools/salesforcecli
# Authenticate your org
sf org login web --alias myorg
# Verify authentication
sf org display --target-org myorg
Step 2: Configure MCP Server
-
Open Cursor Settings:
- macOS:
Cursor > Settings > Features > Model Context Protocol - Windows/Linux:
File > Preferences > Settings > Features > Model Context Protocol
OR edit directly:
~/.cursor/mcp_settings.json(macOS/Linux) or%APPDATA%\Cursor\mcp_settings.json(Windows) - macOS:
-
Add the configuration (Using npx - Recommended):
{
"mcpServers": {
"omnistudio": {
"command": "npx",
"args": ["-y", "@sf-explorer/omnistudio-mcp-server"],
"env": {
"SF_AUTH_MODE": "sfdx",
"SF_SFDX_ORG_ALIAS": "myorg",
"SF_API_VERSION": "60.0"
}
}
}
}
- Alternative: Using local installation:
{
"mcpServers": {
"omnistudio": {
"command": "node",
"args": ["/absolute/path/to/omnistudio-mcp-server/dist/index.js"]
}
}
}
Step 3: Restart Cursor
Completely quit and restart Cursor to load the MCP server.
Step 4: Test the Integration
Open Cursor's AI chat and ask:
- "What OmniStudio namespaces are detected in my org?"
- "List all my OmniScripts"
- "Analyze dependencies for CustomerOnboarding OmniScript"
VSCode Setup (Requires Extension)
VSCode requires an MCP extension to support Model Context Protocol servers.
Step 1: Install MCP Extension
- Open VSCode Extensions (
Cmd+Shift+X/Ctrl+Shift+X) - Search for "Model Context Protocol" or "MCP"
- Install a compatible MCP extension (check VSCode Marketplace for current options)
Step 2: Authenticate with Salesforce CLI
# Install Salesforce CLI if not already installed
# Visit: https://developer.salesforce.com/tools/salesforcecli
# Authenticate your org
sf org login web --alias myorg
# Verify authentication
sf org display --target-org myorg
Step 3: Configure MCP Server
The configuration location depends on your installed MCP extension. Common locations:
- Settings.json approach:
- Open VSCode Settings (
Cmd+,/Ctrl+,) - Search for "MCP" or "Model Context Protocol"
- Edit settings.json directly
- Open VSCode Settings (
{
"mcp.servers": {
"omnistudio": {
"command": "npx",
"args": ["-y", "@sf-explorer/omnistudio-mcp-server"],
"env": {
"SF_AUTH_MODE": "sfdx",
"SF_SFDX_ORG_ALIAS": "myorg",
"SF_API_VERSION": "60.0"
}
}
}
}
- Workspace settings (.vscode/settings.json):
{
"mcp.servers": {
"omnistudio": {
"command": "npx",
"args": ["-y", "@sf-explorer/omnistudio-mcp-server"],
"env": {
"SF_AUTH_MODE": "sfdx",
"SF_SFDX_ORG_ALIAS": "myorg",
"SF_API_VERSION": "60.0"
}
}
}
}
- Alternative: Using local installation:
{
"mcp.servers": {
"omnistudio": {
"command": "node",
"args": ["/absolute/path/to/omnistudio-mcp-server/dist/index.js"]
}
}
}
Step 4: Reload VSCode
Run the command: "Reload Window" (Cmd+Shift+P / Ctrl+Shift+P → type "Reload Window")
Step 5: Test the Integration
Access the MCP server through your installed extension's interface (varies by extension).
Quick Setup Summary (Both Editors)
# 1. Authenticate with Salesforce CLI (one time)
sf org login web --alias myorg
# 2. Get your org alias
sf org list
# 3. Add MCP configuration (see above for your editor)
# 4. Update SF_SFDX_ORG_ALIAS with your actual org alias
# 5. Restart your IDE
# 6. Test it!
# Ask: "List all OmniScripts in my org"
Benefits of Using npx:
- ✅ No manual installation or updates needed
- ✅ Always uses the latest version
- ✅ No need to clone the repository
- ✅ Cleaner setup
- ✅ Works identically across different machines
Troubleshooting:
Cursor:
- Verify MCP is enabled in Cursor settings
- Check Cursor logs:
Help > Toggle Developer Tools > Console - Ensure the
omnistudioserver appears in the MCP servers list
VSCode:
- Verify MCP extension is installed and active
- Check extension logs in Output panel
- Ensure your MCP extension supports the standard MCP protocol
- Try reloading the window if changes don't take effect
Both:
- Verify Salesforce CLI is installed:
sf --version - Verify org is authenticated:
sf org display --target-org myorg - Check org alias is correct:
sf org list - Ensure npx is available:
npx --version
🔧 Available Tools
1. analyze_omniscript_dependencies
Analyze all dependencies for an OmniScript including Integration Procedures, DataRaptors, and embedded components. Now supports searching by Type/SubType!
// Search by name
{
name: "MyOmniScript",
maxDepth: 5, // Optional: maximum depth for traversal
format: "mermaid" // Options: json, mermaid, graphviz, d3, detailed
}
// OR search by Type/SubType ⭐ NEW
{
type: "Quote",
subtype: "Create",
language: "English", // Optional, defaults to "English"
maxDepth: 5,
format: "mermaid"
}
2. analyze_integration_procedure_dependencies
Analyze Integration Procedure dependencies including DataRaptors, Apex classes, and HTTP actions. Now supports searching by Type/SubType!
// Search by name
{
name: "MyIntegrationProcedure",
maxDepth: 5,
format: "json"
}
// OR search by Type/SubType ⭐ NEW
{
type: "Account",
subtype: "Retrieve",
maxDepth: 5,
format: "detailed"
}
3. analyze_flexcard_dependencies
Analyze FlexCard dependencies including Integration Procedures and data sources.
{
name: "MyFlexCard",
maxDepth: 3,
format: "mermaid"
}
4. list_omniscripts
List all active OmniScripts in your org.
5. list_integration_procedures
List all active Integration Procedures.
6. list_flexcards
List all active FlexCards.
7. get_omniscript_by_type_subtype ⭐ NEW
Get an OmniScript by its Type and SubType (common way to reference OmniScripts).
{
type: "Quote", // Type of the OmniScript
subtype: "Create", // SubType of the OmniScript
language: "English" // Optional, defaults to "English"
}
8. get_integration_procedure_by_type_subtype ⭐ NEW
Get an Integration Procedure by its Type and SubType.
{
type: "Account", // Type of the Integration Procedure
subtype: "Retrieve" // SubType of the Integration Procedure
}
9. get_component_details
Get detailed information about a specific component.
{
name: "ComponentName",
type: "omniscript" // Options: omniscript, integration-procedure, flexcard, dataraptor, apex, lwc
}
10. get_namespace_info ⭐ NEW
Get information about detected OmniStudio namespaces in your org (Core, vlocity_cmt, vlocity_ins).
This tool shows:
- Which OmniStudio deployment type you have
- Whether you're using Core OmniStudio, Communications Cloud, or Financial Services Cloud
- How the abstraction layer is handling your specific deployment
💬 Pre-Built Prompts ⭐ NEW
The server includes 7 ready-to-use prompts that help you interact with OmniStudio components more effectively. Prompts follow the MCP specification and provide structured guidance for common tasks.
Available Prompts
analyze-omniscript- Analyze dependencies for a specific OmniScriptanalyze-integration-procedure- Analyze dependencies for an Integration Procedureexplore-omnistudio- Get an overview of all OmniStudio components in your orgdebug-dependencies- Debug and troubleshoot dependency issuesdocument-component- Generate comprehensive documentation for a componentnamespace-check- Check OmniStudio namespace configurationimpact-analysis- Analyze the impact of changing or removing a component
Using Prompts in Claude Desktop
Once configured, you can use prompts by simply asking Claude:
Use the analyze-omniscript prompt with omniscript_name="CustomerOnboarding"
or
Use the explore-omnistudio prompt
Claude will automatically discover and execute the appropriate prompts, providing you with comprehensive analysis and insights.
Why Use Prompts?
- ✅ Consistent: Ensures you're using tools correctly every time
- ✅ Complete: Remembers to check everything you need
- ✅ Expert: Encodes best practices for OmniStudio analysis
- ✅ Time-Saving: No need to remember tool names and parameters
- ✅ Discoverable: Easy to explore what the server can do
🏢 Multi-Namespace Support
The server includes an abstraction layer that automatically handles different OmniStudio deployment types:
Supported Namespaces
-
Core OmniStudio (Spring '24+)
- Objects:
OmniScript__c,OmniProcess__c,OmniUiCard__c,OmniDataTransform__c - Fields:
Type__c,SubType__c,IsActive__c, etc.
- Objects:
-
vlocity_cmt (Communications Cloud / Vlocity CMT)
- Objects:
vlocity_cmt__OmniScript__c,vlocity_cmt__OmniProcess__c, etc. - Fields:
vlocity_cmt__Type__c,vlocity_cmt__SubType__c, etc.
- Objects:
-
vlocity_ins (Financial Services Cloud / Vlocity Insurance)
- Objects:
vlocity_ins__OmniScript__c,vlocity_ins__OmniProcess__c, etc. - Fields:
vlocity_ins__Type__c,vlocity_ins__SubType__c, etc.
- Objects:
How It Works
User Request → Detect Namespace → Build Query → Execute → Normalize Response → Return Core Structure
- On Connection: The client automatically detects which namespace(s) exist in your org
- Query Translation: All queries are automatically translated to use the correct namespace
- Response Normalization: All records are normalized to Core structure for consistent processing
- Transparent Processing: The analyzer and tools work with Core types regardless of actual deployment
Example:
- You request: "Get OmniScript 'CustomerOnboarding'"
- Server detects:
vlocity_cmtnamespace - Query executed:
SELECT ... FROM vlocity_cmt__OmniScript__c WHERE vlocity_cmt__Name = 'CustomerOnboarding' - Response normalized:
{ Type__c: 'Service', SubType__c: 'New', ... }(Core structure) - Processing continues using Core types
Check Your Namespace:
# Use the get_namespace_info tool to see which deployment type you have
📚 Available Resources
Access OmniStudio components via MCP resources:
omnistudio://omniscripts- All active OmniScriptsomnistudio://integration-procedures- All active Integration Proceduresomnistudio://flexcards- All active FlexCardsomnistudio://dataraptors- All active DataRaptorsomnistudio://lwc- All Lightning Web Componentsomnistudio://apex- All Apex Classesomnistudio://omniscript/{name}- Specific OmniScriptomnistudio://integration-procedure/{name}- Specific Integration Procedureomnistudio://flexcard/{name}- Specific FlexCard
📊 Visualization Examples
Mermaid Diagram
graph TD
OS001["CustomerOnboarding\n[OmniScript]"]:::omniscript
IP001["ValidateCustomer\n[IntegrationProcedure]"]:::integration
DR001["CustomerDataRaptor\n[DataRaptor]"]:::dataraptor
OS001 -->|calls| IP001
IP001 -->|uses| DR001
classDef omniscript fill:#4CAF50,stroke:#2E7D32,color:#fff
classDef integration fill:#2196F3,stroke:#1565C0,color:#fff
classDef dataraptor fill:#9C27B0,stroke:#6A1B9A,color:#fff
📚 Examples & Documentation
Real-World Example: MultiSite Quote Order Flow
See a complete production example with step-by-step instructions:
This example demonstrates:
- ✅ Multi-level dependency traversal (5 levels deep)
- ✅ DataRaptor object dependencies (reads from / writes to)
- ✅ Standard vs Custom Salesforce objects differentiation
- ✅ Integration Procedure calls with recursive analysis
- ✅ Apex class invocations
- ✅ HTTP Action tracking for external API calls
- ✅ Correct data flow visualization
User Guide
New to OmniStudio dependency analysis? Start here:
Additional Documentation
- ⭐ NEW
🧩 Components Analyzed
The server analyzes these OmniStudio and Salesforce components:
- OmniScripts: Including embedded OmniScripts and Integration Procedure calls
- Integration Procedures: Including DataRaptor actions, Apex calls, and HTTP actions
- FlexCards: Including data source Integration Procedures
- DataRaptors: Extract, Transform, Load, and Turbo Extract types with object dependencies
- Lightning Web Components (LWC): Custom components
- Apex Classes: Including OmniStudio service calls
- Salesforce Objects: Both Standard Objects (Account, Opportunity) and Custom Objects (e.g.,
vlocity_cmt__PriceList__c) - External APIs: HTTP endpoints called by Integration Procedures and OmniScripts
🔄 Dependency Types
The analyzer tracks these dependency relationships:
calls- Component invokes another (e.g., OmniScript → Integration Procedure, IP → External API)embeds- Component embeds another (e.g., OmniScript → Embedded OmniScript)uses- Component uses a resource (e.g., Integration Procedure → DataRaptor)references- Component references anotherinvokes- Direct invocation (e.g., Integration Procedure → Apex Class)reads from- DataRaptor reads from a Salesforce object (arrow: Object → DataRaptor)writes to- DataRaptor writes to a Salesforce object (arrow: DataRaptor → Object)
🛠️ Development
# Watch mode for development
npm run watch
# Lint code
npm run lint
# Format code
npm run format
# Clean build artifacts
npm run clean
📝 Example Usage with Claude
Once integrated with Claude Desktop, you can ask:
"Analyze the dependencies for the CustomerOnboarding OmniScript and show me a visual diagram"
"List all Integration Procedures in my org"
"Show me what DataRaptors are used by the OrderProcessing Integration Procedure"
"Get details about the AccountFlexCard"
🔍 How It Works
The server uses LangGraph to build a state machine that:
- Fetches component data from Salesforce
- Parses component definitions to extract dependencies
- Traverses the dependency tree recursively
- Builds a complete dependency graph
- Generates visualizations in multiple formats
The state-based approach ensures efficient traversal and prevents infinite loops in circular dependencies.
🤝 Contributing
We actively welcome contributions! This is an experimental project and your input is invaluable.
Ways to Contribute
- 🐛 Report Bugs: Found an issue? Open a GitHub issue with reproduction steps
- 💡 Suggest Features: Have ideas for improving dependency analysis? We'd love to hear them
- 📝 Improve Documentation: Help us make this easier to understand and use
- 🧪 Test with Your Org: Try it with your Salesforce org and report what works (or doesn't)
- 🔧 Submit PRs: Code contributions are highly appreciated
- 💬 Share Feedback: Tell us about your experience, pain points, and use cases
Areas Where We Need Help
- Performance Testing: How does it scale with large orgs (1000+ components)?
- Edge Cases: Unusual OmniStudio patterns or configurations
- Visualization: Better ways to present dependency graphs
- Integration: New use cases for MCP + LangGraph patterns
- Documentation: Real-world examples and tutorials
Questions or Ideas?
Open a GitHub issue or discussion. We're here to collaborate and learn together!
📄 License
MIT
🙏 Acknowledgments
- Built with the Model Context Protocol
- Powered by LangChain and LangGraph
- Salesforce integration via jsforce
🐛 Troubleshooting
Connection Issues
For Username/Password Mode:
- Verify your
.envfile has correct Salesforce credentials - Check if your security token is current
- For IP-filtered orgs, remove
SF_SECURITY_TOKENfrom.env - For sandbox, set
SF_DOMAIN=test - Ensure network connectivity to Salesforce
For SFDX Mode:
- Verify org is authenticated:
sf org display --target-org myorg - Check org alias exists:
sf org list - Re-authenticate if needed:
sf org login web --alias myorg - Ensure Salesforce CLI is installed and in PATH
- Verify the org alias in
.envmatches your authenticated org
For OAuth Mode:
- Verify access token is valid and not expired
- Check instance URL format (e.g.,
https://yourinstance.salesforce.com) - Ensure token has required API permissions
No Data Returned
- Confirm components exist and are active in your org
- Check if you have proper permissions to access the components
- Verify the component names are correct (case-sensitive)
Dependencies Missing
- Some dependencies may be implicit and not captured in metadata
- Custom implementations may require additional parsing logic
- Check the console for any warnings or errors
📮 Support
For issues, questions, or feature requests, please open an issue on GitHub.