Oracle Forms — MCP-сервер для Claude Code: разбор .fmb и .pll
Отдаёт содержимое модулей Oracle Forms — блоки, триггеры, PL/SQL — ассистенту, чтобы читать логику без Forms Builder.
claude mcp add --env OFMCP_CONVERTED_DIR=<OFMCP_CONVERTED_DIR> --env OFMCP_CONVERT_COMMAND=<OFMCP_CONVERT_COMMAND> --env OFMCP_COMPILE_COMMAND=<OFMCP_COMPILE_COMMAND> --transport stdio oracle-forms -- docker run -i --rm -e OFMCP_CONVERTED_DIR -e OFMCP_CONVERT_COMMAND -e OFMCP_COMPILE_COMMAND ghcr.io/aoreshkov/oracle-forms-mcp:0.15.0Что делает Oracle Forms
Сервер сканирует каталог с модулями .fmb, .mmb, .pll и .olb и превращает их в структурированный индекс. Дальше ассистент перечисляет блоки, элементы, триггеры и программные единицы, вытаскивает тела PL/SQL и режет исходный XML по диапазонам строк. Формы Builder для этого не нужны.
Конвертация идёт двумя путями. Если задан ORACLE_HOME, бинарники обрабатываются утилитами из %ORACLE_HOME%\bin: frmf2xml для форм, меню и объектных библиотек, frmcmp_batch с Module_Type=LIBRARY Script=YES для .pll. Без ORACLE_HOME рядом с модулями должны лежать уже сконвертированные файлы вроде orders_fmb.xml или utils.pld — иначе индексировать нечего. Это первое, что стоит проверить перед запуском.
Кэш опирается на отпечаток файла: размер, время изменения и sha256. Правка модуля помечает его как STALE, и инструменты чтения просят перечитать. Заметки и перекрёстные ссылки на отдельные элементы хранятся в отдельном хранилище, поэтому переживают повторную индексацию; аннотация, сделанная до изменения исходника, помечается, но не теряется.
Какие задачи решает
- разобрать логику старого
.fmbбез Forms Builder - вытащить тело триггера в контекст модели
- найти все вызовы процедуры по исходникам модулей
- задокументировать блоки и программные единицы формы
- сохранить заметки об элементах между сессиями
Примеры запросов агенту
- Что делает
ORDERS.fmb? Покажи обзор модуля. - Покажи логику валидации в блоке ORDERS — нужен триггер WHEN-VALIDATE-ITEM.
- Где ещё вызывается процедура CALC_TOTAL? Поищи по PL/SQL.
Как установить Oracle Forms
Командой платформы
claude mcp add --env OFMCP_CONVERTED_DIR=<OFMCP_CONVERTED_DIR> --env OFMCP_CONVERT_COMMAND=<OFMCP_CONVERT_COMMAND> --env OFMCP_COMPILE_COMMAND=<OFMCP_COMPILE_COMMAND> --transport stdio oracle-forms -- docker run -i --rm -e OFMCP_CONVERTED_DIR -e OFMCP_CONVERT_COMMAND -e OFMCP_COMPILE_COMMAND ghcr.io/aoreshkov/oracle-forms-mcp:0.15.0Вместо <…> подставьте свои значения
Командой платформы
codex mcp add oracle-forms --env OFMCP_CONVERTED_DIR=<OFMCP_CONVERTED_DIR> --env OFMCP_CONVERT_COMMAND=<OFMCP_CONVERT_COMMAND> --env OFMCP_COMPILE_COMMAND=<OFMCP_COMPILE_COMMAND> -- docker run -i --rm -e OFMCP_CONVERTED_DIR -e OFMCP_CONVERT_COMMAND -e OFMCP_COMPILE_COMMAND ghcr.io/aoreshkov/oracle-forms-mcp:0.15.0Вместо <…> подставьте свои значения
Файл настроек
{
"mcpServers": {
"oracle-forms": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"OFMCP_CONVERTED_DIR",
"-e",
"OFMCP_CONVERT_COMMAND",
"-e",
"OFMCP_COMPILE_COMMAND",
"ghcr.io/aoreshkov/oracle-forms-mcp:0.15.0"
],
"env": {
"OFMCP_CONVERTED_DIR": "<OFMCP_CONVERTED_DIR>",
"OFMCP_CONVERT_COMMAND": "<OFMCP_CONVERT_COMMAND>",
"OFMCP_COMPILE_COMMAND": "<OFMCP_COMPILE_COMMAND>"
}
}
}
}Вместо <…> подставьте свои значения
Файл настроек
{
"servers": {
"oracle-forms": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"OFMCP_CONVERTED_DIR",
"-e",
"OFMCP_CONVERT_COMMAND",
"-e",
"OFMCP_COMPILE_COMMAND",
"ghcr.io/aoreshkov/oracle-forms-mcp:0.15.0"
],
"env": {
"OFMCP_CONVERTED_DIR": "<OFMCP_CONVERTED_DIR>",
"OFMCP_CONVERT_COMMAND": "<OFMCP_CONVERT_COMMAND>",
"OFMCP_COMPILE_COMMAND": "<OFMCP_COMPILE_COMMAND>"
}
}
}
}Вместо <…> подставьте свои значения
Командой платформы
gemini mcp add -e OFMCP_CONVERTED_DIR=<OFMCP_CONVERTED_DIR> -e OFMCP_CONVERT_COMMAND=<OFMCP_CONVERT_COMMAND> -e OFMCP_COMPILE_COMMAND=<OFMCP_COMPILE_COMMAND> oracle-forms docker run -i --rm -e OFMCP_CONVERTED_DIR -e OFMCP_CONVERT_COMMAND -e OFMCP_COMPILE_COMMAND ghcr.io/aoreshkov/oracle-forms-mcp:0.15.0Вместо <…> подставьте свои значения
По шагам, с командами для каждой платформы: Как подключить MCP-сервер: Claude Code, Codex, Cursor, VS Code, Gemini CLI и другие
Вопросы о Oracle Forms
Как установить Oracle Forms в Claude Code?
Одной командой: `claude mcp add --env OFMCP_CONVERTED_DIR=<OFMCP_CONVERTED_DIR> --env OFMCP_CONVERT_COMMAND=<OFMCP_CONVERT_COMMAND> --env OFMCP_COMPILE_COMMAND=<OFMCP_COMPILE_COMMAND> --transport stdio oracle-forms -- docker run -i --rm -e OFMCP_CONVERTED_DIR -e OFMCP_CONVERT_COMMAND -e OFMCP_COMPILE_COMMAND ghcr.io/aoreshkov/oracle-forms-mcp:0.15.0`. Подставьте свои значения вместо плейсхолдеров.
Что делает Oracle Forms MCP?
Читает модули Oracle Forms из каталога и отдаёт их содержимое ассистенту: блоки, элементы, триггеры, программные единицы, LOV и группы записей. Плюс позволяет искать по исходникам и оставлять заметки на отдельные элементы.
Нужен ли установленный Oracle Forms для работы сервера?
Либо ORACLE_HOME с утилитами frmf2xml и frmcmp_batch, либо заранее сконвертированные файлы рядом с модулями. Без одного из двух сервер нечего будет индексировать.