Skip to main content

MCP Server for Oracle Database(極めて実験的)

Oracle Database用のMCP(Model Context Protocol)サーバーの実験的な実装です。このサーバーは、AIアプリケーションがOracle Databaseに対してSQLクエリを実行し、その結果を取得するためのものです。MCPサーバーはローカルで実行されます。Cursor や Cline などの MCP クライアントから呼び出してシームレスなデータベース体験を提供することを目指してます。

機能

  • Oracle DatabaseへのSQLクエリ実行
  • テーブル構造の取得
  • セキュリティ対策(クエリ長制限、危険なキーワードチェック)
    • 最小限のセキュリティ対策のみ施されています。外部からアクセスできないローカルな環境でのみ使用してください。
  • 結果のフォーマット機能(LLMに呼んでもらうものなので、余計なことをしているかも)

必要条件

  • Python 3.11以上
  • Oracle Databaseへのアクセス権限
  • 必要な環境変数の設定(.envファイル)
  • uv(高速なPythonパッケージマネージャー)

※テストは、Windows 11 のみで行っています。Linux/Mac の場合は、ディレクトリパスの表記などは適宜読み替えてください。

セットアップ

  1. リポジトリをクローン:
git clone [repository-url]
cd mcp-server-for-oracle-database
  1. 仮想環境を作成して有効化:
uv venv .venv
source .venv/bin/activate
.venv\Scripts\activate
  1. 依存パッケージをインストール:
uv pip install -r requirements.txt
  1. 環境変数の設定: .envファイルを作成し、以下の情報を設定:
ORACLE_USER=your_username
ORACLE_PASSWORD=your_password
ORACLE_DSN=your_dsn

提供されるツール

execute_oracle

SQLクエリ(SELECT文のみ)を実行し、結果をフォーマットして返します。

  • パラメータ:

    • query: SQLクエリ(SELECT文のみ)
    • params: バインド変数
    • max_length: 応答の最大文字数
    • max_rows: 取得する最大行数

    ※LLMがパラメータの使い方を試行錯誤することが多いようです。クライアントへパラメータの使い方を上手く伝える方法があったら教えてください。 ※読むのは LLM なのでフォーマットは余計かもしれません。

list_tables

データベースのテーブル一覧を表示します。

  • パラメータ:
    • max_rows: 取得する最大テーブル数(integer型、デフォルト: 50)
    • name_pattern: テーブル名のパターン(例: '%EMP%')(オプション)
    • order_by: 並び順('TABLE_NAME'または'CREATED'、デフォルト: 'TABLE_NAME')
    • include_system_tables: システムテーブルを含めるかどうか(デフォルト: False)
    • use_all_tables: ALL_TABLESを参照するかどうか(デフォルト: False)
    • owner: テーブルの所有者(use_all_tablesがTrueの場合は必須)

describe_table

テーブルの構造を表示します。sqlplus の describe を模しています。

  • パラメータ:
    • table_name: テーブル名

oracle_query_assistant

execute_oracle(Oracle Databaseへのクエリ実行)をガイドするプロンプトを返します。

  • パラメータ
    • query_type: SQL のタイプ(現在は、"select"のみ)

使用方法

MCPクライアントへの登録:

Claude Desktop や Cursor の MCP 設定ファイルに以下を追加します。

{
  "mcpServers": {
    "ORACLE": {
      "command": "仮想環境の Python 実行ファイルへの絶対パス(...\\mcp-server-for-autonomous-database\\.venv\\Scripts\\python.exe)",
      "args": [
        "MCPサーバーの絶対パス(....\\mcp-server-for-oracle-database\\oracledb_mcp_server.py)"
      ]
    }
  }
}

※構成ファイルを変更した後は、MCPクライアントの再起動が必要です。Claude Desktop の場合、バックグラウンドで動いているプロセスも一度停止してから再起動してください。

Claude Desktop や Cursor 等の MCP クライアントでいろいろお試しください。

例1: テーブルの構造を表示

xxxx テーブルの構造をしらべて
xxxx のスキーマは

スクリーンショット

例2: テーブルのデータを取得

xxxx テーブルのデータを取得して

スクリーンショット スクリーンショット スクリーンショット

例3: SQL の実行

この SQL を試してみて

セキュリティ

  • SELECT 文以外は受け付けません(DDL/DMLは実行できません)
    • SELECT INTO と UNION ALL も受け付けません
  • クエリ長の制限(デフォルト: 1MB)
  • 危険なキーワードのチェック
  • 入力値のサニタイズ
  • 読み取り専用クエリの検証

Metadata

Release files for iflow-mcp_kutsushitaneko_mcp-server-for-oracle-database 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for iflow-mcp_kutsushitaneko_mcp-server-for-oracle-database 0.1.0
File Size Uploaded
iflow_mcp_kutsushitaneko_mcp_server_for_oracle_database-0.1.0.tar.gz 495.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for iflow-mcp_kutsushitaneko_mcp-server-for-oracle-database 0.1.0
File Interpreter ABI Platform
iflow_mcp_kutsushitaneko_mcp_server_for_oracle_database-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 998.5 kB

Release files / iflow_mcp_kutsushitaneko_mcp_server_for_oracle_database-0.1.0.tar.gz

Download URL iflow_mcp_kutsushitaneko_mcp_server_for_oracle_database-0.1.0.tar.gz
Size 495.4 kB
Tags Source
SHA-256 checksum
How to use checksums
f9d94856f476512be6e12bcfe02eed5fe20aedd6e88da456088859f2b643ac40
BLAKE2b-256 checksum
How to use checksums
e145369165db2832078d43468bcf42f95469708bb1f95aa76110ca2d4cdf7c52
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / iflow_mcp_kutsushitaneko_mcp_server_for_oracle_database-0.1.0-py3-none-any.whl

Download URL iflow_mcp_kutsushitaneko_mcp_server_for_oracle_database-0.1.0-py3-none-any.whl
Size 503.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
91e2940320832396535de194b4ae7b92e25078209932775f8ef47fb4a0bdc0f8
BLAKE2b-256 checksum
How to use checksums
b135791b4c6774587a7436d7fbe6a1794de3b559066bd573fc95f343c06a02d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page