Skip to main content
Glama
spron-in

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