Serveur MCP python-mcp-as400
Commit 24 oct. 2026Connecte les assistants IA aux systèmes IBM i (AS/400) pour interroger Db2, lire le code source, compiler des programmes et analyser les fichiers spooled en toute sécurité.
Aussi connu sous LorenteFacundo/python-mcp-as400
- Étoiles
- 2
- Outils
- 5
- Téléchargements, 30 jours
- —
- Dernière version
- —
- Dernier commit
- 24 oct. 2026
- Licence
- MIT
Qu'est-ce que python-mcp-as400 MCP ?
python-mcp-as400 est un serveur MCP. Connecte les assistants IA aux systèmes IBM i (AS/400) pour interroger Db2, lire le code source, compiler des programmes et analyser les fichiers spooled en toute sécurité. Il expose 5 outils, comme execute_sql, execute_cl_command, read_source_member.
Résumé généré à partir du README du projet
À propos du MCP server python-mcp-as400
Ce MCP server permet de connecter les assistants IA aux systèmes IBM i pour une analyse et un développement sécurisés. Il permet aux développeurs d'utiliser des clients comme Claude ou Cursor pour interagir avec Db2 for i, lire du code source RPG, COBOL ou CL, et gérer les tâches de compilation. En comblant le fossé entre les grands modèles de langage et la logique métier héritée, il aide les équipes à effectuer des analyses d'impact sur des milliers de tables bien plus rapidement qu'une inspection manuelle.
Le serveur fonctionne localement via stdio et nécessite Python 3.10+, le pilote IBM i Access ODBC, ainsi que des identifiants de base de données valides fournis via des variables d'environnement. Il est conçu avec un modèle de sécurité strict qui privilégie l'analyse plutôt que la destruction. Il utilise une couche de validation pour garantir que les requêtes SQL restent en lecture seule et que les commandes CL sont limitées à une liste d'autorisation spécifique, empêchant toute modification accidentelle de données ou suppression d'objets.
Les développeurs peuvent utiliser des outils spécifiques comme execute_sql pour interroger les tables système, read_source_member pour inspecter le code, et compile_program pour compiler des programmes RPG ou C. Il inclut également read_spoolfile pour examiner les journaux de travaux et les listes de compilation, ce qui en fait un outil complet pour la maintenance et la compréhension d'environnements IBM i complexes.
Ce que vous pouvez faire avec
- 1Inspecter le code source héritéVous pouvez demander à une IA d'expliquer la logique contenue dans des membres RPG ou COBOL spécifiques.
- 2Déboguer des erreurs de compilationL'assistant peut compiler un programme puis lire les fichiers spooled résultants pour diagnostiquer les échecs.
- 3Interroger les métadonnées du systèmeLes développeurs peuvent trouver des colonnes spécifiques ou des structures de tables en utilisant des commandes SQL en lecture seule.
Extrait du README du projet. Chaque cas d'utilisation est vérifié par rapport à une citation du document.
Outils MCP python-mcp-as400 5
Détectés depuis le READMEexecute_sqlexecute_cl_commandread_source_membercompile_programread_spoolfile
| execute_sql | — | |
| execute_cl_command | — | |
| read_source_member | — | |
| compile_program | — | |
| read_spoolfile | — |
Configuration
DB_HOSTDB_PASSDB_USER
| Nom | Description | Type |
|---|---|---|
| DB_HOST | — | |
| DB_PASS | — | |
| DB_USER | — |
Vérifications automatisées
Exécuté le 14 nov. 2026Rapport complet →Pas encore vérifié. Un serveur nécessite un score de 80, aucune faille sérieuse et suffisamment de données pour que nous puissions effectuer les vérifications. Fonctionnement des vérifications
- Dépôt source lié et accessiblelorentefacundo/python-mcp-as400 is public and reachablegithub.com/lorentefacundo/python-mcp-as400 ↗Réussi
- Le paquet cite ce dépôt comme sourceNon vérifié
- Provenance du build (attestation Sigstore)Non vérifié
- Licence open source (OSI)MITspdx.org/licenses/MIT.html ↗Réussi
- Commit ou version publiée au cours de l'année écouléeLast commit or release 2026-10-24github.com/lorentefacundo/python-mcp-as400 ↗Réussi
- OpenSSF ScorecardNon vérifié
- Nom du package non proche d'un package populaireNon vérifié
- Aucun avis critique dans le paquet ni ses dépendancesNon vérifié
- Aucune instruction cachée destinée au modèle5 tool descriptions and the README read; no override phrases, credential paths or hidden charactersRéussi
- Les outils destructifs sont étiquetésNon vérifié
- L'endpoint distant répond au handshake MCPNon vérifié
README
Voir sur GitHubAS/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
Questions sur python-mcp-as400 MCP
Quels outils python-mcp-as400 MCP fournit-il ?
Il expose 5 outils, dont execute_sql, execute_cl_command, read_source_member, compile_program, read_spoolfile.
L'assistant IA peut-il modifier des données dans mon système IBM i ?
Non, le serveur est conçu uniquement pour l'analyse et la compilation. Il utilise du SQL en lecture seule et une liste d'autorisation stricte pour les commandes CL afin d'empêcher toute destruction de données.