使用说明
MCP Oracle
用于Oracle数据库的MCP(模型上下文协议)服务器 Bun+TypeScript公开了7个工具,用于从Claude Code或任何兼容MCP的客户端查询和探索Oracle模式。
需求
- 包子 >= 1.3
- Oracle即时客户端 21+(建议23.0)
- Node.js>=18(内部要求
oracledb本地司机)
安装
git clone https://github.com/oxk4rt/mcp-oracle
cd mcp-oracle
bun install
配置
1.projects.json
定义项目、环境和连接参数。 切勿在此处包含凭据 --此文件已提交到Git。
{
"env_aliases": {
"integracion": ["dsv", "dev", "desarrollo", "local"],
"preproduccion": ["pre", "preprod"],
"produccion": ["pro", "prod"]
},
"projects": [
{
"code": "TEST_LOCAL",
"aliases": ["TEST", "test"],
"default_env": "integracion",
"default_schema": "OSCAR",
"environments": {
"integracion": {
"host": "localhost",
"port": 1521,
"service": "FREEPDB1"
},
"preproduccion": {
"host": "host-pre.example.com",
"port": 1521,
"service": "service_pre"
},
"produccion": {
"host": "host-pro.example.com",
"port": 1521,
"service": "service_pro"
}
}
},
{
"code": "TEST2_LOCAL",
"aliases": ["TEST2", "test2"],
"default_env": "integracion",
"default_schema": "OSCAR2",
"environments": {
"integracion": {
"host": "localhost",
"port": 1521,
"service": "FREEPDB1"
},
"preproduccion": {
"host": "host-pre2.example.com",
"port": 1521,
"service": "service2_pre"
},
"produccion": {
"host": "host-pro2.example.com",
"port": 1521,
"service": "service2_pro"
}
}
}
]
}
关键概念:
env_aliases--规范环境名称全局图→ 接受别名。为所有项目定义一次。default_env--未指定时使用的环境(始终integracion).default_schema--没有时默认查询Oracle架构schema参数被传递给工具。- 添加新项目=在
projectsMCP注册中的array+凭据。
2.MCP注册
通过Claude Code CLI注册服务器。凭据遵循以下模式 CODE__ENTORNO__USER/PASS (双下划线分隔符)。一次注册即可处理 所有项目和环境.
claude mcp add \
-e MCP_ORACLE_PROJECTS_PATH='C:\path\to\mcp-oracle\projects.json' \
-e ORACLE_CLIENT_PATH='C:\path\to\instantclient_23_0' \
-e TEST_LOCAL__INTEGRACION__USER=usuario \
-e TEST_LOCAL__INTEGRACION__PASS=password \
-e TEST_LOCAL__PREPRODUCCION__USER=usuario \
-e TEST_LOCAL__PREPRODUCCION__PASS=password \
-e TEST_LOCAL__PRODUCCION__USER=usuario \
-e TEST_LOCAL__PRODUCCION__PASS=password \
-e TEST2_LOCAL__INTEGRACION__USER=usuario \
-e TEST2_LOCAL__INTEGRACION__PASS=password \
--scope user \
-- oracle bun run 'C:\path\to\mcp-oracle\index.ts'
解析器会自动扫描所有与匹配的环境变量 CODE__ENTORNO__USER/PASS 模式并将其映射到中定义的相应项目和环境 projects.json.
如果您通过以下方式管理Claude MCP服务器 ~/.claude.json,等效块看起来像这样:
{
"oracle": {
"type": "stdio",
"command": "bun",
"args": [
"run",
"C:\\path\\to\\mcp-oracle\\index.ts"
],
"env": {
"MCP_ORACLE_PROJECTS_PATH": "C:\\path\\to\\mcp-oracle\\projects.json",
"ORACLE_CLIENT_PATH": "C:\\path\\to\\instantclient_23_0",
"TEST_LOCAL__INTEGRACION__USER": "usuario",
"TEST_LOCAL__INTEGRACION__PASS": "password",
"TEST_LOCAL__PREPRODUCCION__USER": "usuario",
"TEST_LOCAL__PREPRODUCCION__PASS": "password"
}
}
}
这个确切的本地示例与下面记录的Docker Oracle Free设置相匹配。对于非本地环境,保持相同的形状,但相应地替换凭据和连接设置。
工具
| 工具 | 说明 |
|---|---|
list_projects |
列出已配置的项目和环境。没有暴露凭据。 |
list_schemas |
列出可用的Oracle架构/所有者。 |
list_tables |
列出架构中的表(默认为 default_schema). |
describe_table |
显示表的列、类型、PK和FK约束。 |
execute_query |
执行SELECT或CTE(WITH)查询。插入/更新/删除/DDL被拒绝。 |
get_relations |
表或整个模式的PK/FK映射,通过 ALL_CONSTRAINTS. |
get_join_path |
FK图BFS遍历以查找两个表之间的JOIN路径。 |
自然语言示例
List the tables in project TEST
Describe the PEDIDOS table in TEST
Show me the tables in TEST preproduccion
Show relations in the TEST schema
What's the join path between CLIENTES and PRODUCTOS in TEST?
Run: SELECT COUNT(*) FROM PEDIDOS WHERE ESTADO = 'PENDIENTE' in TEST dev
使用Docker Oracle Free进行本地开发
docker run -d \
--name oracle-free \
-p 1521:1521 \
-e ORACLE_PASSWORD=password \
container-registry.oracle.com/database/free:latest
projects.json 本地容器的连接:
{
"code": "TEST_LOCAL",
"aliases": ["TEST", "test"],
"default_env": "integracion",
"default_schema": "MY_SCHEMA",
"environments": {
"integracion": {
"host": "localhost",
"port": 1521,
"service": "FREEPDB1"
}
}
}
许可证
麻省理工学院——见 许可证.