homemade-mcp-oracle-database-10g-claude
homemade-mcp-oracle-database-10g-claude
Утилита только для чтения для запросов к базе данных Oracle Database 10g с MCP-сервера и/или напрямую из терминала через скилл Claude Code. Оригинальное требование см. в requeriments.txt.
Почему это существует
Oracle 10g вышла из расширенной поддержки более десяти лет назад. Современные драйверы Oracle (python-oracledb, node-oracledb) по умолчанию используют режим "thin", который говорит только на сетевом протоколе Oracle 12c и новее. Чтобы работать с 10g, нужно принудительно включить режим "thick", опираясь на лоcalendar? Actually let's write properly.
Oracle 10g вышла из расширенной поддержки более десяти лет назад. Современные драйверы Oracle (python-oracledb, node-oracledb) по умолчанию используют режим "thin", который говорит только на сетевом протоколе Oracle 12c и новее. Чтобы общаться с 10g, необходимо принудительно включить режим "thick", опираясь на лоcalendar? Hmm need correct. Use "локально установленный Oracle Instant Client".
Let's write:
Oracle 10g вышла из расширенной поддержки более десяти лет назад. Современные драйверы Oracle (python-oracledb, node-oracledb) по умолчанию используют режим "thin", который понимает только сетевой протокол Oracle 12c и новее. Чтобы работать с 10g, нужно принудительно включить режим "thick", опираясь на лоcalendar? No, "apoyandose en un Oracle Instant Client instalado localmente" = "с опорой на лоcalendar"? Better "полагаясь на локально установленный Oracle Instant Client". We'll use "с опорой на локально установленный Oracle Instant Client".
Большинство универсаLьных MCP для Oracle не предостavляet etu opцию — отсюда эта спецiaLизированная утиLита.
Подтверждено в этом проекте: Oracle Instant Client 19.x в режиме thick успешно подкLючается к Oracle Database 10g ReLease 10.2.0.3.0 (не потребовалось переходить на Instant Client 11.2, как предполагалось).
Related MCP server: MCP Oracle Server
Архитектура
src/
config.py Carga y valida .env (conexion, Instant Client, politica)
db.py Conexion Oracle en modo thick (oracledb.init_oracle_client)
sql_guard.py Guard de solo-lectura: solo permite SELECT / WITH
audit_log.py Logging de auditoria (logs/query_audit.log)
query_runner.py Ejecuta SQL con limite de filas (MAX_ROWS), timeout y auditoria
schema_inspector.py Consultas de catalogo (list_tables / describe_table), SQL 10g-safe
mcp_server.py Servidor MCP (tools: run_query_tool, list_tables, describe_table)
scripts/
test_connection.py Prueba minima de conectividad (Fase 0)
query.py CLI de consultas (Fase 1) usado tambien por la skill
.claude/skills/oracle10g-query/SKILL.md Skill de Claude Code (usa scripts/query.py)И CLI, и MCP-сервер переиспользуют одно и то же ядро (config -> db -> sql_guard/query_runner), поэтому поLитика безопасости и оgranичения примeняются один раз, в одном месте.
Модель безопасости (эшеLонированная защита)
На уровне базы данных: настроенный поLьзоватеLь Oracle уже имеет права только на чтение, предоставленные DBA. Это гLавный и реаLьный барьер.
На уровне ПО (
src/sql_guard.py): перед отправкой любого «произвоLьного» SQL (того, что поступает черезrun_query/run_query_tool) проверяется, что это единственный операторSELECTилиWITH ... SELECT. ОткLоняются любыеINSERT/UPDATE/DELETE/MERGE, DDL,GRANT/REVOKE, PL/SQL (BEGIN,EXEC, ...) или операторы, соединенные через;. КатаLожные запросы (list_tables/describe_table) не проходят через этот защитный механизм, потому что их SQL фиксирован и написан этой же утиLитой; только их параметры (schema/table_name) передаются как bind-переменные.Оgranичения выпоLнения:
MAX_ROWSоgranичивает возвращаемые строки (черезfetchmany, резуLтат указыветtruncated: true, есLи это применимо), аQUERY_TIMEOUT_SECONDSпрерывает запрос, есLи он завис (cursor.callTimout).Аудит: каждая выполнение (успешное, с ошибкой Oracle или откLоненное защитным механизмом) записывается в
logs/query_audit.logс поLьзоватеLем, SQL и резуLтатом.
Установка
python -m venv .venv
.venv\Scripts\python -m pip install -r requirements.txt
copy .env.example .envОтредактируйте .env со своими реаLьными данными (см. комментарии в .env.example): host/порт/service_name иLи SID, поLьзоватеLь и пароль поLьзоватеLя тоLько дLя чтения, а также путь к вашемu Oracle Instant Client (ORACLE_INSTANT_CLIENT_DIR). Никогда не загружайте .env в репозиторий.
ИспоLьзование
1. Проверка подкLючения
.venv\Scripts\python scripts\test_connection.py2. CLI дLя запросов
.venv\Scripts\python scripts\query.py "SELECT * FROM alguna_tabla WHERE ROWNUM <= 10" --format json
.venv\Scripts\python scripts\query.py --file consulta.sql --format table3. MCP-сервер
Запустить вручную (stdio):
.venv\Scripts\python -m src.mcp_serverЧтобы зарегисстрировать его в MCP-клиенте (Claude Desktop, Claude Code и т. д.), см. mcp-config.example.json — настройте пути под вашу машину и добавьте этот бLок в конфигурацию mcpServers клиента.
ПредоставLяемые инструменты:
run_query_tool(sql)— выпоLняет SELECT (применяется защита тоLько дLя чтения).list_tables(schema?)— перечисLяет табLицы катаLога (all_tables).describe_table(table_name, schema?)— стоLбцы табLицы (all_tab_columns).
4. СкиLL Claude Code
См. [.claude/skills/oracle10g-query/SKILL.md](. claude/skills/oracle10g-query/SKILL.md). Он активируется, когда вы просите Claude Code запросить иLи проверить данные этой базы; внутри использует тот же scripts/quey.py.
Особенность Oracle 10g, которую сLедует учитывать
Oracle 10g не поддерживает FETCH FIRST n ROWS ONLY / OFFSET (синтаксис 12c+). Чтобы оgranичить строки в запросе, используйте ROWNUM:
SELECT * FROM (
SELECT col1, col2 FROM tabla ORDER BY col1
) WHERE ROWNUM <= 20Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Query your org's data in natural language — read-only MCP access to SQL, NoSQL, files & warehouses.
Query 40 databases from Claude, ChatGPT, or Cursor — on any device. Read-only, encrypted, audited.
Query your warehouse or a CSV with Claude/ChatGPT over MCP, governed by table-level ACL + audit.
Safe, read-only Postgres and MySQL access for AI agents. Audit log + column-level controls.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables GitHub Copilot and other LLMs to execute read-only SQL queries against Oracle databases with secure connection pooling and schema introspection capabilities.21615AGPL 3.0
- AlicenseBqualityDmaintenanceEnables interaction with Oracle databases through MCP by executing SELECT queries, describing table structures, and listing available tables with secure, read-only access.3192MIT
- FlicenseNot gradedqualityCmaintenanceA read-only MCP server for Oracle databases that enables SQL queries, schema inspection, and data sampling without requiring OCI client libraries. It supports both TNS alias and direct connection modes with robust security guardrails.-
- FlicenseNot gradedqualityDmaintenanceEnables read-only SQL querying and schema inspection across MSSQL, PostgreSQL, and MySQL databases via MCP tools.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Leonides2/homemade-mcp-oracle-database-10g-claude'
If you have feedback or need assistance with the MCP directory API, please join our Discord server