Skip to main content

A MCP Server for Hologres

Project description

English | 中文

Hologres MCP Server

Hologres MCP Server serves as a universal interface between AI Agents and Hologres databases. It enables seamless communication between AI Agents and Hologres, helping AI Agents retrieve Hologres database metadata and execute SQL operations.

Configuration

Mode 1: Using Local File

Download

Download from Github

git clone https://github.com/aliyun/alibabacloud-hologres-mcp-server.git

MCP Integration

Add the following configuration to the MCP client configuration file:

{
    "mcpServers": {
        "hologres-mcp-server": {
            "command": "uv",
            "args": [
                "--directory",
                "/path/to/alibabacloud-hologres-mcp-server",
                "run",
                "hologres-mcp-server"
            ],
            "env": {
                "HOLOGRES_HOST": "host",
                "HOLOGRES_PORT": "port",
                "HOLOGRES_USER": "access_id",
                "HOLOGRES_PASSWORD": "access_key",
                "HOLOGRES_DATABASE": "database"
            }
        }
    }
}

Mode 2: Using PIP Mode

Installation

Install MCP Server using the following package:

pip install hologres-mcp-server

MCP Integration

Add the following configuration to the MCP client configuration file:

Use uv mode

{
    "mcpServers": {
        "hologres-mcp-server": {
            "command": "uv",
            "args": [
                "run",
                "--with",
                "hologres-mcp-server",
                "hologres-mcp-server"
            ],
            "env": {
                "HOLOGRES_HOST": "host",
                "HOLOGRES_PORT": "port",
                "HOLOGRES_USER": "access_id",
                "HOLOGRES_PASSWORD": "access_key",
                "HOLOGRES_DATABASE": "database"
            }
        }
    }
}

Use uvx mode

{
    "mcpServers": {
        "hologres-mcp-server": {
            "command": "uvx",
            "args": [
                "hologres-mcp-server"
            ],
            "env": {
                "HOLOGRES_HOST": "host",
                "HOLOGRES_PORT": "port",
                "HOLOGRES_USER": "access_id",
                "HOLOGRES_PASSWORD": "access_key",
                "HOLOGRES_DATABASE": "database"
            }
        }
    }
}

Components

Tools

  • execute_hg_select_sql: Execute a SELECT SQL query in Hologres database
  • execute_hg_select_sql_with_serverless: Execute a SELECT SQL query in Hologres database with serverless computing
  • execute_hg_dml_sql: Execute a DML (INSERT, UPDATE, DELETE) SQL query in Hologres database
  • execute_hg_ddl_sql: Execute a DDL (CREATE, ALTER, DROP, COMMENT ON) SQL query in Hologres database
  • gather_hg_table_statistics: Collect table statistics in Hologres database
    • Parameters: schema_name (string), table (string)
  • get_hg_query_plan: Get query plan in Hologres database
  • get_hg_execution_plan: Get execution plan in Hologres database
  • call_hg_procedure: Invoke a procedure in Hologres database
  • create_hg_maxcompute_foreign_table: Create MaxCompute foreign tables in Hologres database.

Since some Agents do not support resources and resource templates, the following tools are provided to obtain the metadata of schemas, tables, views, and external tables.

  • list_hg_schemas: Lists all schemas in the current Hologres database, excluding system schemas.
  • list_hg_tables_in_a_schema: Lists all tables in a specific schema, including their types (table, view, external table, partitioned table).
    • Parameters: schema_name (string)
  • show_hg_table_ddl: Show the DDL script of a table, view, or external table in the Hologres database.
    • Parameters: schema_name (string), table (string)

Resources

Built-in Resources

  • hologres:///schemas: Get all schemas in Hologres database

Resource Templates

  • hologres:///{schema}/tables: List all tables in a schema in Hologres database

  • hologres:///{schema}/{table}/partitions: List all partitions of a partitioned table in Hologres database

  • hologres:///{schema}/{table}/ddl: Get table DDL in Hologres database

  • hologres:///{schema}/{table}/statistic: Show collected table statistics in Hologres database

  • system:///{+system_path}: System paths include:

    • hg_instance_version - Shows the hologres instance version.
    • guc_value/<guc_name> - Shows the guc (Grand Unified Configuration) value.
    • missing_stats_tables - Shows the tables that are missing statistics.
    • stat_activity - Shows the information of current running queries.
    • query_log/latest/<row_limits> - Get recent query log history with specified number of rows.
    • query_log/user/<user_name>/<row_limits> - Get query log history for a specific user with row limits.
    • query_log/application/<application_name>/<row_limits> - Get query log history for a specific application with row limits.
    • query_log/failed/<interval>/<row_limits> - Get failed query log history with interval and specified number of rows.

