MCP server python-mcp-as400
Коммит 24 окт. 2026 г.Подключает ИИ-ассистентов к системам IBM i (AS/400) для выполнения запросов к Db2, чтения исходного кода, компиляции программ и безопасного анализа spool-файлов.
Также известен как LorenteFacundo/python-mcp-as400
- Звёзды
- 2
- Инструменты
- 5
- Загрузки, 30 дней
- —
- Последняя версия
- —
- Последний коммит
- 24 окт. 2026 г.
- Лицензия
- MIT
Что такое python-mcp-as400 MCP?
python-mcp-as400 — это MCP server. Подключает ИИ-ассистентов к системам IBM i (AS/400) для выполнения запросов к Db2, чтения исходного кода, компиляции программ и безопасного анализа spool-файлов. Он предоставляет 5 инструментов, например execute_sql, execute_cl_command, read_source_member.
Сводка сгенерирована из README проекта
О python-mcp-as400 MCP server
Этот MCP server позволяет безопасно подключать ИИ-ассистентов к системам IBM i для анализа и разработки. Он дает разработчикам возможность использовать такие клиенты, как Claude или Cursor, для взаимодействия с Db2 for i, чтения исходного кода на RPG, COBOL или CL, а также управления задачами компиляции. Соединяя большие языковые модели с устаревшей бизнес-логикой, он помогает командам проводить анализ влияния на тысячи таблиц гораздо быстрее, чем при ручной проверке.
Сервер работает локально через stdio и требует Python 3.10+, IBM i Access ODBC Driver и действующие учетные данные базы данных, передаваемые через переменные окружения. В основе лежит строгая модель безопасности, где приоритет отдается анализу, а не изменениям. Используется уровень валидации, который гарантирует, что SQL-запросы остаются только для чтения, а CL-команды ограничены конкретным белым списком, что предотвращает случайное изменение данных или удаление объектов.
Разработчики могут использовать специальные инструменты, такие как execute_sql для запросов к системным таблицам, read_source_member для изучения кода и compile_program для сборки программ на RPG или C. Также предусмотрена функция read_spoolfile для изучения журналов заданий и листингов компиляции, что делает сервер комплексным инструментом для поддержки и понимания сложных сред IBM i.
Что вы можете с ним делать
- 1Анализ устаревшего исходного кодаВы можете попросить ИИ объяснить логику в конкретных участках кода RPG или COBOL.
- 2Отладка ошибок компиляцииАссистент может скомпилировать программу, а затем прочитать полученные spool-файлы для диагностики сбоев.
- 3Запросы к системным метаданнымРазработчики могут находить конкретные столбцы или структуры таблиц с помощью SQL-команд в режиме только для чтения.
Взято из README проекта. Каждый вариант использования проверен на соответствие цитате из него.
Инструменты python-mcp-as400 MCP 5
Определено из READMEexecute_sqlexecute_cl_commandread_source_membercompile_programread_spoolfile
| execute_sql | — | |
| execute_cl_command | — | |
| read_source_member | — | |
| compile_program | — | |
| read_spoolfile | — |
Конфигурация
DB_HOSTDB_PASSDB_USER
| Название | Описание | Тип |
|---|---|---|
| DB_HOST | — | |
| DB_PASS | — | |
| DB_USER | — |
Автоматические проверки
Запущено 14 нояб. 2026 г.Полный отчёт →Еще не проверено. Для сервера требуется оценка 80, отсутствие серьезных проблем и достаточно данных для нашей проверки. Как работают проверки
- Связанный и доступный исходный репозиторийlorentefacundo/python-mcp-as400 is public and reachablegithub.com/lorentefacundo/python-mcp-as400 ↗Пройдено
- Пакет указывает этот репозиторий как источникНе проверялось
- Происхождение сборки (аттестация Sigstore)Не проверялось
- Open source лицензия (OSI)MITspdx.org/licenses/MIT.html ↗Пройдено
- Коммит или релиз за последний годLast commit or release 2026-10-24github.com/lorentefacundo/python-mcp-as400 ↗Пройдено
- OpenSSF ScorecardНе проверялось
- Имя пакета не похоже на популярный пакетНе проверялось
- Нет критических уязвимостей в пакете и зависимостяхНе проверялось
- Нет скрытых инструкций для модели5 tool descriptions and the README read; no override phrases, credential paths or hidden charactersПройдено
- Деструктивные инструменты помеченыНе проверялось
- Удалённый endpoint отвечает на MCP handshakeНе проверялось
README
Открыть на 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
Вопросы о python-mcp-as400 MCP
Какие инструменты предоставляет python-mcp-as400 MCP?
Он предоставляет 5 инструментов, включая execute_sql, execute_cl_command, read_source_member, compile_program, read_spoolfile.
Может ли ИИ-ассистент изменять данные в моей системе IBM i?
Нет, сервер предназначен только для анализа и компиляции. Он использует SQL в режиме только для чтения и строгий белый список CL-команд, чтобы предотвратить уничтожение данных.