python-mcp-as400 MCP server
Commit 24. Okt. 2026Verbindet KI-Assistenten mit IBM i (AS/400) Systemen, um Db2 abzufragen, Quellcode zu lesen, Programme zu kompilieren und Spool-Dateien sicher zu analysieren.
Auch bekannt als LorenteFacundo/python-mcp-as400
- Stars
- 2
- Tools
- 5
- Downloads, 30 Tage
- —
- Neueste Version
- —
- Letzter Commit
- 24. Okt. 2026
- Lizenz
- MIT
Was ist python-mcp-as400 MCP?
python-mcp-as400 ist ein MCP server. Verbindet KI-Assistenten mit IBM i (AS/400) Systemen, um Db2 abzufragen, Quellcode zu lesen, Programme zu kompilieren und Spool-Dateien sicher zu analysieren. Er stellt 5 Tools bereit, etwa execute_sql, execute_cl_command, read_source_member.
Zusammenfassung generiert aus dem README des Projekts
Über python-mcp-as400 MCP server
Dieser MCP server ermöglicht es, KI-Assistenten für eine sichere Analyse und Entwicklung mit IBM i Systemen zu verbinden. Er erlaubt es Entwicklern, Clients wie Claude oder Cursor zu nutzen, um mit Db2 for i zu interagieren, RPG-, COBOL- oder CL-Quellcode zu lesen und Kompilierungsaufgaben zu verwalten. Indem er die Lücke zwischen Large Language Models und Legacy-Business-Logik schließt, hilft er Teams dabei, Impact-Analysen über tausende von Tabellen hinweg viel schneller durchzuführen als durch manuelle Inspektion.
Der Server läuft lokal via stdio und benötigt Python 3.10+, den IBM i Access ODBC Driver sowie gültige Datenbank-Credentials, die über Umgebungsvariablen bereitgestellt werden. Er wurde mit einem strengen Sicherheitsmodell entwickelt, das die Analyse über die Datenveränderung stellt. Eine Validierungsschicht stellt sicher, dass SQL-Queries read-only bleiben und CL-Befehle auf eine spezifische Allow-list beschränkt sind, um versehentliche Datenänderungen oder das Löschen von Objekten zu verhindern.
Entwickler können spezifische Tools wie execute_sql zum Abfragen von Systemtabellen, read_source_member zur Inspektion von Code und compile_program zum Erstellen von RPG- oder C-Programmen nutzen. Er enthält außerdem read_spoolfile, um Job-Logs und Kompilierungslisten zu untersuchen, was ihn zu einem umfassenden Tool für die Wartung und das Verständnis komplexer IBM i Umgebungen macht.
Was du damit machen kannst
- 1Legacy-Quellcode inspizierenDu kannst eine KI bitten, die Logik innerhalb spezifischer RPG- oder COBOL-Member zu erklären.
- 2Kompilierungsfehler debuggenDer Assistent kann ein Programm kompilieren und anschließend die resultierenden Spool-Files lesen, um Fehler zu diagnostizieren.
- 3System-Metadaten abfragenEntwickler können spezifische Spalten oder Tabellenstrukturen mithilfe von Read-only-SQL-Befehlen finden.
Geschrieben aus dem README des Projekts. Jeder Use Case wurde gegen ein Zitat daraus geprüft.
python-mcp-as400 MCP tools 5
Erkannt aus dem READMEexecute_sqlexecute_cl_commandread_source_membercompile_programread_spoolfile
| execute_sql | — | |
| execute_cl_command | — | |
| read_source_member | — | |
| compile_program | — | |
| read_spoolfile | — |
Konfiguration
DB_HOSTDB_PASSDB_USER
| Name | Beschreibung | Typ |
|---|---|---|
| DB_HOST | — | |
| DB_PASS | — | |
| DB_USER | — |
Automatisierte Checks
Geluften am 14. Nov. 2026Vollständiger Bericht →Noch nicht verifiziert. Ein Server benötigt einen Score von 80, keine kritischen Befunde und genug Daten für unsere Prüfung. Wie die Checks funktionieren
- Source Repository verknüpft und erreichbarlorentefacundo/python-mcp-as400 is public and reachablegithub.com/lorentefacundo/python-mcp-as400 ↗Bestanden
- Paket nennt dieses Repository als QuelleNicht geprüft
- Build-Herkunft (Sigstore-Attestierung)Nicht geprüft
- Open Source Lizenz (OSI)MITspdx.org/licenses/MIT.html ↗Bestanden
- Commit oder Release im letzten JahrLast commit or release 2026-10-24github.com/lorentefacundo/python-mcp-as400 ↗Bestanden
- OpenSSF ScorecardNicht geprüft
- Package-Name ähnelt keinem populären PackageNicht geprüft
- Kein kritischer Hinweis im Paket oder seinen AbhängigkeitenNicht geprüft
- Keine versteckten Anweisungen an das Modell5 tool descriptions and the README read; no override phrases, credential paths or hidden charactersBestanden
- Destruktive Tools sind markiertNicht geprüft
- Remote-Endpoint beantwortet den MCP-HandshakeNicht geprüft
README
Auf GitHub ansehenAS/400 MCP Server
English · Español
An MCP server that lets AI assistants (Claude, Cursor, any MCP client) work with IBM i (AS/400) systems: query Db2 for i, read RPG/COBOL/CL source, compile programs and read spooled files. Every input goes through strict validation, so the assistant can analyze everything without being able to break anything.
Why I built it
A lot of critical business logic still runs on IBM i, and the people who know it are few and busy. Understanding the impact of a change means reading thousands of tables and programs by hand. I wanted an AI assistant to do that reading for me, but connecting an LLM to a production system is only acceptable if it cannot change data or objects. This server is that bridge.
Results
I presented it at BDT Global, where it was approved as a billable initiative and piloted with a client:
| Manual | With the MCP server | |
|---|---|---|
| Task estimated by a senior developer | 5 days | 3 hours (13x) |
| Impact analysis across 6,000+ tables | 6 hours | 20 minutes (18x), and it found 2 tables missed by hand |
Tools
| Tool | What it does | Example |
|---|---|---|
execute_sql |
Read-only SQL (SELECT, WITH, VALUES) |
SELECT * FROM QSYS2.SYSTABLES FETCH FIRST 5 ROWS ONLY |
execute_cl_command |
Allow-listed CL commands | DSPFD FILE(MYLIB/MYFILE) OUTPUT(*OUTFILE) OUTFILE(QTEMP/FDA) |
read_source_member |
Reads a source member | biblioteca='MYLIB', archivo_fuente='QRPGLESRC', miembro='MYPGM' |
compile_program |
Compiles RPG, CL, COBOL or C | library='DEVLIB', source_file='QRPGLESRC', member='MYPGM' |
read_spoolfile |
Lists or reads spooled files (compile listings, job logs) | program_name='MYPGM' |
Security model
The philosophy: analysis and compilation yes, destruction never. Validation lives in validation.py, has no dependencies, and is covered by 72 tests that run in CI on every push.
Read-only SQL
- Only
SELECT,WITHandVALUES; no;, so no statement stacking. - Blocks data-change table references hidden inside a
SELECT(SELECT * FROM FINAL TABLE (DELETE ...)). - Blocks Db2 for i functions with side effects:
QCMDEXC(runs any CL command),HTTP_*/HTTP*CLOB(data exfiltration),IFS_WRITE*,END_JOBand others. - Ignores string literals and quoted identifiers when checking keywords, so
WHERE MSG = 'DELETE'or aLAST_UPDATEcolumn still work. - Adds
FETCH FIRST 1000 ROWS ONLYwhen there is no limit.
CL commands: strict allow list
- Allowed:
DSP*,WRK*,CHKOBJ, compilation (CRTBNDRPG,CRTSQLRPGI,CRTBNDCBL, ...), library list and overrides. - Everything else is rejected:
DLTOBJ,DLTLIB,CLRPFM,RUNSQLSTM,SBMJOB,CALL,GRTOBJAUT, ... - Qualified commands (
QSYS/DLTLIB) are rejected. OUTFILE(...)must point toQTEMP, soDSP*commands cannot create or replace files in real libraries.
Everything else
- Library, file, member, user and spooled-file names are validated against the IBM i naming rules before they reach any SQL.
- Error messages never include credentials or connection strings.
Defense in depth. These checks reduce risk, they don't replace IBM i security. Connect with a user profile that only has the authorities it needs (ideally
*USEon the data and a development library for compiles).
Found by the tests
Writing the test suite (v1.1) exposed real gaps in v1.0, now fixed:
read_spoolfileconcatenateduserandspoolfile_nameinto SQL. Combined withQSYS2.QCMDEXC, that allowed running any CL command.execute_sqlacceptedVALUES QSYS2.QCMDEXC(...),FINAL TABLE (DELETE ...)andHTTP_POST(...).DSP*commands could write theirOUTFILEto any library.
Getting started
Requirements: Python 3.10+, the IBM i Access ODBC Driver, and a user on an IBM i system.
git clone https://github.com/LorenteFacundo/python-mcp-as400.git
cd python-mcp-as400
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -e .
cp .env.example .env # then fill in DB_HOST, DB_USER, DB_PASS
The server talks MCP over stdio. Add it to your client, for example Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"as400": {
"command": "python",
"args": ["/path/to/python-mcp-as400/server.py"],
"env": {
"DB_HOST": "your-ibmi-host.com",
"DB_USER": "YOUR_USER",
"DB_PASS": "YOUR_PASSWORD"
}
}
}
}
Or with Claude Code: claude mcp add as400 -- python /path/to/python-mcp-as400/server.py
Example prompts
- "Which tables in MYLIB have a column called CUSTNO?" →
execute_sqloverQSYS2.SYSCOLUMNS - "Which programs use the file CUSTOMERS?" →
DSPPGMREF ... OUTFILE(QTEMP/REFS)+execute_sql - "Explain what CALCPRICE does" →
read_source_member - "Compile CALCPRICE and tell me what failed" →
compile_program+read_spoolfile
Development
pip install -e ".[dev]"
pytest
| File | Purpose |
|---|---|
server.py |
MCP tools and the ODBC connection |
validation.py |
Security checks (no dependencies) |
tests/ |
Tests for every check, including real attack strings |
License
python-mcp-as400 MCP Fragen
Welche Tools bietet python-mcp-as400 MCP?
Er stellt 5 Tools bereit, darunter execute_sql, execute_cl_command, read_source_member, compile_program, read_spoolfile.
Kann der KI-Assistent Daten in meinem IBM i System ändern?
Nein, der Server ist nur für die Analyse und Kompilierung ausgelegt. Er verwendet Read-only-SQL und eine strikte Allow-list für CL-Befehle, um eine Datenlöschung zu verhindern.