Skip to main content
Glama

KDB MCP Service

README.md5.83 kB
# KDB MCP Service A Model Context Protocol (MCP) service for interacting with KDB+ databases. This service allows AI agents to query, insert, update, and delete data from KDB+ databases through a standardized MCP interface. ## Features - **Multiple Database Support**: Connect to multiple KDB+ databases simultaneously - **Connection Pooling**: Efficient connection management with configurable pool sizes - **Full CRUD Operations**: Query, insert, update, and delete data - **Schema Introspection**: List tables and get schema information - **Environment Variable Support**: Secure credential management via environment variables - **Async Operations**: Non-blocking database operations for better performance ## Installation 1. Clone the repository: ```bash git clone <repository-url> cd kdb-mcp ``` 2. Install dependencies: ```bash pip install -r requirements.txt ``` 3. Configure your databases (see Configuration section) ## Configuration ### Environment Variables Copy `.env.example` to `.env` and fill in your database credentials: ```bash cp .env.example .env ``` Edit `.env` with your actual database details: ```env KDB_PROD_HOST=your-prod-host.com KDB_PROD_PORT=5000 KDB_PROD_USERNAME=your-username KDB_PROD_PASSWORD=your-password ``` ### Configuration File The service uses a YAML configuration file located at `config/kdb_config.yaml`. You can customize: - Database connections - Connection pool sizes - Logging settings - Server configuration Example configuration: ```yaml databases: production: host: ${KDB_PROD_HOST:localhost} port: ${KDB_PROD_PORT:5000} username: ${KDB_PROD_USERNAME:} password: ${KDB_PROD_PASSWORD:} pool_size: 10 description: Production KDB+ database ``` ## Usage ### Running the Server Start the MCP server: ```bash python main.py ``` Or with a custom config file: ```bash python main.py /path/to/custom/config.yaml ``` ### Available MCP Tools The service provides the following MCP tools: #### 1. `kdb_query` Execute any Q query on a KDB+ database. ```json { "database": "production", "query": "select from trades where date=.z.d" } ``` #### 2. `kdb_list_tables` List all tables in a database. ```json { "database": "production" } ``` #### 3. `kdb_get_schema` Get schema information for a specific table. ```json { "database": "production", "table": "trades" } ``` #### 4. `kdb_select` Execute a SELECT query with optional filtering. ```json { "database": "production", "table": "trades", "columns": ["symbol", "price", "volume"], "where": "symbol=`AAPL", "limit": 100 } ``` #### 5. `kdb_insert` Insert data into a table. ```json { "database": "production", "table": "trades", "data": { "symbol": "AAPL", "price": 150.25, "volume": 1000 } } ``` #### 6. `kdb_update` Update existing records in a table. ```json { "database": "production", "table": "trades", "updates": { "price": 151.00 }, "where": "symbol=`AAPL" } ``` #### 7. `kdb_delete` Delete records from a table. ```json { "database": "production", "table": "trades", "where": "date<.z.d-30" } ``` #### 8. `kdb_list_databases` List all configured databases. ```json {} ``` ## Integration with AI Agents This MCP service can be integrated with any AI agent that supports the Model Context Protocol. The agent can use the provided tools to: 1. Query real-time market data 2. Analyze historical trading patterns 3. Update trading strategies 4. Manage data pipelines 5. Generate reports from KDB+ data ### Example Agent Workflow ```python # Agent pseudocode async def analyze_trading_data(): # List available databases databases = await call_tool("kdb_list_databases", {}) # Get today's trades trades = await call_tool("kdb_select", { "database": "production", "table": "trades", "where": "date=.z.d", "limit": 1000 }) # Analyze and generate insights insights = analyze(trades) # Store insights back to KDB+ await call_tool("kdb_insert", { "database": "analytics", "table": "insights", "data": insights }) ``` ## Project Structure ``` kdb-mcp/ ├── src/ │ └── kdb_mcp/ │ ├── __init__.py # Package initialization │ ├── kdb_connection.py # KDB+ connection handling │ ├── mcp_server.py # MCP server implementation │ └── config.py # Configuration management ├── config/ │ └── kdb_config.yaml # Database configuration ├── main.py # Entry point ├── requirements.txt # Python dependencies ├── .env.example # Environment variables template └── README.md # This file ``` ## Security Considerations - Never commit `.env` files with actual credentials - Use environment variables for sensitive information - Implement proper authentication for production deployments - Consider using SSL/TLS for database connections - Regularly rotate database credentials - Limit database permissions to minimum required ## Troubleshooting ### Connection Issues - Verify KDB+ server is running and accessible - Check firewall rules for the KDB+ port - Ensure credentials are correct - Test connectivity with `telnet host port` ### Query Errors - Verify Q syntax is correct - Check table and column names exist - Ensure proper data types are used - Review KDB+ server logs for detailed errors ## Contributing Contributions are welcome! Please: 1. Fork the repository 2. Create a feature branch 3. Commit your changes 4. Push to the branch 5. Create a Pull Request ## License [Your License Here] ## Support For issues and questions, please create an issue in the repository or contact your system administrator.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/riteshsonawala/kdb-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server