Labsco
singlestore-labs logo

SingleStore

β˜… 32

from singlestore-labs

Interact with the SingleStore database platform

πŸ”₯πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedFreeAdvanced setup

SingleStore MCP Server

MIT Licence PyPI Downloads

Model Context Protocol (MCP) is a standardized protocol designed to manage context between large language models (LLMs) and external systems. This repository provides an installer and an MCP Server for Singlestore, enabling seamless integration.

With MCP, you can use Claude Desktop, Claude Code, Cursor, or any compatible MCP client to interact with SingleStore using natural language, making it easier to perform complex operations effortlessly.

πŸ’‘ Pro Tip: Not sure what the MCP server can do? Just call the /help prompt in your chat!

Components

Tools

The server implements the following tools:

  • get_user_info: Retrieve details about the current user

    • No arguments required
    • Returns user information and details
  • organization_info: Retrieve details about the user's current organization

    • No arguments required
    • Returns details of the organization
  • choose_organization: Choose from available organizations (only available when API key environment variable is not set)

    • No arguments required
    • Returns a list of available organizations to choose from
  • set_organization: Set the active organization (only available when API key environment variable is not set)

    • Arguments: organization_id (string)
    • Sets the specified organization as active
  • workspace_groups_info: Retrieve details about the workspace groups accessible to the user

    • No arguments required
    • Returns details of the workspace groups
  • workspaces_info: Retrieve details about the workspaces in a specific workspace group

    • Arguments: workspace_group_id (string)
    • Returns details of the workspaces
  • resume_workspace: Resume a suspended workspace

    • Arguments: workspace_id (string)
    • Resumes the specified workspace
  • list_starter_workspaces: List all starter workspaces accessible to the user

    • No arguments required
    • Returns details of available starter workspaces
  • create_starter_workspace: Create a new starter workspace

    • Arguments: workspace configuration parameters
    • Returns details of the created starter workspace
  • terminate_starter_workspace: Terminate an existing starter workspace

    • Arguments: workspace_id (string)
    • Terminates the specified starter workspace
  • list_regions: Retrieve a list of all regions that support workspaces

    • No arguments required
    • Returns a list of available regions
  • list_sharedtier_regions: Retrieve a list of shared tier regions

    • No arguments required
    • Returns a list of shared tier regions
  • run_sql: Execute SQL operations on a connected workspace

    • Arguments: workspace_id, database, sql_query, and connection parameters
    • Returns the results of the SQL query in a structured format
  • create_notebook_file: Create a new notebook file in SingleStore Spaces

    • Arguments: notebook_name, content (optional)
    • Returns details of the created notebook
  • upload_notebook_file: Upload a notebook file to SingleStore Spaces

    • Arguments: file_path, notebook_name
    • Returns details of the uploaded notebook
  • create_job_from_notebook: Create a scheduled job from a notebook

    • Arguments: job configuration including notebook_path, schedule_mode, etc.
    • Returns details of the created job
  • get_job: Retrieve details of an existing job

    • Arguments: job_id (string)
    • Returns details of the specified job
  • delete_job: Delete an existing job

    • Arguments: job_id (string)
    • Deletes the specified job
  • stage_list_files: List files and folders in a Stage deployment's file system

    • Arguments: deployment_id (string), path (string, optional)
    • Returns folder contents including files and subfolders
  • stage_get_file: Get a file from Stage by path

    • Arguments: deployment_id (string), path (string), return_type (string: 'metadata', 'url', or 'content')
    • Returns file metadata, a download URL, or text content
  • stage_create_folder: Create a folder in Stage

    • Arguments: deployment_id (string), path (string)
    • Returns creation status
  • stage_upload_file: Upload a file to Stage with text content

    • Arguments: deployment_id (string), path (string), content (string), local_path (string)
    • Returns upload status
  • stage_move: Move or rename a file or folder in Stage

    • Arguments: deployment_id (string), source_path (string), destination_path (string)
    • Returns move status
  • stage_delete: Delete a file or folder from Stage

    • Arguments: deployment_id (string), path (string)
    • Returns deletion status

Note: Organization management tools (choose_organization and set_organization) are only available when the API key environment variable is not set, allowing for interactive organization selection during OAuth authentication.

Development

Prerequisites

  • Python >= 3.11
  • uv for dependency management

Setup

  1. Clone the repository:
git clone https://github.com/singlestore-labs/mcp-server-singlestore.git
cd mcp-server-singlestore
  1. Install dependencies:
uv sync --dev
  1. Set up pre-commit hooks (optional but recommended):
uv run pre-commit install

Development Workflow

# Quick quality checks (fast feedback)
./scripts/check.sh

# Run tests independently
./scripts/test.sh

# Comprehensive validation (before PRs)
./scripts/check-all.sh

# Create and publish releases
./scripts/release.sh

Running Tests

# Run test suite with coverage
./scripts/test.sh

# Or use pytest directly
uv run pytest
uv run pytest --cov=src --cov-report=html

Code Quality

We use Ruff for both linting and formatting:

# Format code
uv run ruff format src/ tests/

# Lint code
uv run ruff check src/ tests/

# Lint and fix issues automatically
uv run ruff check --fix src/ tests/

Release Process

Releases are managed through git tags and automated PyPI publication:

  1. Create release: ./scripts/release.sh (interactive tool)
  2. Automatic publication: Triggered by pushing version tags
  3. No manual PyPI uploads - fully automated pipeline

See scripts/dev-workflow.md for detailed workflow documentation.