Skip to main content
Glama
franccesco

Bloomy MCP

by franccesco
README.md
# 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

TDQS

A4/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: execute_query performs operations, get_authenticated_user_id handles authentication, and get_mutation_details/get_query_details provide metadata. The two detail tools are differentiated by query vs mutation focus, preventing confusion.

Naming Consistency5/5

All tools follow a consistent verb_noun naming pattern with snake_case: execute_query, get_authenticated_user_id, get_mutation_details, get_query_details. The pattern is predictable and readable throughout the set.

Tool Count5/5

Four tools is well-scoped for a GraphQL-focused server: one for execution, one for authentication, and two for schema introspection. Each tool earns its place without bloat or thin coverage for the domain.

Completeness4/5

The surface covers core GraphQL workflows well: execution, authentication, and schema details for both queries and mutations. A minor gap is the lack of a tool for subscription details or general schema exploration beyond specific queries/mutations, but agents can work around this.

Maintenance

ActivityInactive
ResponsivenessUnresponsive