Skip to main content
Glama

AS/400 MCP Server

Python 3.10+ License: MIT MCP Compatible

Servidor MCP (Model Context Protocol) que conecta asistentes de IA con sistemas AS/400 (IBM i) de forma segura via ODBC.

Permite que un asistente de IA consulte bases de datos, lea codigo fuente, compile programas y analice spoolfiles en un IBM i — todo con controles de seguridad estrictos que impiden operaciones destructivas.


Herramientas disponibles

Herramienta

Descripcion

Ejemplo

execute_sql

Ejecuta consultas SQL de solo lectura

SELECT * FROM QSYS2.SYSTABLES FETCH FIRST 5 ROWS ONLY

execute_cl_command

Ejecuta comandos CL permitidos (whitelist)

DSPFD FILE(MYLIB/MYFILE) OUTPUT(*OUTFILE) OUTFILE(QTEMP/FDA)

read_source_member

Lee el codigo fuente de un miembro

biblioteca='MYLIB', archivo_fuente='QRPGLESRC', miembro='MYPGM'

compile_program

Compila un programa (RPG, CL, COBOL, C)

library='MYLIB', member='MYPGM', command='CRTBNDRPG'

read_spoolfile

Lee spoolfiles (resultados de compilacion)

Sin parametros lista los 10 mas recientes


Related MCP server: mcp-server-db2i

Seguridad

Este servidor esta disenado para que la IA ayude sin riesgo. La filosofia es: analisis y compilacion si, destruccion nunca.

SQL — Solo lectura

  • Solo se permiten SELECT, WITH y VALUES

  • Se bloquean ; (statement stacking), SELECT INTO, CALL

  • Se eliminan comentarios SQL antes de evaluar

  • Si no se especifica limite, se agrega FETCH FIRST 1000 ROWS ONLY automaticamente

Comandos CL — Whitelist estricta

Solo se permiten comandos especificos. Todo lo demas es rechazado.

Permitidos:

Categoria

Comandos

Visualizacion

DSP* (DSPFD, DSPFFD, DSPPGMREF, DSPJOBLOG, DSPOBJD, DSPDBR, etc.)

Verificacion

CHKOBJ

Compilacion

CRTBNDRPG, CRTRPGMOD, CRTBNDCL, CRTSQLRPGI, CRTPGM, CRTSRVPGM, CRTBNDCBL, CRTSQLCBLI, CRTCMOD, CRTBNDC

Sesion

ADDLIBLE, RMVLIBLE, CHGCURLIB

Overrides

OVRDBF, DLTOVR

Bloqueados (ejemplos): DLTOBJ, DLTF, DLTLIB, CLRPFM, CHGOBJ, GRTOBJAUT, RVKOBJAUT, CALL, SBMJOB, CPYF, MOVOBJ, RNMOBJ, RUNSQLSTM y cualquier otro comando no listado arriba.

Identificadores validados

Todos los nombres de biblioteca, archivo y miembro se validan contra el patron AS/400: 1-10 caracteres, alfanumerico + #, @, $. Esto previene inyeccion SQL en sentencias DDL.

Errores sanitizados

Los mensajes de error nunca exponen credenciales, connection strings ni rutas internas del sistema.


Prerequisitos

  • Python 3.10 o superior

  • IBM i Access ODBC Driver instalado (descargar de IBM)

  • Acceso a un sistema IBM i (AS/400) con usuario y contrasena


Instalacion

1. Clonar el repositorio

git clone https://github.com/tu-usuario/as400-mcp-server.git
cd as400-mcp-server

2. Crear entorno virtual e instalar dependencias

python -m venv venv
source venv/bin/activate        # Linux/Mac
# venv\Scripts\activate         # Windows

pip install -e .

3. Configurar credenciales

cp .env.example .env
# Editar .env con tus credenciales de IBM i

4. Probar que funciona

python server.py

El servidor arranca via stdio esperando mensajes MCP (JSON-RPC).


Configuracion con Claude Desktop

Agrega lo siguiente a tu archivo de configuracion de Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "as400": {
      "command": "python",
      "args": ["C:/ruta/a/tu/as400-mcp-server/server.py"],
      "env": {
        "DB_HOST": "tu-host-ibmi.com",
        "DB_USER": "TU_USUARIO",
        "DB_PASS": "TU_PASSWORD"
      }
    }
  }
}

Nota: Tambien podes definir las variables en .env en vez de en el JSON.


Ejemplos de uso

Consultar tablas del sistema

"Mostrame las primeras 10 tablas de la biblioteca MYLIB"
→ execute_sql("SELECT TABLE_NAME, TABLE_TYPE FROM QSYS2.SYSTABLES WHERE TABLE_SCHEMA = 'MYLIB' FETCH FIRST 10 ROWS ONLY")

Ver estructura de un archivo

"Que campos tiene el archivo CUSTOMERS en MYLIB?"
→ execute_cl_command("DSPFFD FILE(MYLIB/CUSTOMERS) OUTPUT(*OUTFILE) OUTFILE(QTEMP/FLD)")
→ execute_sql("SELECT * FROM QTEMP.FLD")

Leer codigo fuente

"Mostrame el codigo del programa CALCPRICE"
→ read_source_member(biblioteca='MYLIB', archivo_fuente='QRPGLESRC', miembro='CALCPRICE')

Compilar y ver errores

"Compila el programa CALCPRICE y decime si hay errores"
→ compile_program(library='MYLIB', source_file='QRPGLESRC', member='CALCPRICE')
→ read_spoolfile()

Estructura del proyecto

as400-mcp-server/
├── server.py           # Servidor MCP principal
├── .env.example        # Template de configuracion
├── .gitignore          # Archivos excluidos de git
├── pyproject.toml      # Metadata del proyecto Python
├── LICENSE             # Licencia MIT
└── README.md           # Esta documentacion

Variables de entorno

Variable

Descripcion

Requerida

DB_HOST

Hostname o IP del sistema IBM i

Si

DB_USER

Usuario de IBM i

Si

DB_PASS

Contrasena de IBM i

Si


Contribuir

Las contribuciones son bienvenidas. Si queres agregar un comando CL a la whitelist o una nueva herramienta:

  1. Fork del repositorio

  2. Crea una branch (git checkout -b feature/mi-feature)

  3. Commit de tus cambios (git commit -m 'Agregar mi feature')

  4. Push a la branch (git push origin feature/mi-feature)

  5. Abri un Pull Request


Licencia

Este proyecto esta bajo la Licencia MIT.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to interact with IBM i systems through SQL tools and commands, supporting secure authentication, system monitoring, and database operations via the Model Context Protocol.
    78
    Apache 2.0
  • 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
    C
    maintenance
    Enables AI agents to interact with IBM i systems through the Model Context Protocol, providing secure SQL-based access to Db2 for i databases for querying, monitoring, and executing operations.
    Apache 2.0