Skip to main content
Glama

Visa Design System MCP Server

by MarySuneela
  • Apple
README.md13.3 kB
# Visa Design System MCP Server A Model Context Protocol (MCP) server that provides AI tools with access to Visa's Product Design System resources, including design tokens, component specifications, and usage guidelines. ## Table of Contents - [Installation](#installation) - [Quick Start](#quick-start) - [Configuration](#configuration) - [Usage](#usage) - [MCP Client Setup](#mcp-client-setup) - [Development](#development) - [API Documentation](#api-documentation) - [Troubleshooting](#troubleshooting) - [Contributing](#contributing) - [License](#license) ## Installation ### Prerequisites - Node.js 18+ - npm or yarn package manager ### Install from Source ```bash # Clone the repository git clone <repository-url> cd visa-design-system-mcp # Install dependencies npm install # Build the project npm run build ``` ### Install as Global Package ```bash # Install globally (after building) npm install -g . # Or link for development npm link ``` ## Quick Start ### 1. Start the Server ```bash # Start with default configuration npm start # Or use the CLI with custom options npx visa-design-system-mcp start --data-path ./custom-data --log-level debug ``` ### 2. Test the Server ```bash # Test server functionality npm test # Run integration tests npm run test:integration ``` ### 3. Connect an MCP Client See [MCP Client Setup](#mcp-client-setup) for detailed configuration instructions. ## Configuration ### Environment Variables The server can be configured using environment variables: | Variable | Description | Default | Example | |----------|-------------|---------|---------| | `MCP_DATA_PATH` | Path to design system data files | `./data` | `/path/to/design-data` | | `MCP_LOG_LEVEL` | Logging level | `info` | `debug`, `warn`, `error` | | `MCP_ENABLE_FILE_WATCHING` | Enable automatic data reloading | `true` | `false` | | `MCP_CACHE_TTL` | Cache time-to-live in seconds | `300` | `600` | | `MCP_MAX_CONCURRENT_REQUESTS` | Maximum concurrent requests | `100` | `50` | ### Configuration File Create a `config.json` file in the project root: ```json { "dataPath": "./data", "logLevel": "info", "enableFileWatching": true, "cacheTTL": 300, "maxConcurrentRequests": 100, "server": { "name": "visa-design-system-mcp", "version": "1.0.0" } } ``` ### CLI Options ```bash npx visa-design-system-mcp start [options] Options: --data-path <path> Path to design system data files (default: "./data") --log-level <level> Logging level: debug, info, warn, error (default: "info") --config <file> Path to configuration file --no-file-watching Disable automatic file watching --verbose Enable verbose logging --help Display help information ``` ## Usage ### Basic Server Operations ```bash # Start the server npm start # Start with custom data path MCP_DATA_PATH=/custom/path npm start # Start with debug logging MCP_LOG_LEVEL=debug npm start # Start without file watching (for production) MCP_ENABLE_FILE_WATCHING=false npm start ``` ### Available MCP Tools The server exposes the following MCP tools: #### Design Token Tools - `get-design-tokens` - Retrieve design tokens with optional filtering - `search-design-tokens` - Search tokens by name or value - `get-design-token-details` - Get detailed token information - `get-design-token-categories` - List all token categories #### Component Tools - `get-components` - List all components with optional filtering - `get-component-details` - Get detailed component specifications - `get-component-examples` - Retrieve component code examples - `search-components` - Search components by name or description #### Guidelines Tools - `get-guidelines` - Retrieve design guidelines with optional filtering - `get-guideline-details` - Get detailed guideline information - `search-guidelines` - Search guidelines by content or tags For detailed API documentation, see [API.md](./API.md). ## MCP Client Setup ### Claude Desktop Add the following to your Claude Desktop configuration file: **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` **Windows**: `%APPDATA%\Claude\claude_desktop_config.json` ```json { "mcpServers": { "visa-design-system": { "command": "node", "args": ["/path/to/visa-design-system-mcp/dist/index.js"], "env": { "MCP_DATA_PATH": "/path/to/data", "MCP_LOG_LEVEL": "info" } } } } ``` ### Custom MCP Client ```javascript import { Client } from '@modelcontextprotocol/sdk/client/index.js'; import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js'; const transport = new StdioClientTransport({ command: 'node', args: ['/path/to/visa-design-system-mcp/dist/index.js'] }); const client = new Client({ name: "my-app", version: "1.0.0" }, { capabilities: {} }); await client.connect(transport); // List available tools const tools = await client.request({ method: "tools/list" }, {}); console.log('Available tools:', tools.tools.map(t => t.name)); ``` ### Kiro IDE Add to your `.kiro/settings/mcp.json`: ```json { "mcpServers": { "visa-design-system": { "command": "node", "args": ["/path/to/visa-design-system-mcp/dist/index.js"], "env": { "MCP_DATA_PATH": "/path/to/data" }, "disabled": false, "autoApprove": ["get-design-tokens", "get-components", "get-guidelines"] } } } ``` ## Development ### Setup Development Environment ```bash # Install dependencies npm install # Build the project npm run build # Run in development mode with hot reload npm run dev # Run tests npm test # Run tests in watch mode npm run test:watch # Run tests with coverage npm run test:coverage # Lint code npm run lint # Clean build artifacts npm run clean ``` ### Project Structure ``` ├── src/ │ ├── index.ts # Main server entry point │ ├── cli.ts # Command-line interface │ ├── mcp-server.ts # MCP protocol implementation │ ├── config/ # Configuration management │ ├── services/ # Business logic services │ │ ├── design-token-service.ts │ │ ├── component-service.ts │ │ └── guidelines-service.ts │ ├── types/ # TypeScript type definitions │ ├── utils/ # Utility functions │ │ ├── data-manager.ts # Data loading and caching │ │ ├── logger.ts # Logging utilities │ │ ├── errors.ts # Error handling │ │ └── validation.ts # Data validation │ └── schemas/ # JSON schemas for validation ├── data/ # Design system data files │ ├── design-tokens.json # Design token definitions │ ├── components.json # Component specifications │ └── guidelines.json # Design guidelines ├── tests/ # Test files │ ├── unit/ # Unit tests │ ├── integration/ # Integration tests │ └── utils/ # Test utilities ├── dist/ # Compiled JavaScript output └── docs/ # Additional documentation ``` ### Testing ```bash # Run all tests npm test # Run specific test suites npm run test:unit # Unit tests only npm run test:integration # Integration tests only npm run test:performance # Performance tests npm run test:edge-cases # Edge case tests npm run test:mcp-compliance # MCP protocol compliance tests # Run tests with coverage npm run test:coverage # Run tests for CI npm run test:ci ``` ### Adding New Features 1. **Add new MCP tools**: Implement in respective service files 2. **Update data schemas**: Modify JSON schemas in `src/schemas/` 3. **Add tests**: Create corresponding test files 4. **Update documentation**: Update API.md and examples ## API Documentation For comprehensive API documentation including all available tools, parameters, and response formats, see [API.md](./API.md). For usage examples and integration patterns, see [EXAMPLES.md](./EXAMPLES.md). ## Troubleshooting ### Common Issues #### Server Won't Start **Problem**: Server fails to start with "Cannot find module" error ``` Error: Cannot find module './dist/index.js' ``` **Solution**: Build the project first ```bash npm run build npm start ``` **Problem**: Server starts but no tools are available ``` Error: No tools found ``` **Solution**: Check data path and file permissions ```bash # Verify data files exist ls -la data/ # Check file permissions chmod 644 data/*.json # Start with debug logging MCP_LOG_LEVEL=debug npm start ``` #### Data Loading Issues **Problem**: Design system data not loading ``` Error: Failed to load design system data ``` **Solution**: Verify data file format and location ```bash # Validate JSON files npm run validate-data # Check data path configuration echo $MCP_DATA_PATH # Use absolute path MCP_DATA_PATH=/absolute/path/to/data npm start ``` **Problem**: File watching not working ``` Warning: File watching disabled ``` **Solution**: Check file system permissions and enable file watching ```bash # Enable file watching explicitly MCP_ENABLE_FILE_WATCHING=true npm start # Check if chokidar can access files node -e "const chokidar = require('chokidar'); chokidar.watch('./data').on('ready', () => console.log('File watching works'));" ``` #### MCP Client Connection Issues **Problem**: Claude Desktop can't connect to server ``` Error: Failed to connect to MCP server ``` **Solution**: Check configuration and paths ```json { "mcpServers": { "visa-design-system": { "command": "node", "args": ["/absolute/path/to/visa-design-system-mcp/dist/index.js"] } } } ``` **Problem**: Tools not appearing in MCP client ``` Error: No tools available ``` **Solution**: Verify server initialization and tool registration ```bash # Test server directly echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}' | node dist/index.js # Check server logs MCP_LOG_LEVEL=debug node dist/index.js ``` #### Performance Issues **Problem**: Slow response times ``` Warning: Tool call took longer than expected ``` **Solution**: Optimize caching and data loading ```bash # Increase cache TTL MCP_CACHE_TTL=600 npm start # Reduce concurrent requests MCP_MAX_CONCURRENT_REQUESTS=50 npm start # Monitor performance npm run test:performance ``` **Problem**: High memory usage ``` Warning: High memory usage detected ``` **Solution**: Optimize data structures and caching ```bash # Monitor memory usage node --max-old-space-size=512 dist/index.js # Disable file watching in production MCP_ENABLE_FILE_WATCHING=false npm start ``` ### Debug Mode Enable debug mode for detailed logging: ```bash # Environment variable MCP_LOG_LEVEL=debug npm start # CLI flag npx visa-design-system-mcp start --log-level debug --verbose ``` Debug output includes: - Server initialization steps - Data loading progress - Tool call details - Cache operations - File watching events - Error stack traces ### Log Files Logs are written to: - Console (stdout/stderr) - Optional log file (configure via `LOG_FILE` environment variable) ```bash # Write logs to file LOG_FILE=./logs/mcp-server.log npm start # Tail logs in real-time tail -f ./logs/mcp-server.log ``` ### Health Checks Test server health: ```bash # Basic connectivity test echo '{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2024-11-05", "capabilities": {}, "clientInfo": {"name": "test", "version": "1.0.0"}}}' | node dist/index.js # Tool availability test echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}' | node dist/index.js # Data integrity test npm run validate-data ``` ### Getting Help 1. **Check the logs**: Enable debug logging to see detailed error information 2. **Validate data**: Run `npm run validate-data` to check data file integrity 3. **Test connectivity**: Use the health check commands above 4. **Review configuration**: Verify all paths and environment variables 5. **Check permissions**: Ensure the server has read access to data files 6. **Update dependencies**: Run `npm update` to get the latest versions If you're still experiencing issues, please: 1. Include debug logs in your issue report 2. Specify your Node.js version (`node --version`) 3. Describe your MCP client setup 4. Provide your configuration files (with sensitive data removed) ## Contributing 1. Fork the repository 2. Create a feature branch (`git checkout -b feature/amazing-feature`) 3. Make your changes 4. Add tests for new functionality 5. Run the test suite (`npm test`) 6. Commit your changes (`git commit -m 'Add amazing feature'`) 7. Push to the branch (`git push origin feature/amazing-feature`) 8. Open a Pull Request ### Development Guidelines - Follow TypeScript best practices - Maintain test coverage above 90% - Update documentation for new features - Follow conventional commit messages - Ensure MCP protocol compliance ## License MIT License - see [LICENSE](LICENSE) file for details.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/MarySuneela/mcp-vpds'

If you have feedback or need assistance with the MCP directory API, please join our Discord server