Skip to main content
Glama
huangjien

db2-mcp-server

by huangjien

db2-mcp-server

PyPI version License: MIT Coverage

Overview

The db2-mcp-server is a Python-based server utilizing the MCP framework to interact with IBM DB2 databases. It provides tools for listing tables and retrieving table metadata.

Related MCP server: mcp-server-db2i

Features

  • List Tables: Retrieve a list of tables from the connected DB2 database.

  • Get Table Metadata: Fetch metadata for a specific table, including column details and data types.

  • Dynamic Prompt Loading: Load custom prompts from JSON configuration files for flexible query assistance.

  • Built-in Prompts: Pre-configured prompts for DB2 query help and schema analysis.

Requirements

  • Python 3.12

  • FastMCP (latest stable version)

  • IBM DB2 Python driver (ibm_db)

  • Pydantic

Setup Instructions

  1. Clone the Repository

    git clone <repository-url>
    cd db2-mcp-server
  2. Set Up Virtual Environment

    uv v0.6.x
    source uv/bin/activate
  3. Install Dependencies

    pip install -r requirements.txt
  4. Run the Server

    python src/db2_mcp_server/core.py

Dynamic Prompts

The server supports dynamic prompt loading from JSON configuration files. Set the PROMPTS_FILE environment variable to specify a custom prompts configuration file.

Example Usage

export PROMPTS_FILE=/path/to/your/prompts_config.json
python src/db2_mcp_server/core.py

Configuration Format

See examples/prompts_config.json for a complete example and docs/DYNAMIC_PROMPTS.md for detailed documentation.

Testing

  • Use pytest (version ≥ 7.0.0) for running tests.

  • Current test coverage: 92.98% (exceeding the 80% requirement).

  • Comprehensive test suite includes:

    • Core functionality tests (test_core.py)

    • Database tools tests (test_list_tables.py, test_metadata_retrieval.py)

    • Caching mechanism tests (test_cache.py)

    • Logging configuration tests (test_logger.py)

    • Dynamic prompt loading tests (test_dynamic_loader.py, test_integration_dynamic_prompts.py)

  • Run tests with:

    pytest --cov=src/db2_mcp_server --cov-report=html tests/
  • For verbose output:

    pytest --cov=src/db2_mcp_server --cov-report=term-missing -v

Security and API Restrictions

  • The server is read-only, prohibiting SQL INSERT, UPDATE, or DELETE operations.

  • Uses a database user with only SELECT privileges.

Logging

  • Errors are logged with structured logs in JSON format, excluding sensitive data.

Contribution

  • Contributions are welcome. Please follow the project's coding standards and testing guidelines.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables safe exploration and querying of multiple databases (PostgreSQL, MySQL, SQLite, DB2) with read-only defaults, connection pooling, and parameterized queries for SQL injection prevention.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to query and inspect IBM DB2 for i databases using read-only SQL commands and schema inspection tools. It provides secure access to table metadata, views, and indexes via the JT400 JDBC driver.
    12 npm
    20
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables development support for AS400/IBM i systems by providing read-only access to metadata, source code, and program dependencies via ODBC. It supports CL, RPG, and COBOL environments, allowing users to retrieve library, table, and system information.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables read-only SQL query execution and database schema information retrieval for PostgreSQL databases.
    7 npm
    MIT