Bloomy MCP
by franccesco
# Bloomy MCP
A Model Context Protocol (MCP) server for interacting with Bloom Growth's GraphQL API.
## Overview
Bloomy MCP is a server that connects to Bloom Growth's GraphQL API and exposes it through the Model Context Protocol, enabling AI assistants to perform operations against the Bloom Growth platform.
## Features
- Query Bloom Growth GraphQL API through MCP
- Retrieve query and mutation details
- Execute GraphQL queries and mutations via MCP tools
- Get authenticated user information
- Automatic schema introspection
## Installation
### Prerequisites
- Python 3.12 or higher
- Access to Bloom Growth API
- [uv](https://github.com/astral-sh/uv) (recommended) or pip for package management
### Package Management
This project recommends using `uv`, a fast Python package installer and resolver that serves as a drop-in replacement for pip/pip-tools. It's significantly faster than traditional package managers.
#### Installing uv
```bash
curl -sSf https://astral.sh/uv/install.sh | sh
```
For other installation methods, see the [uv documentation](https://github.com/astral-sh/uv).
### Setup
1. Clone this repository
2. Set up a Python virtual environment:
```bash
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
```
3. Install the package in development mode:
Using pip:
```bash
pip install -e .
```
Using uv (recommended):
```bash
uv pip install -e .
```
For development dependencies:
```bash
uv pip install -e ".[dev]"
```
### Environment Variables
Create a `.env` file with the following variables:
```
BLOOM_API_URL=<Your Bloom API URL>
BLOOM_API_TOKEN=<Your Bloom API Token>
```
## Usage
### Cursor Integration
To use this MCP server with Cursor (AI-powered IDE):
1. Go to Cursor > Cursor Settings > MCP
2. Click on "Add new MCP server"
3. Configure the server with the following details:
- Name: "Bloom Growth" (or "BG" or any name you prefer)
- Type: Command
- Command: `uv run --project /path/to/your/repo/ --env-file /path/to/your/repo/.env bloomy-server`
**Important**: Replace `/path/to/your/repo/` with the actual path to your bloomy-mcp repository (e.g., `/Users/username/workspace/bloomy-mcp/`).
### Running the Server
Start the Bloomy MCP server:
```bash
bloomy-server
```
### Development Mode Inspection
For development and debugging purposes, you can use the MCP inspector tool:
```bash
npx @modelcontextprotocol/inspector bloomy-server
```
This allows you to inspect the MCP server's behavior and responses during development.
### Recommended Tools
For optimal development workflow:
- **direnv**: Use for managing environment variables and automatically loading them when entering the project directory
- **uv**: Use for fast and reliable package management
Setting up direnv:
1. Install direnv (e.g., `brew install direnv` on macOS)
2. Create a `.envrc` file in your project root:
```bash
export BLOOM_API_URL=your_api_url
export BLOOM_API_TOKEN=your_api_token
```
3. Run `direnv allow` to authorize the environment variables
This combination of tools (direnv + uv) provides an efficient environment for both secrets management and package management.
### Available MCP Tools
The following MCP tools are available for AI assistants:
- `get_query_details` - Get detailed information about specific GraphQL queries
- `get_mutation_details` - Get detailed information about specific GraphQL mutations
- `execute_query` - Execute a GraphQL query or mutation with variables
- `get_authenticated_user_id` - Get the ID of the currently authenticated user
### Available MCP Resources
- `bloom://queries` - Get a list of all available queries
- `bloom://mutations` - Get a list of all available mutations
## Development
### Project Structure
```
src/
└── bloomy_mcp/
├── __init__.py # Package initialization
├── client.py # GraphQL client implementation
├── formatters.py # Data formatting utilities
├── introspection.py # GraphQL schema introspection
├── operations.py # GraphQL operation utilities
└── server.py # MCP server implementation
```
### Dependencies
- `mcp[cli]` - Model Context Protocol server
- `gql` - GraphQL client library
- `httpx` - HTTP client
- `pyyaml` - YAML processing