Skip to main content
Glama

Ceph MCP Server

by rajmohanram
README.mdโ€ข7.6 kB
# Ceph MCP Server A Model Context Protocol (MCP) server that enables AI assistants to interact with Ceph storage clusters through natural language. This server provides a bridge between AI tools and your Ceph infrastructure, making storage management more accessible and intuitive. ## ๐Ÿš€ Features - **Health Monitoring**: Get comprehensive cluster health status and diagnostics - **Host Management**: Monitor and manage cluster hosts and their services - **Detailed Analysis**: Access detailed health checks for troubleshooting - **Secure Communication**: Authenticated access to Ceph Manager API - **Structured Responses**: AI-friendly output formatting for clear communication - **Async Architecture**: Non-blocking operations for better performance ## ๐Ÿ“‹ Prerequisites - Python 3.11 or higher - UV package manager - Access to a Ceph cluster with Manager API enabled - Valid Ceph credentials with appropriate permissions ## ๐Ÿ› ๏ธ Installation 1. **Clone and setup the project:** ```bash # Create the project directory mkdir ceph-mcp-server cd ceph-mcp-server # Initialize UV project uv init --python 3.11 # Add dependencies uv add mcp httpx pydantic python-dotenv structlog asyncio-mqtt uv add --dev pytest pytest-asyncio black isort mypy ruff ``` 2. **Set up your environment:** ```bash # Copy the example environment file cp .env.example .env # Edit .env with your Ceph cluster details nano .env ``` 3. **Configure your Ceph connection:** ```bash # .env file contents CEPH_MANAGER_URL=https://192.16.0.31:8443 CEPH_USERNAME=admin CEPH_PASSWORD=your_ceph_password CEPH_SSL_VERIFY=false # Set to true in production with proper certificates ``` ## ๐Ÿƒโ€โ™‚๏ธ Quick Start 1. **Start the MCP server:** ```bash uv run python -m ceph_mcp.server ``` 2. **Test the connection:** The server will log its startup and any connection issues. Look for messages indicating successful connection to your Ceph cluster. ## ๐Ÿ”ง Configuration ### Environment Variables | Variable | Description | Default | Required | |----------|-------------|---------|----------| | `CEPH_MANAGER_URL` | Ceph Manager API endpoint | `https://192.16.0.31:8443` | Yes | | `CEPH_USERNAME` | Ceph username for API access | `admin` | Yes | | `CEPH_PASSWORD` | Ceph password for authentication | - | Yes | | `CEPH_SSL_VERIFY` | Enable SSL certificate verification | `true` | No | | `CEPH_CERT_PATH` | Path to custom SSL certificate | - | No | | `LOG_LEVEL` | Logging level (DEBUG, INFO, WARNING, ERROR) | `INFO` | No | | `MAX_REQUESTS_PER_MINUTE` | Rate limiting for API requests | `60` | No | ### Security Considerations - **Production Usage**: Always enable SSL verification (`CEPH_SSL_VERIFY=true`) in production - **Credentials**: Store credentials securely and never commit them to version control - **Network Access**: Ensure the MCP server can reach your Ceph Manager API endpoint - **Permissions**: Use a dedicated Ceph user with minimal required permissions ## ๐ŸŽฏ Available Tools The MCP server provides four main tools for AI assistants: ### 1. `get_cluster_health` Get comprehensive cluster health status including overall health, warnings, and statistics. **Use cases:** - "How is my Ceph cluster doing?" - "Are there any storage issues I should know about?" - "What's the current status of my cluster?" ### 2. `get_host_status` Retrieve information about all hosts in the cluster including online/offline status and service distribution. **Use cases:** - "Which hosts are online in my cluster?" - "What services are running on each host?" - "Are any hosts having problems?" ### 3. `get_health_details` Get detailed health check information for troubleshooting specific issues. **Use cases:** - "What specific warnings does my cluster have?" - "Give me detailed information about cluster errors" - "Help me troubleshoot this storage issue" ### 4. `get_host_details` Get comprehensive information about a specific host. **Parameters:** - `hostname`: The name of the host to examine **Use cases:** - "Tell me about host ceph-node-01" - "What services are running on this specific host?" - "Get detailed specs for this host" ## ๐Ÿ“Š Example Interactions ### Health Check ``` AI Assistant: "How is my Ceph cluster doing?" Response: โœ… Cluster is healthy. All 3 hosts are online. OSDs: 12/12 up. ๐ŸŸข Overall Status: HEALTH_OK ๐Ÿ–ฅ๏ธ Hosts: 3/3 online ๐Ÿ’พ OSDs: 12/12 up ``` ### Troubleshooting ``` AI Assistant: "What warnings does my cluster have?" Response: ๐ŸŸก Cluster has 2 warning(s) requiring attention. ๐ŸŸก Warnings requiring attention: - OSD_NEARFULL: 1 osd(s) are getting full - POOL_BACKFILLFULL: 1 pool(s) are backfill full ``` ## ๐Ÿงช Development ### Running Tests ```bash # Run all tests uv run pytest # Run with coverage uv run pytest --cov=ceph_mcp # Run specific test types uv run pytest -m "not integration" # Skip integration tests ``` ### Code Quality ```bash # Format code uv run black src/ tests/ uv run isort src/ tests/ # Lint code uv run ruff check src/ tests/ uv run mypy src/ # All checks uv run ruff check src/ tests/ && uv run mypy src/ && uv run pytest ``` ### Project Structure ``` ceph-mcp-server/ โ”œโ”€โ”€ src/ceph_mcp/ โ”‚ โ”œโ”€โ”€ __init__.py # Package initialization โ”‚ โ”œโ”€โ”€ server.py # Main MCP server โ”‚ โ”œโ”€โ”€ api/ โ”‚ โ”‚ โ””โ”€โ”€ ceph_client.py # Ceph API client โ”‚ โ”œโ”€โ”€ config/ โ”‚ โ”‚ โ””โ”€โ”€ settings.py # Configuration management โ”‚ โ”œโ”€โ”€ handlers/ โ”‚ โ”‚ โ””โ”€โ”€ health_handlers.py # Request handlers โ”‚ โ”œโ”€โ”€ models/ โ”‚ โ”‚ โ””โ”€โ”€ ceph_models.py # Data models โ”‚ โ””โ”€โ”€ utils/ # Utility functions โ”œโ”€โ”€ tests/ # Test suite โ”œโ”€โ”€ .env.example # Environment template โ”œโ”€โ”€ pyproject.toml # Project configuration โ””โ”€โ”€ README.md # This file ``` ## ๐Ÿ› Troubleshooting ### Common Issues 1. **Connection Refused** - Check if Ceph Manager is running and accessible - Verify the URL and port in your configuration - Ensure network connectivity between MCP server and Ceph cluster 2. **Authentication Failed** - Verify username and password are correct - Check that the user has appropriate permissions - Ensure the Ceph user account is active 3. **SSL Certificate Errors** - For development: Set `CEPH_SSL_VERIFY=false` - For production: Use proper SSL certificates or specify `CEPH_CERT_PATH` 4. **Permission Denied** - Ensure the Ceph user has read permissions for health and host information - Check Ceph user capabilities: `ceph auth get client.your-username` ### Debugging Enable debug logging to get more detailed information: ```bash LOG_LEVEL=DEBUG uv run python -m ceph_mcp.server ``` ## ๐Ÿค Contributing 1. Fork the repository 2. Create a feature branch: `git checkout -b feature-name` 3. Make your changes and add tests 4. Run the test suite: `uv run pytest` 5. Format code: `uv run black src/ tests/` 6. Submit a pull request ## ๐Ÿ“„ License This project is licensed under the MIT License - see the LICENSE file for details. ## ๐Ÿ™ Acknowledgments - [Ceph Storage](https://ceph.io/) - The distributed storage system - [Model Context Protocol](https://modelcontextprotocol.io/) - The protocol enabling AI integration - [Anthropic](https://anthropic.com/) - For developing MCP and Claude ## ๐Ÿ“ž Support - Create an issue for bug reports or feature requests - Check existing issues before creating new ones - Provide detailed information about your environment when reporting issues

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/rajmohanram/ceph-mcp-server'

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