UNPKG

sfcc-dev-mcp

Version:

MCP server for Salesforce B2C Commerce Cloud development assistance including logs, debugging, and development tools

228 lines (169 loc) • 9.82 kB
# SFCC Development MCP Server [![npm version](https://badge.fury.io/js/sfcc-dev-mcp.svg)](https://badge.fury.io/js/sfcc-dev-mcp) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) An AI-powered Model Context Protocol (MCP) server that provides comprehensive access to Salesforce B2C Commerce Cloud development tools, documentation, and best practices. ## ✨ Key Features - **šŸ” Complete SFCC Documentation Access** - Search and explore all SFCC API classes and methods - **šŸ“š Best Practices Guides** - Curated development guidelines for cartridges, hooks, controllers, and more - **šŸ—ļø SFRA Documentation** - Enhanced access to Storefront Reference Architecture documentation - **šŸ“Š Log Analysis Tools** - Real-time error monitoring, debugging, and job log analysis for SFCC instances - **āš™ļø System Object Definitions** - Explore custom attributes and site preferences - **šŸš€ Cartridge Generation** - Automated cartridge structure creation ## šŸš€ Quick Start ### Option 1: Documentation-Only Mode (No SFCC credentials needed) ```json { "mcpServers": { "sfcc-dev": { "command": "npx", "args": ["sfcc-dev-mcp"] } } } ``` ### Option 2: Full Mode (With SFCC credentials for log and job analysis) ```json { "mcpServers": { "sfcc-dev": { "command": "npx", "args": ["sfcc-dev-mcp", "--dw-json", "/path/to/your/dw.json"] } } } ``` Create a `dw.json` file with your SFCC credentials: ```json { "hostname": "your-instance.sandbox.us01.dx.commercecloud.salesforce.com", "username": "your-username", "password": "your-password", "client-id": "your-client-id", "client-secret": "your-client-secret" } ``` ## šŸŽÆ Operating Modes | Mode | Tools Available | SFCC Credentials Required | |------|----------------|---------------------------| | **Documentation-Only** | 15 tools | āŒ No | | **Full Mode** | 36 tools | āœ… Yes | ### Documentation-Only Mode Perfect for learning and development - no SFCC instance required: - Complete SFCC API documentation (5 tools) - Best practices guides (4 tools) - SFRA documentation (5 tools) - Cartridge generation (1 tool) ### Full Mode Complete development experience with live SFCC instance access: - All documentation-only features (15 tools) - Real-time log analysis (13 tools) - System object definitions (6 tools) - Code version management (2 tools) ## ļæ½ Architecture Overview This server is built around a **capability-gated, modular handler architecture** that cleanly separates tool routing from domain logic: ### Core Layers - **Tool Definitions** (`src/core/tool-definitions.ts`): Declarative schemas grouped by category (documentation, best practices, SFRA, logs, job logs, system objects, cartridge generation, code versions). - **Handlers** (`src/core/handlers/*.ts`): Each category has a handler extending a common base for timing, structured logging, and error normalization (e.g. `log-handler`, `docs-handler`, `system-object-handler`). - **Clients** (`src/clients/`): Encapsulate domain operations (OCAPI, SFRA docs, best practices, modular log analysis). Handlers delegate to these so orchestration and computation remain separate. - **Services** (`src/services/`): Dependency-injected abstractions for filesystem and path operations — improves testability and isolates side effects. - **Modular Log System** (`src/clients/logs/`): Reader (range/tail optimization), discovery, processor (line → structured entry), analyzer (patterns & health), formatter (human output) for maintainable evolution. - **Configuration Factory** (`src/config/configuration-factory.ts`): Determines capabilities (`canAccessLogs`, `canAccessOCAPI`) based on provided credentials and filters exposed tools accordingly (principle of least privilege). ### Why This Matters - **Extensibility**: Adding a new tool usually means adding a schema + minimal handler logic (or a new handler if a new domain). - **Security**: Tools that require credentials are never exposed when capability flags are false. - **Testability**: Unit tests target clients & modules; integration/MCP tests validate handler routing and response structure. - **Performance**: Tail log reads + lightweight caching (`cache.ts`, `log-cache.ts`) reduce unnecessary I/O. ### Adding a New Tool (High-Level) 1. Add schema object to the correct exported array in `tool-definitions.ts`. 2. Implement domain logic in a client/service (avoid bloating handlers). 3. Extend an existing handler or create a new one if it's a new category. 4. (Only for a new category) register the new handler inside `registerHandlers()` in `server.ts`. 5. Discover actual response shape with `npx conductor query` before writing tests. 6. Add Jest unit tests + YAML MCP tests (docs vs full mode if credentials required). 7. Update documentation (Development Guide + README counts if changed). > For a deeper internal view, see the Development Guide in the docs site. ## ļæ½šŸ¤– AI Interface Setup Choose your preferred AI assistant: | Interface | Best For | Setup Guide | |-----------|----------|-------------| | **Claude Desktop** | Multi-turn conversations, debugging | [šŸ“– Setup Guide](https://taurgis.github.io/sfcc-dev-mcp/ai-interfaces#claude-desktop) | | **GitHub Copilot** | VS Code integration, inline suggestions | [šŸ“– Setup Guide](https://taurgis.github.io/sfcc-dev-mcp/ai-interfaces#github-copilot) | | **Cursor** | Modern AI-powered editor | [šŸ“– Setup Guide](https://taurgis.github.io/sfcc-dev-mcp/ai-interfaces#cursor) | ## šŸ“¦ Installation ### Using npx (Recommended) ```bash # Test the server npx sfcc-dev-mcp # Use with your configuration npx sfcc-dev-mcp --dw-json /path/to/your/dw.json ``` ### Global Installation ```bash npm install -g sfcc-dev-mcp sfcc-dev-mcp --dw-json /path/to/your/dw.json ``` ## šŸ› Debug Mode & Logging ### Enable Debug Logging ```bash # Enable debug mode for detailed logging npx sfcc-dev-mcp --debug # Or with configuration file npx sfcc-dev-mcp --dw-json /path/to/your/dw.json --debug ``` ### Log File Locations The server writes logs to your system's temporary directory: - **macOS**: `/var/folders/{user-id}/T/sfcc-mcp-logs/` - **Linux**: `/tmp/sfcc-mcp-logs/` - **Windows**: `%TEMP%\sfcc-mcp-logs\` **Log Files Created:** - `sfcc-mcp-info.log` - General application logs and startup messages - `sfcc-mcp-debug.log` - Detailed debug information (only when `--debug` is enabled) - `sfcc-mcp-error.log` - Error messages and stack traces - `sfcc-mcp-warn.log` - Warning messages ### Finding Your Log Directory ```javascript // The exact path varies by system - to find yours: node -e "console.log(require('os').tmpdir() + '/sfcc-mcp-logs')" ## šŸ“– Documentation **šŸ“š [Complete Documentation](https://taurgis.github.io/sfcc-dev-mcp/)** - Comprehensive guides and references Quick Links: - **[Installation Guide](https://taurgis.github.io/sfcc-dev-mcp/installation)** - Detailed installation options - **[AI Interface Setup](https://taurgis.github.io/sfcc-dev-mcp/ai-interfaces)** - Configure Claude Desktop, GitHub Copilot, or Cursor - **[Configuration Guide](https://taurgis.github.io/sfcc-dev-mcp/configuration)** - SFCC credentials and Data API setup - **[Available Tools](https://taurgis.github.io/sfcc-dev-mcp/tools)** - Complete tool reference - **[Examples](https://taurgis.github.io/sfcc-dev-mcp/examples)** - Real-world usage patterns - **[Troubleshooting](https://taurgis.github.io/sfcc-dev-mcp/troubleshooting)** - Common issues and solutions ## šŸ› ļø Example AI Interactions ``` šŸ§‘ā€šŸ’» "Create a new SFCC controller for product search" šŸ¤– Generates complete controller with proper imports, route handling, and SFRA patterns šŸ§‘ā€šŸ’» "What's wrong with my checkout flow? Check the logs" šŸ¤– Analyzes recent error logs, identifies issues, and suggests fixes šŸ§‘ā€šŸ’» "Show me how to implement OCAPI hooks for order validation" šŸ¤– Provides best practices guide with complete hook implementation examples ``` ## šŸ”’ Security Notes - **Local Development Focus**: Designed for individual developer use on local machines - **Credential Protection**: dw.json files should never be committed to version control - **Network Security**: All API calls use HTTPS with proper authentication - **No Data Storage**: Server doesn't persist any SFCC data locally ## šŸ”® Future Plans We're continuously improving the SFCC Development MCP Server with exciting new features planned: ### šŸŽÆ Upcoming Enhancements - **🧠 Smarter Log Fetching** - Enhanced log analysis with intelligent filtering, pattern recognition, and contextual error correlation - **šŸš€ Deployment Tools** - Integration with SFCC deployment processes and code version management ### šŸ¤ We Welcome Your Contributions! Have ideas for new features or improvements? We'd love to hear from you! - **šŸ’” Feature Requests**: Open an issue to discuss your ideas - **šŸ› Bug Reports**: Help us improve by reporting any issues you encounter - **šŸ”§ Pull Requests**: Contribute code, documentation, or examples - **šŸ“š Documentation**: Help expand our guides and best practices Check out our [Contributing Guide](CONTRIBUTING.md) to get started, or browse our [open issues](https://github.com/taurgis/sfcc-dev-mcp/issues) to see where you can help. **Your expertise and feedback make this tool better for the entire SFCC community!** ## šŸ¤ Contributing We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details. ## šŸ“„ License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. --- **šŸš€ Ready to supercharge your SFCC development with AI?** **[šŸ“– Get Started with the Full Documentation](https://taurgis.github.io/sfcc-dev-mcp/)**