# MCP Server Documentation The MCP (Model Communication Protocol) Server is a service that provides intelligent introspection and exploration capabilities for any GraphQL API. This documentation will guide you on how to use the MCP server with Cursor IDE and MCP Client. ## Overview The MCP server provides a powerful interface to access and explore your GraphQL schema through an advanced set of tools. It introspects any GraphQL schema and provides structured, searchable information about: - Types - Queries - Mutations - Input types ## Features ### 1. Smart Schema Search The MCP server includes an advanced search system that helps you find exactly what you need in your GraphQL schema: - Fuzzy matching for typo tolerance - Multi-word search support - Relevance-based results - Context-aware searching - Field-level search capabilities ### 2. Type Exploration Detailed type information with: - Field listings - Related types - Documentation - Usage examples ### 3. Query/Mutation Discovery Easy exploration of available operations: - Grouped by category - Detailed parameter information - Return type details - Usage context ## Setup 1. Install dependencies: ```bash yarn install ``` 2. Configure your GraphQL endpoint in the MCP server: ```typescript const GRAPHQL_ENDPOINT = "http://your-graphql-endpoint/graphql"; ``` 3. Configure Cursor IDE: Create or update `.cursor/mcp.json` in your project: ```json { "mcpServers": { "cw-core": { "command": "node", "args": [ "/Users/martinshumberto/repositories/cw-mcp-server/build/main.js", "--debug" ], "transport": "stdio" } } } ``` ## Available Tools ### 1. Schema Tool ```typescript // Get complete schema information { "title": "GraphQL Schema", "description": "Full introspection of GraphQL schema" } ``` ### 2. Search Tool ```typescript // Advanced search across schema elements { "title": "Search Schema", "description": "Advanced search across all GraphQL schema elements", "parameters": { "searchTerm": "Search term - supports multiple words and partial matches", "threshold": "Optional similarity threshold (0-1, default: 0.3)" } } ``` ### 3. Types Tool ```typescript // Get specific type information { "title": "GraphQL Types", "description": "Get fields from a specific GraphQL type", "parameters": { "typeName": "Name of the GraphQL type to inspect" } } ``` ### 4. Field Tool ```typescript // Get detailed field information { "title": "Field Details", "description": "Get detailed information about a specific field in a type", "parameters": { "typeName": "Name of the GraphQL type containing the field", "fieldName": "Name of the field to inspect" } } ``` ### 5. Related Types Tool ```typescript // Find related types { "title": "Related Types", "description": "Find types that are related to a specific type", "parameters": { "typeName": "Name of the GraphQL type to find relations for" } } ``` ## Using with Cursor IDE ### 1. Search Examples Basic search: ```json { "searchTerm": "user" } ``` Multi-word search: ```json { "searchTerm": "create user profile" } ``` Fuzzy search with custom threshold: ```json { "searchTerm": "user", "threshold": 0.5 } ``` ### 2. Type Exploration ```typescript // Get type details const typeInfo = await getType("User"); // Find related types const relatedTypes = await findRelatedTypes("User"); // Get field details const fieldInfo = await getFieldDetails("User", "profile"); ``` ## Cursor AI Integration Features 1. **Schema Autocomplete** - Cursor AI will automatically provide intelligent code completion for your GraphQL types and fields - Example: When typing a GraphQL query, press Ctrl+Space to see available fields 2. **Type Inspection** - Hover over any GraphQL type to see its full definition - Use Command+Click (Mac) or Ctrl+Click (Windows) to jump to type definitions 3. **Query Building** - Type `query` or `mutation` to get intelligent suggestions based on your schema - Cursor AI will suggest valid fields and arguments ### Example Usage with Cursor AI 1. **Creating a Query** ```typescript // Start typing and Cursor AI will suggest available queries const userQuery = ` query Get ` // After typing "Get", Cursor AI will suggest queries like "GetUser", "GetProfile", etc. ``` 2. **Building Mutations** ```typescript // Cursor AI will suggest available mutation fields and their required arguments const createUserMutation = ` mutation Create ` // After typing "Create", you'll get suggestions like "CreateUser", "CreatePost", etc. ``` ### Cursor AI Commands Access these features through the Command Palette (Cmd/Ctrl + Shift + P): 1. **MCP: Show Schema** - Displays the full GraphQL schema in a side panel - Useful for exploring available types and operations 2. **MCP: Generate Query** - Helps you build a GraphQL query with proper typing - Suggests fields based on your schema 3. **MCP: Generate Type** - Creates TypeScript interfaces from GraphQL types - Maintains type safety between your frontend and API ### Keyboard Shortcuts | Action | Mac | Windows/Linux | |-------------------|-----------------|------------------| | Show Schema | Cmd + Shift + S | Ctrl + Shift + S | | Generate Query | Cmd + Shift + Q | Ctrl + Shift + Q | | Generate Type | Cmd + Shift + T | Ctrl + Shift + T | | Jump to Definition | Cmd + Click | Ctrl + Click | | Show Hover Info | Option + Hover | Alt + Hover | ## Best Practices 1. **Efficient Searching** - Use specific search terms - Utilize multi-word search for better context - Adjust threshold for search precision 2. **Type Exploration** - Start with high-level types - Use related types to understand connections - Explore field details for deeper understanding 3. **Performance** - Cache frequently used schema information - Use specific tools instead of full schema when possible - Implement proper error handling ## Error Handling The MCP server provides detailed error information: ```typescript try { const result = await searchSchema("user"); } catch (error) { if (error.message.includes("not found")) { // Handle not found case } else { // Handle other errors } } ``` ## Contributing Feel free to contribute to the MCP server by: 1. Reporting issues 2. Suggesting new features 3. Submitting pull requests ## License This project is licensed under the MIT License - see the LICENSE file for details.