Skip to main content
Glama

Cloudinary MCP Server

mcp-llm-guide.md8.41 kB
# MCP Development Guide for LLMs This guide provides structured information for LLMs to assist in creating, modifying, and using Model Context Protocol (MCP) servers. ## 1. Core Concepts ### Protocol Overview - MCP enables standardized communication between LLM applications and integrations - Uses client-server architecture with JSON-RPC 2.0 message format - Latest protocol version: 2024-11-05 - Supports stdio and SSE transports ### Key Components 1. **Hosts**: LLM applications that initiate connections (e.g., Claude Desktop) 2. **Clients**: Maintain 1:1 connections with servers 3. **Servers**: Provide context, tools, and prompts to clients 4. **Resources**: File-like data that can be read by clients 5. **Tools**: Functions that can be called by the LLM 6. **Prompts**: Pre-written templates for specific tasks ## 2. Server Implementation Guidelines ### Server Structure 1. Core Server Class: ```typescript class Server extends Protocol<ServerRequest, ServerNotification, ServerResult> { constructor(serverInfo: Implementation, options: ServerOptions) // Must implement base protocol methods } ``` 2. Required Capabilities: ```typescript interface ServerCapabilities { experimental?: object; logging?: object; prompts?: { listChanged?: boolean }; resources?: { subscribe?: boolean; listChanged?: boolean }; tools?: { listChanged?: boolean }; } ``` ### Essential Implementation Steps 1. **Server Initialization**: ```typescript const server = new Server( { name: "your-server-name", version: "1.0.0" }, { capabilities: { // Declare supported capabilities resources: {}, tools: {}, prompts: {} } } ); ``` 2. **Request Handlers**: ```typescript // Example tool handler server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: [ { name: "tool-name", description: "Tool description", inputSchema: { type: "object", properties: { // Define parameters } } } ] })); ``` 3. **Transport Setup**: ```typescript const transport = new StdioServerTransport(); await server.connect(transport); ``` ## 3. Core Features Implementation ### Resources ```typescript interface Resource { uri: string; name: string; description?: string; mimeType?: string; } // Handler example server.setRequestHandler(ListResourcesRequestSchema, async () => ({ resources: [ { uri: "custom://resource", name: "Resource Name", description: "Resource description" } ] })); ``` ### Tools ```typescript interface Tool { name: string; description?: string; inputSchema: { type: "object"; properties?: object; required?: string[]; }; } // Handler example server.setRequestHandler(CallToolRequestSchema, async (request) => ({ content: [ { type: "text", text: "Tool execution result" } ] })); ``` ### Prompts ```typescript interface Prompt { name: string; description?: string; arguments?: PromptArgument[]; } // Handler example server.setRequestHandler(GetPromptRequestSchema, async (request) => ({ messages: [ { role: "user", content: { type: "text", text: "Prompt template" } } ] })); ``` ## 4. Best Practices ### Error Handling 1. Use appropriate error codes: ```typescript enum ErrorCode { ParseError = -32700, InvalidRequest = -32600, MethodNotFound = -32601, InvalidParams = -32602, InternalError = -32603 } ``` 2. Tool errors should be in result: ```typescript { isError: true, content: [{ type: "text", text: "Error description" }] } ``` ### Security Considerations 1. Input Validation: - Validate all parameters against schemas - Sanitize file paths and system commands - Validate URLs and external identifiers - Check parameter sizes and ranges 2. Access Control: - Implement authentication where needed - Use appropriate authorization checks - Audit tool usage - Rate limit requests 3. Resource Protection: - Validate resource paths - Monitor resource usage - Implement access controls - Rate limit requests ### Message Handling 1. Request Processing: - Validate inputs thoroughly - Use type-safe schemas - Handle errors gracefully - Implement timeouts 2. Progress Reporting: - Use progress tokens for long operations - Report progress incrementally - Include total progress when known ## 5. Client Integration Guidelines ### Client Configuration ```json { "mcpServers": { "server-name": { "command": "command-to-run", "args": ["arg1", "arg2"], "env": { "ENV_VAR": "value" } } } } ``` ### Environment Variables - Server inherits limited environment variables - Custom variables must be specified in config - Sensitive data should be in environment variables ## 6. Testing and Debugging ### MCP Inspector Usage 1. Start inspector with server: ```bash npx mcp-inspector your-server-command ``` 2. Features to test: - Resource listing and reading - Tool execution - Prompt generation - Error handling - Progress reporting ### Common Issues 1. Connection Problems: - Check transport configuration - Verify server process is running - Check for initialization errors 2. Message Handling: - Validate message formats - Check handler implementations - Verify error responses 3. Resource Issues: - Check file permissions - Validate URI formats - Verify content types ## 7. Performance and Scaling ### Best Practices 1. Resource Management: - Cache when appropriate - Implement cleanup - Monitor memory usage 2. Request Handling: - Use appropriate timeouts - Implement rate limiting - Handle concurrent requests 3. Error Recovery: - Implement reconnection logic - Handle partial failures - Clean up resources ## 8. Documentation Requirements ### Server Documentation 1. Capabilities Documentation: - List supported features - Document configuration options - Describe environment variables 2. API Documentation: - Document all resources - Document all tools - Document all prompts - Include example usage 3. Error Documentation: - List possible error codes - Describe error conditions - Include recovery steps ### Integration Guide 1. Setup Instructions: - Installation steps - Configuration options - Environment setup 2. Usage Examples: - Basic usage patterns - Common integrations - Error handling examples ## 9. Versioning and Updates ### Version Management 1. Protocol Versioning: - Support LATEST_PROTOCOL_VERSION - Handle version negotiation - Maintain compatibility 2. Server Versioning: - Use semantic versioning - Document breaking changes - Provide migration guides ### Update Handling 1. Capability Updates: - Notify clients of changes - Handle capability negotiation - Maintain backwards compatibility 2. Resource Updates: - Handle resource changes - Notify subscribed clients - Maintain consistency ## 10. Specific Server Types ### Database Servers (like Airtable) 1. Required Capabilities: - Resources for data access - Tools for data manipulation - Prompts for common operations 2. Implementation Focus: - Connection management - Query handling - Data transformation - Error handling - Rate limiting 3. Security Considerations: - API key management - Access control - Data validation - Request sanitization 4. Tools to Implement: - List databases/bases - Create/modify tables - Query data - Update records - Delete records 5. Resource Structure: - Database schema - Table contents - Query results 6. Error Handling: - Connection errors - Query errors - Rate limit errors - Authorization errors This guide should be used as a reference when assisting with MCP server development. Always consider the specific requirements and constraints of the project while following these guidelines.

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/felores/cloudinary-mcp-server'

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