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.
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues