使用说明
Oracle MCP服务器
Oracle 19c数据库的模型上下文协议(MCP)服务器。该服务器使AI代理(如Claude)能够通过MCP与Oracle数据库交互,允许它们执行查询、检查模式和直接检索数据。
特性
- 执行SQL查询:运行SELECT查询并获取JSON格式的结果
- 架构检查:列出表、描述表结构和预览数据
- TNS别名支持:适用于您现有的Oracle TNS配置
- 连接池:高效的数据库连接管理
- 只读模式:可选安全模式,仅将操作限制为SELECT查询
- 安全配置:基于环境的凭证管理
先决条件
- Python 3.10或更高版本
- Oracle 19c数据库(或兼容版本)
- Oracle TNS配置(tnsnames.ora)或直接连接字符串
安装
PyPI(一旦发布)
pip install oracle-mcp
来源
# Clone the repository
git clone https://github.com/yourusername/oracle-mcp.git
cd oracle-mcp
# Install in development mode
pip install -e .
配置
1.设置环境变量
创建一个 .env 在项目目录中创建文件或设置环境变量:
# Required
ORACLE_USER=your_username
ORACLE_PASSWORD=your_password
ORACLE_DSN=your_tns_alias # e.g., FC1070 or hostname:1521/service_name
# Optional
ORACLE_POOL_MIN=2
ORACLE_POOL_MAX=10
QUERY_TIMEOUT=30
READ_ONLY_MODE=false
对于TNS别名(推荐):
如果您使用TNS别名(如SQL Developer中),请设置 ORACLE_DSN 您的TNS别名(例如。, FC1070).确保您的 tnsnames.ora 文件配置正确且可访问。
对于直接连接:
或者,使用直接连接字符串: hostname:1521/service_name
2.配置MCP客户端
您可以通过两种方式调用服务器:
python -m oracle_mcp(推荐)--可移植,只要Python在PATH上就可以工作。不依赖Scripts/MCP客户端正在解析目录。oracle-mcp--控制台脚本入口点。仅当PythonScripts/目录(例如。%APPDATA%\Python\Python3XX\Scripts在Windows上)位于PATH上,并且您的MCP客户端继承了该PATH。
如果 oracle-mcp 为您提供以下错误 oracle-mcp required by oracle-mcp is not found,使用 python -m oracle_mcp 相反,形式。
克劳德桌面版
编辑配置文件:
窗户: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"oracle": {
"command": "python",
"args": ["-m", "oracle_mcp"],
"env": {
"ORACLE_USER": "your_username",
"ORACLE_PASSWORD": "your_password",
"ORACLE_DSN": "FC1070"
}
}
}
}
GitHub副本(VS代码)
创建或编辑 .vscode/mcp.json 在您的工作区中(或添加到用户设置中):
{
"servers": {
"oracle": {
"type": "stdio",
"command": "python",
"args": ["-m", "oracle_mcp"],
"env": {
"ORACLE_USER": "your_username",
"ORACLE_PASSWORD": "your_password",
"ORACLE_DSN": "FC1070"
}
}
}
}
安全说明: 为了更好的安全性,使用环境变量而不是硬编码凭据:
{
"mcpServers": {
"oracle": {
"command": "python",
"args": ["-m", "oracle_mcp"],
"env": {
"ORACLE_USER": "${ORACLE_USER}",
"ORACLE_PASSWORD": "${ORACLE_PASSWORD}",
"ORACLE_DSN": "${ORACLE_DSN}"
}
}
}
}
然后在系统中设置这些环境变量。
用法
配置后,Oracle MCP服务器为AI代理提供以下工具:
工具
-
execute_query -执行SELECT查询
Execute a SQL query: SELECT * FROM employees WHERE department = 'IT' -
list_tables -列出所有表和视图
Show me all tables in the database -
describe_table -获取表结构
Describe the structure of the employees table -
preview_table -从表中获取示例数据
Show me a preview of the employees table -
execute_dml -执行INSERT/UPDATE/DELETE(如果禁用只读模式)
Insert a new employee record
资源
- oracle://connection -查看数据库连接信息
- oracle://schema -查看架构元数据
交互示例
在MCP服务器运行时,您可以询问Claude(或任何与MCP兼容的AI代理):
- “数据库中有哪些表可用?”
- “显示EMPLOYEES表的结构”
- “运行查询以查找IT部门的所有员工”
- “从ORDERS表中获取数据样本”
- “客户中的记录总数是多少?”
AI代理将使用适当的MCP工具与您的Oracle数据库交互并提供结果。
发展
项目结构
oracle-mcp/
├── src/oracle_mcp/
│ ├── __init__.py # Package initialization
│ ├── server.py # MCP server implementation
│ ├── oracle_client.py # Oracle database client
│ └── config.py # Configuration management
├── tests/ # Test files
├── pyproject.toml # Package configuration
└── README.md # This file
运行测试
# Install development dependencies
pip install -e ".[dev]"
# Run tests
pytest
配电楼
# Install build tools
pip install build
# Build the package
python -m build
故障排除
TNS配置问题
如果遇到“TNS:无法解析连接标识符”错误:
- 验证您的
tnsnames.ora文件位置 - 检查一下
ORACLE_DSN匹配您的条目tnsnames.ora - 确保
TNS_ADMIN环境变量指向包含以下内容的目录tnsnames.ora - 请尝试使用直接连接字符串:
hostname:1521/service_name
连接错误
- 验证数据库凭据是否正确
- 检查数据库是否可以从您的网络访问
- 确保Oracle数据库正在运行并接受连接
- 如果远程连接,请查看防火墙规则
权限问题
- 确保数据库用户具有适当的SELECT权限
- 对于DML操作,确保授予写入权限
- 检查用户是否可以访问所需的架构
安全最佳实践
- 从不提交凭据 -使用环境变量或安全保管库
- 使用只读模式 如果可能-设置
READ_ONLY_MODE=true - 限制数据库权限 -仅向数据库用户授予必要的权限
- 使用专用数据库用户 -创建特定用户以访问AI代理
- 监控查询 -定期查看查询日志
- 设置查询超时 -通过以下方式防止长时间运行的查询
QUERY_TIMEOUT
贡献
欢迎投稿!请随时提交拉取请求。
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
致谢
- 与 模型上下文协议SDK
- 用途 python oracledb 用于Oracle连接
支持
有关问题、疑问或贡献,请访问 GitHub 仓库.