Skip to main content
Glama
blakecodes

Informix MCP Server

by blakecodes
README.md
# Informix MCP Server

A [Model Context Protocol](https://modelcontextprotocol.io/) server for IBM Informix databases. Connects via JDBC using `jaydebeapi`, so no Informix Client SDK installation is needed -- just a JDBC driver JAR and Java.

## Prerequisites

- Python 3.11+
- [uv](https://docs.astral.sh/uv/) (Python package manager)
- Java 8+ (JDK or JRE)

An Informix JDBC driver JAR is bundled in the `drivers/` directory. To use a different version, either replace the JAR in `drivers/` or set the `INFORMIX_JDBC_DRIVER_PATH` environment variable.

## Available Tools

| Tool | Description |
|------|-------------|
| `test_connection` | Test connectivity and return the Informix server version |
| `list_databases` | List all databases on the server (queries `sysmaster:sysdatabases`) |
| `list_tables` | List user tables in a database, optionally including views and system tables |
| `describe_table` | Get column names, types, lengths, and nullability for a table |
| `execute_query` | Run arbitrary SQL with a configurable row limit |
| `get_table_indexes` | Show indexes on a table (name, type, clustered) |
| `get_table_constraints` | Show PK, FK, unique, and check constraints for a table |

All tools accept an optional `database` parameter to target a specific database. If omitted, the default database from `INFORMIX_DATABASE` is used.

## Setup

### Cursor IDE

Add the following to `~/.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "informix": {
      "command": "/path/to/uv",
      "args": [
        "run",
        "--directory",
        "/path/to/informix-mcp",
        "informix-mcp-server.py"
      ],
      "env": {
        "JAVA_HOME": "/path/to/java/home",
        "INFORMIX_HOST": "your-host.example.com",
        "INFORMIX_PORT": "5020",
        "INFORMIX_DATABASE": "your_database",
        "INFORMIX_SERVER": "your_informix_server",
        "INFORMIX_USER": "your_user",
        "INFORMIX_PASSWORD": "your_password",
        "INFORMIX_DBDATE": "MDY4"
      }
    }
  }
}
```

After saving, restart the MCP server from Cursor Settings > MCP.

### Claude Desktop

Add the following to your Claude Desktop config file:

- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "informix": {
      "command": "/path/to/uv",
      "args": [
        "run",
        "--directory",
        "/path/to/informix-mcp",
        "informix-mcp-server.py"
      ],
      "env": {
        "JAVA_HOME": "/path/to/java/home",
        "INFORMIX_HOST": "your-host.example.com",
        "INFORMIX_PORT": "5020",
        "INFORMIX_DATABASE": "your_database",
        "INFORMIX_SERVER": "your_informix_server",
        "INFORMIX_USER": "your_user",
        "INFORMIX_PASSWORD": "your_password",
        "INFORMIX_DBDATE": "MDY4"
      }
    }
  }
}
```

After saving, restart Claude Desktop for the changes to take effect. The Informix tools will appear in the tools menu (hammer icon) when starting a new conversation.

## Environment Variables

| Variable | Required | Description |
|----------|----------|-------------|
| `JAVA_HOME` | Yes | Path to a JDK/JRE home directory |
| `INFORMIX_HOST` | Yes | Informix server hostname |
| `INFORMIX_PORT` | Yes | Informix SQLI port |
| `INFORMIX_DATABASE` | Yes | Default database name |
| `INFORMIX_SERVER` | Yes | Informix server instance name (`INFORMIXSERVER`) |
| `INFORMIX_USER` | Yes | Database username |
| `INFORMIX_PASSWORD` | Yes | Database password |
| `INFORMIX_DBDATE` | No | Date format (defaults to `MDY4`) |
| `INFORMIX_JDBC_DRIVER_PATH` | No | Override path to a JDBC driver JAR (defaults to bundled `drivers/*.jar`) |

## Running Standalone

```bash
# Install dependencies
uv sync

# Run (with env vars set)
uv run informix-mcp-server.py
```

The server communicates over stdio using the MCP protocol.

## Switching Environments

To connect to a different Informix instance, update the `env` values in `mcp.json` with the new host, port, server name, database, and credentials. Restart the MCP server after changing environment variables.