mcp-everest
by spron-in
README.md
# Unofficial Percona Everest MCP Server
An unofficial MCP (Model Context Protocol) server implementation for [Percona Everest](https://docs.percona.com/everest/index.html) - an open-source cloud native database platform. This server enables AI-powered interaction with Percona Everest database clusters through a standardized protocol.
## Available Tools
The MCP server provides the following tools for interacting with Percona Everest:
- `list_database_clusters(namespace)`: Lists all available database clusters in the specified namespace
- `get_database_cluster(namespace, name)`: Retrieves detailed information about a specific database cluster
- `get_database_cluster_credentials(namespace, name)`: Fetches credentials for a specific database cluster
- `get_database_cluster_components(namespace, name)`: Gets components information for a specific database cluster
## Development Setup
1. Clone the repository:
```bash
git clone https://github.com/spron-in/mcp-everest
cd mcp-everest
uv venv
source .venv/bin/activate
```
2. Set up environment variables:
```bash
# Required
export EVEREST_API_KEY="your-api-key"
# Optional with defaults
export EVEREST_HOST="http://localhost:8080" # Everest API base URL
export EVEREST_VERIFY_SSL="true" # SSL verification
export EVEREST_TIMEOUT="30" # Request timeout in seconds
export EVEREST_READONLY="false" # Read-only mode
```
Read [Percona Everest documentation](https://docs.percona.com/everest/API.html) to learn more about API. I sent a [pull request](https://github.com/percona/everest-doc/pull/255) that explains how to get the API (JWT) key, hope it is going to be accepted soon.
3. Run the server:
```bash
uv run --with mcp-everest mcp-everest
```
## Testing and playing
### Testing with [MCP Inspector](https://github.com/modelcontextprotocol/inspector)
To test the server with the MCP development client:
```bash
mcp dev mcp_everest/mcp_server.py
```
This requires Node to be installed. It will start a NodeJS MCP Inspector that you can open in your browser and play with.
### Example mcp_client.py
There is also a client that can be used to interact with the MCP server:
```bash
python mcp_client.py
```
This is the example of how Large Language Model can talk to an MCP and use its tools. Read more in the [blog post](https://spron.in/blog/tpost/iksv5fzx91-fun-with-mcp-and-percona-everest).
## Future Development
### Planned Improvements
1. **Official Integration**
- Work towards making this an official MCP server for Percona Everest
- Submit for inclusion in popular MCP server collections
2. **API Coverage Expansion**
- Implement more GET endpoints from the Everest API
- Add support for POST/PUT/DELETE operations (but have read-only mode available)
- Add proper types and supported variables from API spec
- Include resources and prompts into MCP
3. **Cross-Integration**
- Integrate with other database MCP servers (MongoDB, PostgreSQL, etc.)
- Enable cross-database operations and management
- Implement unified monitoring across different database platforms
### Contributing
Contributions are welcome! Feel free to submit issues and pull requests.
TDQS
B3/5.0
Scored across 5 tools
Disambiguation5/5
Each tool has a clear, distinct purpose: create, get details, get components, get credentials, and list. No two tools overlap in functionality.
Naming Consistency5/5
All tool names follow a consistent verb_database_cluster pattern in snake_case, with predictable suffixes like _components and _credentials for specific sub-features.
Tool Count5/5
Five tools is well-suited for managing database clusters, covering core operations without being excessive or insufficient.
Completeness3/5
The set covers create and read operations (get, list, components, credentials) but lacks update and delete tools, leaving a notable gap in full lifecycle management.
Maintenance
ActivityInactive
ResponsivenessNo issues