🚀 MCP 服务器
MCP 服务器(Database Context Provider)专为大规模 Oracle 数据库量身打造,提供一系列强大的数据库上下文功能,能有效提升数据库操作的便捷性和效率。
✨ 主要特性
MCP 服务器提供了一系列实用工具,可帮助用户高效地操作和管理 Oracle 数据库,以下是主要工具的介绍:
- search_columns:用于搜索包含特定术语的表列。
- get_pl_sql_objects:获取与指定模式匹配的所有 PL/SQL 对象信息。
- get_object_source:显示特定 PL/SQL 对象的源代码。
- get_table_constraints:展示表上的所有约束,包括主键、外键、唯一约束和检查约束。
- get_table_indexes:列出表上定义的所有索引,有助于进行查询优化。
- get_dependent_objects:查找依赖于指定数据库对象的所有对象。
- get_user_defined_types:显示数据库中自定义类型的信息。
- get_related_tables:展示与指定表通过外键关系相关联的所有表。
🔧 技术细节
架构
MCP 服务器采用三层架构,旨在优化大规模 Oracle 数据库的性能:
- DatabaseConnector 层
- 负责管理 Oracle 数据库的连接和查询执行。
- 实现了连接池和重试逻辑,提高连接的稳定性和可靠性。
- 直接处理原始 SQL 操作。
- SchemaManager 层
- 实现了智能模式缓存,减少重复查询带来的性能开销。
- 提供高效的模式查找和搜索功能,加快数据检索速度。
- 管理持久化在磁盘上的缓存,确保数据的持久性。
- DatabaseContext 层
- 提供高级 MCP 工具和接口,方便用户进行复杂操作。
- 处理授权和访问控制,保障数据安全。
- 优化模式信息,以便更好地供 AI 使用。
连接模式
数据库连接器支持两种工作模式:
Thin Mode(默认)
默认情况下,连接器采用 Oracle 的薄模式,这是一种纯 Python 实现,具有以下优点:
- 更易于部署和设置,降低了使用门槛。
- 足以处理大多数基本数据库操作。
- 具有更高的环境可移植性,可在多种环境中使用。
Thick Mode
对于需要高级 Oracle 功能或更好性能的场景,可以启用厚模式:
- 使用 Docker:在 Docker 环境变量中设置
THICK_MODE=1。
- 本地安装:导出
THICK_MODE=1 环境变量,并确保已安装与系统架构和数据库版本兼容的 Oracle 客户端库。
⚠️ 重要提示
使用 Docker 时,无需担心安装 Oracle 客户端库,因为它们已包含在容器中(Oracle Instant Client v23.7)。容器支持 Oracle 数据库版本从 19c 到 23ai,适用于 Linux/arm64 和 Linux/amd64 架构。
📦 安装指南
系统要求
- Python:版本 3.12 或更高(建议使用以获得最佳性能)。
- 内存:至少 4GB 可用 RAM(适用于拥有 10,000 张表以上的大型数据库)。
- 磁盘空间:最少 500MB 的空闲空间用于模式缓存。
- Oracle 数据库:兼容 Oracle Database 11g 及更高版本。
- 网络:与 Oracle 数据库服务器的稳定连接。
📈 性能考量
- 初始缓存构建时间可能需要 5 - 10 分钟(具体取决于数据库大小)。
- 后续启动时间大幅缩短,仅需几秒即可完成。
- 支持高并发访问,性能表现优异。
🤝 贡献指南
欢迎社区贡献!请参考项目文档了解如何参与开发和提交问题。
📄 许可证
如需获取更多信息或技术支持,请联系 project maintainers。项目的许可协议详见 LICENSE 文件。