Skip to main content

MCP Server for Oracle Database - Oracle Database用のMCPサーバー

Project description

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)
  • 危険なキーワードのチェック
  • 入力値のサニタイズ
  • 読み取り専用クエリの検証

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file iflow_mcp_kutsushitaneko_mcp_server_for_oracle_database-0.1.0.tar.gz.

File metadata

  • Download URL: iflow_mcp_kutsushitaneko_mcp_server_for_oracle_database-0.1.0.tar.gz
  • Upload date:
  • Size: 495.4 kB
  • Tags: Source
  • Uploaded using 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}

File hashes

Hashes for iflow_mcp_kutsushitaneko_mcp_server_for_oracle_database-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f9d94856f476512be6e12bcfe02eed5fe20aedd6e88da456088859f2b643ac40
MD5 00cec2e4df57d5f5dbc4a5132b06b545
BLAKE2b-256 e145369165db2832078d43468bcf42f95469708bb1f95aa76110ca2d4cdf7c52

See more details on using hashes here.

File details

Details for the file iflow_mcp_kutsushitaneko_mcp_server_for_oracle_database-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: iflow_mcp_kutsushitaneko_mcp_server_for_oracle_database-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 503.0 kB
  • Tags: Python 3
  • Uploaded using 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}

File hashes

Hashes for iflow_mcp_kutsushitaneko_mcp_server_for_oracle_database-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 91e2940320832396535de194b4ae7b92e25078209932775f8ef47fb4a0bdc0f8
MD5 aa11ea85f52e51b9565a0138ee59972f
BLAKE2b-256 b135791b4c6774587a7436d7fbe6a1794de3b559066bd573fc95f343c06a02d3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page