python-mcp-as400 MCP sunucusu
Commit 24 Eki 2026Yapay zeka asistanlarını Db2 sorgulama, kaynak kodu okuma, program derleme ve spooled dosyaları güvenli bir şekilde analiz etme amacıyla IBM i (AS/400) sistemlerine bağlar.
Ayrıca bilinen adı LorenteFacundo/python-mcp-as400
- Yıldızlar
- 2
- Araçlar
- 5
- İndirmeler, 30 gün
- —
- En son sürüm
- —
- Son commit
- 24 Eki 2026
- Lisans
- MIT
python-mcp-as400 MCP nedir?
python-mcp-as400 bir MCP sunucusudur. Yapay zeka asistanlarını Db2 sorgulama, kaynak kodu okuma, program derleme ve spooled dosyaları güvenli bir şekilde analiz etme amacıyla IBM i (AS/400) sistemlerine bağlar. 5 araç sunar; örneğin execute_sql, execute_cl_command, read_source_member.
Özet, projenin README dosyasından oluşturuldu
python-mcp-as400 MCP sunucusu hakkında
Bu MCP server, güvenli analiz ve geliştirme süreçleri için yapay zeka asistanlarını IBM i sistemlerine bağlamanızı sağlar. Geliştiricilerin Claude veya Cursor gibi istemcileri kullanarak Db2 for i ile etkileşime girmesine, RPG, COBOL veya CL kaynak kodlarını okumasına ve derleme görevlerini yönetmesine olanak tanır. Büyük dil modelleri ile eski nesil iş mantığı arasındaki boşluğu doldurarak, ekiplerin binlerce tablo üzerinde etki analizini manuel incelemeye göre çok daha hızlı yapmasına yardımcı olur.
Sunucu, stdio üzerinden yerel olarak çalışır; Python 3.10+, IBM i Access ODBC Driver ve ortam değişkenleri aracılığıyla sağlanan geçerli veritabanı kimlik bilgilerine ihtiyaç duyar. Veri kaybı yerine analizi önceliklendiren katı bir güvenlik modeliyle tasarlanmıştır. SQL sorgularının salt okunur kalmasını ve CL komutlarının belirli bir izin listesiyle sınırlandırılmasını sağlayarak, yanlışlıkla veri değişikliği veya nesne silinmesini önleyen bir doğrulama katmanı kullanır.
Geliştiriciler, sistem tablolarını sorgulamak için execute_sql, kodları incelemek için read_source_member ve RPG veya C programlarını derlemek için compile_program gibi özel araçları kullanabilirler. Ayrıca, iş günlüklerini ve derleme listelerini incelemek için read_spoolfile özelliğini de içerir; bu da onu karmaşık IBM i ortamlarını sürdürmek ve anlamak için kapsamlı bir araç haline getirir.
Neler yapabilirsiniz
- 1Eski nesil kaynak kodlarını incelemeBelirli RPG veya COBOL üyeleri içindeki mantığı açıklamasını bir yapay zekadan isteyebilirsiniz.
- 2Derleme hatalarını ayıklamaAsistan bir programı derleyebilir ve ardından hataları teşhis etmek için ortaya çıkan spool dosyalarını okuyabilir.
- 3Sistem meta verilerini sorgulamaGeliştiriciler, salt okunur SQL komutlarını kullanarak belirli sütunları veya tablo yapılarını bulabilirler.
Projenin README dosyasından alınmıştır. Her kullanım durumu, oradaki bir alıntı ile kontrol edilir.
python-mcp-as400 MCP araçları 5
README dosyasından algılandıexecute_sqlexecute_cl_commandread_source_membercompile_programread_spoolfile
| execute_sql | — | |
| execute_cl_command | — | |
| read_source_member | — | |
| compile_program | — | |
| read_spoolfile | — |
Yapılandırma
DB_HOSTDB_PASSDB_USER
| Ad | Açıklama | Sunucu |
|---|---|---|
| DB_HOST | — | |
| DB_PASS | — | |
| DB_USER | — |
Otomatik kontroller
Çalıştırıldı 14 Kas 2026Tam rapor →Henüz doğrulanmadı. Bir sunucunun 80 puana, ciddi bir bulgu olmamasına ve kontrol edebilmemiz için yeterli veriye ihtiyacı vardır. Kontroller nasıl çalışır
- Kaynak deposu bağlantılı ve erişilebilirlorentefacundo/python-mcp-as400 is public and reachablegithub.com/lorentefacundo/python-mcp-as400 ↗Geçti
- Paket bu depoyu kaynak olarak gösteriyorKontrol edilmedi
- Derleme kaynağı (Sigstore onayı)Kontrol edilmedi
- Açık kaynak lisansı (OSI)MITspdx.org/licenses/MIT.html ↗Geçti
- Son bir yıl içinde commit veya sürüm mevcutLast commit or release 2026-10-24github.com/lorentefacundo/python-mcp-as400 ↗Geçti
- OpenSSF ScorecardKontrol edilmedi
- Paket adı popüler bir pakete yakın değilKontrol edilmedi
- Pakette ve bağımlılıklarında kritik uyarı yokKontrol edilmedi
- Modele yönelik gizli talimat yok5 tool descriptions and the README read; no override phrases, credential paths or hidden charactersGeçti
- Yıkıcı araçlar etiketlenmişKontrol edilmedi
- Uzak endpoint MCP el sıkışmasına yanıt veriyorKontrol edilmedi
AS/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 soruları
python-mcp-as400 MCP hangi araçları sunar?
5 araç sunar; bunlar arasında execute_sql, execute_cl_command, read_source_member, compile_program, read_spoolfile yer alır.
Yapay zeka asistanı IBM i sistemimdeki verileri değiştirebilir mi?
Hayır, sunucu yalnızca analiz ve derleme işlemleri için tasarlanmıştır. Veri kaybını önlemek amacıyla salt okunur SQL ve CL komutları için katı bir izin listesi kullanır.