MCP OpenAPI Server

by ReAPI-com
Verified
# @reapi/mcp-openapi A Model Context Protocol (MCP) server that loads and serves multiple OpenAPI specifications to enable LLM-powered IDE integrations. This server acts as a bridge between your OpenAPI specifications and LLM-powered development tools like Cursor and other code editors. ## Features - Loads multiple OpenAPI specifications from a directory - Exposes API operations and schemas through MCP protocol - Enables LLMs to understand and work with your APIs directly in your IDE - Supports dereferenced schemas for complete API context - Maintains a catalog of all available APIs ## Powered by [ReAPI](https://reapi.com) This open-source MCP server is sponsored by [ReAPI](https://reapi.com), a next-generation API platform that simplifies API design and testing. While this server provides local OpenAPI integration for development, ReAPI offers two powerful modules: ### 🎨 API CMS - Design APIs using an intuitive no-code editor - Generate and publish OpenAPI specifications automatically - Collaborate with team members in real-time - Version control and change management ### 🧪 API Testing - The most developer-friendly no-code API testing solution - Create and manage test cases with an intuitive interface - Powerful assertion and validation capabilities - Serverless cloud test executor - Perfect for both QA teams and developers - CI/CD integration ready Try ReAPI for free at [reapi.com](https://reapi.com) and experience the future of API development. ## Cursor Configuration To integrate the MCP OpenAPI server with Cursor IDE, you have two options for configuration locations: ### Option 1: Project-specific Configuration (Recommended) Create a `.cursor/mcp.json` file in your project directory. This option is recommended as it allows you to maintain different sets of specs for different projects ```json { "mcpServers": { "@reapi/mcp-openapi": { "command": "npx", "args": ["-y", "@reapi/mcp-openapi@latest", "--dir", "./specs"], "env": {} } } } ``` > **Tip**: Using a relative path like `./specs` makes the configuration portable and easier to share across team members. > > **Note**: We recommend using `@latest` tag as we frequently update the server with new features and improvements. > > **Important**: Project-specific configuration helps manage LLM context limits. When all specifications are placed in a single folder, the combined metadata could exceed the LLM's context window, leading to errors. Organizing specs by project keeps the context size manageable. ### Option 2: Global Configuration Create or edit `~/.cursor/mcp.json` in your home directory to make the server available across all projects: ```json { "mcpServers": { "@reapi/mcp-openapi": { "command": "npx", "args": ["-y", "@reapi/mcp-openapi@latest", "--dir", "/path/to/your/specs"], "env": {} } } } ``` ### Enable in Cursor Settings After adding the configuration: 1. Open Cursor IDE 2. Go to Settings > Cursor Settings > MCP 3. Enable the @reapi/mcp-openapi server 4. Click the refresh icon next to the server to apply changes > **Note**: By default, Cursor requires confirmation for each MCP tool execution. If you want to allow automatic execution without confirmation, you can enable [Yolo mode](https://docs.cursor.com/context/model-context-protocol#yolo-mode) in Cursor settings. The server is now ready to use. When you add new OpenAPI specifications to your directory, you can refresh the catalog by: 1. Opening Cursor's chat panel 2. Typing one of these prompts: ``` "Please refresh the API catalog" "Reload the OpenAPI specifications" ``` ### OpenAPI Specification Requirements 1. Place your OpenAPI 3.x specifications in the target directory: - Supports both JSON and YAML formats - Files should have `.json`, `.yaml`, or `.yml` extensions - Scanner will automatically discover and process all specification files 2. Specification ID Configuration: - By default, the filename (without extension) is used as the specification ID - To specify a custom ID, add `x-spec-id` in the OpenAPI info object: ```yaml openapi: 3.0.0 info: title: My API version: 1.0.0 x-spec-id: my-custom-api-id # Custom specification ID ``` > **Important**: Setting a custom `x-spec-id` is crucial when working with multiple specifications that have: > - Similar or identical endpoint paths > - Same schema names > - Overlapping operation IDs > > The spec ID helps distinguish between these similar resources and prevents naming conflicts. For example: > ```yaml > # user-service.yaml > info: > x-spec-id: user-service > paths: > /users: > get: ... > > # admin-service.yaml > info: > x-spec-id: admin-service > paths: > /users: > get: ... > ``` > Now you can reference these endpoints specifically as `user-service/users` and `admin-service/users` ## How It Works 1. The server scans the specified directory for OpenAPI specification files 2. It processes and dereferences the specifications for complete context 3. Creates and maintains a catalog of all API operations and schemas 4. Exposes this information through the MCP protocol 5. IDE integrations can then use this information to: - Provide API context to LLMs - Enable intelligent code completion - Assist in API integration - Generate API-aware code snippets ## Tools 1. `refresh-api-catalog` - Refresh the API catalog - Returns: Success message when catalog is refreshed 2. `get-api-catalog` - Get the API catalog, the catalog contains metadata about all openapi specifications, their operations and schemas - Returns: Complete API catalog with all specifications, operations, and schemas 3. `search-api-operations` - Search for operations across specifications - Inputs: - `query` (string): Search query - `specId` (optional string): Specific API specification ID to search within - Returns: Matching operations from the API catalog 4. `search-api-schemas` - Search for schemas across specifications - Inputs: - `query` (string): Search query - `specId` (optional string): Specific API specification ID to search - Returns: Matching schemas from the API catalog 5. `load-api-operation-by-operationId` - Load an operation by operationId - Inputs: - `specId` (string): API specification ID - `operationId` (string): Operation ID to load - Returns: Complete operation details 6. `load-api-operation-by-path-and-method` - Load an operation by path and method - Inputs: - `specId` (string): API specification ID - `path` (string): API endpoint path - `method` (string): HTTP method - Returns: Complete operation details 7. `load-api-schema-by-schemaName` - Load a schema by schemaName - Inputs: - `specId` (string): API specification ID - `schemaName` (string): Name of the schema to load - Returns: Complete schema details ## Roadmap 1. **Semantic Search** - Enable natural language queries for API operations and schemas - Improve search accuracy with semantic understanding 2. **Remote Specs Sync** - Support syncing OpenAPI specifications from remote sources 3. **Code Templates** - Expose code templates through MCP protocol - Provide reference patterns for LLM code generation 4. **Community Contributions** - Submit feature requests and bug reports - Contribute to improve the server ## Example Prompts in Cursor Here are some example prompts you can use in Cursor IDE to interact with your APIs: 1. **Explore Available APIs** ``` "Show me all available APIs in the catalog with their operations" "List all API specifications and their endpoints" ``` 2. **API Operation Details** ``` "Show me the details of the create pet API endpoint" "What are the required parameters for creating a new pet?" "Explain the response schema for the pet creation endpoint" ``` 3. **Schema and Mock Data** ``` "Generate mock data for the Pet schema" "Create a valid request payload for the create pet endpoint" "Show me examples of valid pet objects based on the schema" ``` 4. **Code Generation** ``` "Generate an Axios client for the create pet API" "Create a TypeScript interface for the Pet schema" "Write a React hook that calls the create pet endpoint" ``` 5. **API Integration Assistance** ``` "Help me implement error handling for the pet API endpoints" "Generate unit tests for the pet API client" "Create a service class that encapsulates all pet-related API calls" ``` 6. **Documentation and Usage** ``` "Show me example usage of the pet API with curl" "Generate JSDoc comments for the pet API client methods" "Create a README section explaining the pet API integration" ``` 7. **Validation and Types** ``` "Generate Zod validation schema for the Pet model" "Create TypeScript types for all pet-related API responses" "Help me implement request payload validation for the pet endpoints" ``` 8. **API Search and Discovery** ``` "Find all endpoints related to pet management" "Show me all APIs that accept file uploads" "List all endpoints that return paginated responses" ``` These prompts demonstrate how to leverage the MCP server's capabilities for API development. Feel free to adapt them to your specific needs or combine them for more complex tasks. ## Contributing Contributions are welcome! Please feel free to submit a Pull Request.
ID: b2a2m8ekxb