Oracle MCP Server について
Oracle MCP Server は、Spring AI MCP Server を基盤とする Oracle データベース操作用の MCP サーバーです。ツールでテーブル一覧や構造を確認し、SQL を実行できます。結果は CSV または更新行数で返されます。
主な機能
- 01データベースのテーブル一覧
- 02列・型・制約の確認
- 03SELECT、INSERT、UPDATE、DELETE の実行
- 04クエリ結果の CSV 形式での返却
- 05データベース接続の管理
活用シーン
- 01Oracle データベースのテーブル確認
- 02テーブル列や主キーの確認
- 03MCP 経由で SQL の検索や変更
- 04書き込み後の更新行数の確認
MCP 対応
MCP ツールとして Oracle データベース操作を公開し、リアルタイム通信に SSE を使用します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Oracle MCP サーバー
spring-ai-mcp-server-webmvc-spring-boot-starter を基盤として構築された、Oracle データベース操作用の Model Context Protocol(MCP)サーバー実装です。このサービスは、Server-Sent Events(SSE)を使用したリアルタイム通信により、MCP 経由で Oracle データベースを操作するためのツール一式を提供します。
特長
- Oracle データベース内のすべてのテーブルを一覧表示
- テーブル構造(列、データ型、制約)を表示
- SQL 文(SELECT、INSERT、UPDATE、DELETE)を実行
- 安全なデータベース接続管理
- SSE によるリアルタイム通信
- spring-ai-mcp-server-webmvc-spring-boot-starter を基盤として構築
技術スタック
主な依存関係
- Spring Boot 3.2.0
- spring-ai-mcp-server-webmvc-spring-boot-starter
- Oracle JDBC Driver
- Model Context Protocol(MCP)フレームワーク
- Lombok
開発ツール
- Java 17
- Maven 3.6+
- Spring Boot テストフレームワーク
- JUnit 5
はじめに
前提条件
- JDK 17
- Maven 3.6+
- Oracle Database インスタンス
- MCP サーバー環境
- Cursor IDE
設定
1. データベース設定
application.properties または application.yml を作成または変更し、次の設定を追加します。
oracle:
connectionString: jdbc:oracle:thin:@//your-oracle-host:1521/your-service-name
username: your-username
password: your-password
2. Cursor MCP 設定
Cursor IDE で、設定画面から MCP サーバーを設定します。
{
"mcpServers": {
"oracle-mcp-server": {
"url": "http://{server-ip}:{server-port}/sse",
"enabled": true
}
}
}
この設定では、次のことを行います。
- MCP サーバー名を「oracle-mcp-server」に設定
- サーバー URL を「http://{server-ip}:{server-port}/sse」に設定
- {server-ip} をサーバーの IP アドレスに置き換えます
- {server-port} をサーバーのポート番号に置き換えます
- Cursor で MCP サーバーを使用できるようにします
プロジェクトのビルド
mvn clean install
アプリケーションの実行
mvn spring-boot:run
API ツール
1. テーブル一覧表示ツール
- 名前:
list_tables - 説明:Oracle データベース内のすべてのテーブルの一覧を取得します
- 使用方法:パラメーターは不要です
- 戻り値:改行区切りのテーブル名一覧
2. テーブル構造表示ツール
- 名前:
describe_table - 説明:指定したテーブルの構造情報を取得します
- パラメーター:
tableName- 構造を表示するテーブルの名前 - 戻り値:テーブル構造を示す CSV 形式のデータ。次の情報を含みます。
- 列名
- データ型
- NULL 許容状態
- データ長
- 主キー情報
3. SQL 実行ツール
- 名前:
execute_sql - 説明:Oracle SQL 文を実行します
- パラメーター:
sql- 実行する SQL 文 - 戻り値:
- SELECT の場合:クエリ結果を CSV 形式で返します
- INSERT/UPDATE/DELETE の場合:影響を受けた行数を返します
実装の詳細
アーキテクチャ
com.mcp.oracle/
├── config/
│ └── OracleConfig.java # Database configuration
├── service/
│ └── OracleService.java # Core service implementation
└── OracleApplication.java # Application entry point
主なコンポーネント
-
OracleConfig
- データベース接続設定を処理します
- Spring の @ConfigurationProperties を使用します
- パスワードを安全に管理します
-
OracleService
- データベース操作用の MCP ツールを実装します
- データベース接続を管理します
- SQL の実行と結果の整形を処理します
- エラー処理とログ記録を実装します
-
接続管理
- Oracle のコネクションプーリングを使用します
- リソースを自動的に閉じる処理を実装します
- 接続エラーを適切に処理します
セキュリティに関する考慮事項
- 設定内のパスワードの暗号化
- コネクションプールの管理
- SQL インジェクションの防止
- エラーメッセージのサニタイズ
テスト
このプロジェクトには、包括的なユニットテストが含まれています。
mvn test
テストでは、次の項目をカバーしています。
- データベース接続
- テーブル一覧表示
- テーブル構造の表示
- SQL の実行
- エラー処理
エラー処理
このサービスでは、次のようなエラーを堅牢に処理します。
- 接続エラー
- 無効な SQL 文
- テーブル/列の欠落
- 権限の問題
コントリビューション
- リポジトリをフォークします
- フィーチャーブランチを作成します
- 変更をコミットします
- ブランチにプッシュします
- プルリクエストを作成します
ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細は LICENSE ファイルを参照してください。
サポート
サポートや質問については、リポジトリに issue を作成してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。