Prompts

  • analyze_table_performance: Generate a prompt to analyze table performance in Hologres
  • optimize_query: Generate a prompt to optimize a SQL query in Hologres
  • explore_schema: Generate a prompt to explore a schema in Hologres database

Testing

The project includes comprehensive unit tests and integration tests.

Unit Tests

Unit tests do not require a database connection and use mocked dependencies. The test suite includes 295 test cases covering:

  • Tools functionality and SQL validation
  • Resources and resource templates
  • Prompts generation
  • Utility functions and error handling
  • Concurrency scenarios
  • SQL injection protection
# Run all unit tests
uv run pytest tests/unit/ -v

# Run specific test file
uv run pytest tests/unit/test_tools.py -v

# Run with coverage
uv run pytest tests/unit/ --cov=src/hologres_mcp_server --cov-report=html

Integration Tests

Integration tests require a real Hologres database connection. The test suite includes 61 test cases organized into 12 test classes:

Test Class Tests Description
TestMCPConnection 5 MCP server connection and basic functionality
TestMCPResources 14 Resource reading functionality (schemas, tables, DDL, statistics, partitions, query logs)
TestMCPTools 10 Tool calls for read-only operations
TestMCPProcedureTools 3 Stored procedure tool calls
TestMCPMaxComputeTools 1 MaxCompute foreign table creation
TestMCPDDLTools 5 DDL operations (CREATE, ALTER, DROP, COMMENT)
TestMCPDMLTools 3 DML operations (INSERT, UPDATE, DELETE)
TestErrorHandling 3 Error handling and edge cases
TestMCPPrompts 4 Prompt generation functionality
TestMCPConcurrency 3 Concurrent MCP operations
TestMCPBoundaryConditions 4 Edge cases (Unicode, NULL, empty results)
TestMCPPerformance 3 Performance scenarios (large/wide result sets)
  1. Create a configuration file from the example:
cp tests/integration/.test_mcp_client_env_example tests/integration/.test_mcp_client_env
  1. Edit the configuration file with your Hologres credentials:
HOLOGRES_HOST=your-hologres-instance.hologres.aliyuncs.com
HOLOGRES_PORT=80
HOLOGRES_USER=your_username
HOLOGRES_PASSWORD=your_password
HOLOGRES_DATABASE=your_database
  1. Run the integration tests:
# Run all integration tests
uv run pytest tests/integration/ -v -m integration

# Run specific test class
uv run pytest tests/integration/test_mcp_integration.py::TestMCPTools -v

# Run all tests (unit + integration)
uv run pytest tests/ -v

Note: Integration tests will be skipped if the .test_mcp_client_env file is missing or contains incomplete configuration.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hologres_mcp_server-0.2.0.tar.gz (151.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hologres_mcp_server-0.2.0-py3-none-any.whl (21.4 kB view details)

Uploaded Python 3

File details

Details for the file hologres_mcp_server-0.2.0.tar.gz.

File metadata

  • Download URL: hologres_mcp_server-0.2.0.tar.gz
  • Upload date:
  • Size: 151.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for hologres_mcp_server-0.2.0.tar.gz
Algorithm Hash digest
SHA256 e00dfe6165df8d1e07cfa4daee9716d7d20ca833d1bc68153a8d031ed8612bad
MD5 c07689ffb0cffc19668e4520f77c7474
BLAKE2b-256 e9e9e17c461b26b6f8c0beb163392eb63df3e15c51174594a2fc370dec3e1c2e

See more details on using hashes here.

File details

Details for the file hologres_mcp_server-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for hologres_mcp_server-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4b56f71d5b364d65f9ec3ac27eb3312c5fa7246bee4768292862b1a1c89b9ae1
MD5 446488e18775defc4de6f265dd1c2227
BLAKE2b-256 ea45fcfd39ab7ea78664b2e9b0dfe6c0607d05fa09f83f5d27ae7ffef1b3e826

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page