mcpField
D
db2-mcp-server

db2-mcp-server

Local
github.com/huangjienDatabases2Updated 69w ago

About db2-mcp-server

A Python MCP server for working with IBM DB2 databases. It provides read-only table discovery and metadata retrieval, with built-in and configurable prompts for database query assistance.

Key features

  1. 01List DB2 tables
  2. 02Retrieve column and data type metadata
  3. 03Load prompts from JSON configuration
  4. 04Built-in query and schema prompts
  5. 05Read-only database access

Use cases

  1. 01Inspect tables in a DB2 database
  2. 02Review a table’s columns and data types
  3. 03Configure prompts for DB2 query assistance

MCP support

Exposes DB2 table-listing, table-metadata, and prompt capabilities to MCP clients. Database access is read-only.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

No install method listed yet

We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.

Repository

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

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.

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.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.