OpenAPI Navigator - MCP server for navigating OpenAPI specifications
Project description
OpenAPI Navigator
An MCP (Model Context Protocol) server that provides tools for navigating and querying OpenAPI specifications. This server makes it easy for AI agents to explore, search, and understand OpenAPI specs without having to manually parse complex JSON/YAML files.
Features
- Load OpenAPI specs from local files or URLs
- Navigate endpoints with filtering by tags
- Search endpoints using fuzzy matching across paths, summaries, and operation IDs
- Explore schemas and their definitions
- Multiple spec support - load and manage multiple OpenAPI specifications simultaneously
- Smart indexing for fast lookups and searches
- Reference preservation - maintains
$refstructures for agents to decide when to resolve
Installation
The OpenAPI Navigator is available on PyPI and can be installed using uvx (recommended) or pip:
# Using uvx (recommended)
uvx openapi-navigator
# Or install globally with pip
pip install openapi-navigator
Usage
MCP Configuration
Add the OpenAPI Navigator to your MCP client configuration:
For Cursor
Add to your Cursor MCP settings:
{
"mcpServers": {
"openapi-navigator": {
"command": "uvx",
"args": ["openapi-navigator"],
"env": {}
}
}
}
For Claude Desktop
Add to your Claude Desktop configuration file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"openapi-navigator": {
"command": "uvx",
"args": ["openapi-navigator"],
"env": {}
}
}
}
For Code
Add to your Code MCP configuration:
{
"mcpServers": {
"openapi-navigator": {
"command": "uvx",
"args": ["openapi-navigator"],
"env": {}
}
}
}
Available Tools
The OpenAPI Navigator provides the following tools:
Core Operations
load_spec- Load an OpenAPI specification from a local file (requires absolute path)load_spec_from_url- Load an OpenAPI specification from a URLlist_loaded_specs- List all currently loaded specificationsunload_spec- Remove a specification from memory
Endpoint Operations
search_endpoints- Search endpoints using fuzzy matching. Use""or"a"as the query to get all endpointsget_endpoint- Get detailed information for a specific endpoint by path and method
Schema Operations
search_schemas- Search schema names using fuzzy matching. Use""or"a"as the query to get all schemasget_schema- Get detailed information for a specific schema by name
Example Workflow
-
Load a specification:
load_spec("/absolute/path/to/schema.yaml", "my-api") -
Get all endpoints:
search_endpoints("my-api", "") -
Get all schemas:
search_schemas("my-api", "") -
Search for specific endpoints:
search_endpoints("my-api", "virtual machine") -
Get endpoint details:
get_endpoint("my-api", "/api/virtualization/virtual-machines/", "GET") -
Get schema details:
get_schema("my-api", "VirtualMachine")
Development
Testing
The OpenAPI Navigator includes a comprehensive test suite with both unit and integration tests.
Running Tests
All tests:
uv run pytest
Unit tests only (fast):
uv run pytest tests/unit/
Integration tests only:
uv run pytest tests/integration/
With coverage report:
uv run pytest --cov=src --cov-report=html
Using the Makefile
For convenience, a Makefile is provided with common test targets:
# Run all tests
make test
# Run only unit tests (fast feedback)
make test-unit
# Run integration tests
make test-integration
# Run tests with coverage report
make test-cov
# Clean up generated files
make clean
# Format code
make format
# Lint code
make lint
Test Structure
tests/unit/- Unit tests for individual componentstest_spec_manager.py- Tests for the core specification management
tests/integration/- Integration tests for complete workflowstest_integration.py- End-to-end workflow testing
tests/conftest.py- Shared test fixtures and configuration
Test Coverage
The test suite aims for at least 65% code coverage and includes:
- 31 unit tests covering core functionality
- 5 integration tests covering complete workflows
- Mock testing for external dependencies
- Error handling validation
- Edge case coverage
Inspecting the Server
Use FastMCP CLI to inspect the server:
uvx fastmcp inspect openapi-navigator
This will generate a server-info.json file with detailed information about all available tools.
CI/CD Pipeline
The OpenAPI Navigator uses GitHub Actions for continuous integration and deployment.
Workflows
🔄 CI (ci.yml)
- Triggers: Pull requests and pushes to main
- Runs: Tests on Python 3.10, 3.11, and 3.12
- Features:
- Full test suite execution
- Code coverage reporting
- Linting and formatting checks with ruff
- Code formatting with black
🏗️ Build (build.yml)
- Triggers: Merges to main branch
- Features:
- Comprehensive testing
- Package building
- Code quality checks
- Artifact uploads
🚀 Release (release.yml)
- Triggers: GitHub releases
- Features:
- Automatic PyPI publishing (supports trusted publisher OIDC)
- GitHub release creation
- Pre-release testing
📦 Dependencies (dependencies.yml)
- Triggers: Weekly (Mondays) + manual
- Features:
- Automatic dependency updates
- Pull request creation
- Test validation
Setup Requirements
Option 1: Trusted Publisher (Recommended)
- PyPI Account: Create account at pypi.org
- Configure Trusted Publisher: In PyPI settings, add GitHub as a trusted publisher
- Push to GitHub: Workflows will automatically activate
Option 2: API Token (Traditional)
- PyPI Account: Create account at pypi.org
- Generate API Token: In PyPI settings, create an API token
- GitHub Secrets: Add
PYPI_API_TOKENwith your PyPI token - Update Workflow: Uncomment the
UV_TOKENline in.github/workflows/release.yml - Push to GitHub: Workflows will automatically activate
Release Process
- Create Release: Tag a new version in GitHub
- Automated Testing: CI runs full test suite
- Package Building: Creates distributable packages
- PyPI Publishing: Automatically publishes to PyPI
- Release Notes: Generates comprehensive release notes
Quality Gates
- ✅ Test Coverage: Minimum 65% required
- ✅ All Tests Pass: Unit and integration tests
- ✅ Code Quality: Linting and formatting with ruff and black
- ✅ Dependencies: Up-to-date and secure
Architecture
The OpenAPI Navigator consists of two main components:
- SpecManager: Handles loading, validation, and indexing of OpenAPI specifications
- MCP Server: Exposes tools through the Model Context Protocol
SpecManager Features
- Multi-format support: Handles both YAML and JSON OpenAPI specs
- Version detection: Automatically detects OpenAPI 3.x vs Swagger 2.x
- Smart indexing: Builds indexes for fast endpoint and schema lookups
- Fuzzy search: Provides intelligent search across endpoint metadata
- Reference handling: Preserves
$refstructures without automatic resolution
Error Handling
- Validation warnings: Warns on validation issues but continues if possible
- Graceful degradation: Only rejects specs that prevent core functionality
- Helpful error messages: Provides clear feedback on what went wrong
Security Considerations
- Absolute paths only: Local file loading requires absolute paths for security
- No automatic execution: The server only reads and parses specs, never executes code
- Input validation: All inputs are validated before processing
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
License
This project is licensed under the MIT License.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters