Claudeを使用したMCPサーバー経由でのテーブルのコメントの修正 (2025/07/31)

Claudeを使用したMCPサーバー経由でのテーブルのコメントの修正 (2025/07/31)

https://www.thatjeffsmith.com/archive/2025/07/using-claude-to-fix-my-table-comments-via-our-mcp-server/

数多くのAIアシスタントの中から選ぶことができますが、その一つがClaudeです。Claudeのユニークな点は、Anthropic社のLLM(学習モジュール)でも利用できることです。これは、MicrosoftがVS CodeのCopilotで実現したような、いわばワンストップソリューションと言えるでしょう。

私はAnthropicの無料アカウントとデスクトップアプリケーションを使用しています。これを使うとMCPサーバーの設定が可能で、ちょうどOracleデータベース用のMCPサーバーを所有しているので便利です。

この設定が完了すれば、クロードのLLM(法務マネージャー)は当社のツールにアクセスできるようになります。

  • 接続一覧
  • 接続する
  • 切断
  • run-sqlcl
  • run-sql

オブジェクト名やコメントなどを改善することで、LLM(言語学習者)の作業は楽になるが…

…LLMは、より良いオブジェクト名やコメントを考えるのにも役立ちます!

例えば、既存のテーブルのコメントを「修正」または改善するように指示することはできますが、最悪のシナリオ、つまりコメントがまったくないテーブルから始めた場合はどうでしょうか?

私のStravaテーブル、気に入りましたか?

バッシュ
SQL> desc strava

Name             Null?    Type              
________________ ________ _________________ 
ID                        NUMBER(38)        
ACTIVITY_DATE             DATE              
ACTIVITY_NAME             VARCHAR2(100)     
ACTIVITY_TYPE             VARCHAR2(100)     
DESCRIPTION               VARCHAR2(4000)    
ELAPSED_TIME              NUMBER(38)        
DISTANCE                  NUMBER(38)        
COMMUTE                   VARCHAR2(10)      
GEAR                      VARCHAR2(100)     
FILENAME                  VARCHAR2(100)     
COLM_STUFF                VARCHAR2(20)   

はい、そうです。データ自体は面白いのですが…表にコメントがありません。

Claudeに聞いてみよう

Claude Desktop、Claudeのsonnet4 LLMを使用。

質問私のデータベースに接続して、Stravaテーブルの列コメントを最適化するのを手伝ってもらえますか?

クロードデータベースへの接続と、STRAVAテーブルの列コメントの最適化をお手伝いします。まずは、利用可能なデータベース接続を確認することから始めましょう。

「一度だけ許可」を選択します。これは、リスト接続ツールへのこの単一のリクエストに対して許可を与えることを意味します。再度実行したい場合は、再度許可を求める必要があります。

私の接続を調べて気に入った接続を見つけ、それを使ってデータベース接続を行う許可を求めます。

「常に許可」と「一度だけ許可」に関する注意点については、前述と同様です。

さあ、今から真剣に注意を払い始めよう

LLMがデータベースへのアクセス権を取得すると、LLMは実行したいSQLコードを自動的に生成します。そして、そのコードと、実行権限の要求を私たちに表示します。

そのクエリを読みます。正しいでしょうか?意味が通じますか?また、データベースへのアクセス許可を求める前のプロンプトについてですが、常に正しいデータベースにアクセスしていることを確認する必要があります。

私のテーブルを見つけ、コメントが全くないことを確認したところ、エディターで確認するためのコメント候補が生成されました。

そして、提案内容を実装するためにそのコードを実行するかどうかを尋ねられました。

各SQL文とその応答を確認できます。

これで作業は完了したので、完全にコメントが書き込まれたテーブルを点検できます。

私の「COLM_STUFF」列をどう扱えばいいのか、全く分からなかったようです。あれはテストのために追加したものだったのですが。コードが提案された時に自分でコメントを修正することもできたし、あるいはデータサンプリングを指示して、その列(Colm、分かりますか?)が何をするのかをよりよく理解することもできたはずです。

まだ終わりではありません。

接続を切断しましょう。接続を維持するには費用がかかるので、自分たちで後始末をしましょう。

それでは、前回の作業セッション以降にデータベースに記録された内容を見てみましょう。

まとめと要点

あなたは以下のことができます、またはすべきです。

  • Claudeを含む、MCP互換のAIクライアントを使用してください
  • MCPサーバーツールへのアクセスを承認する前に必ず確認してください。
  • SELECT文を実行するだけでなく、それ以上のことを実行します。
  • スキーマ内の DBTOOLS$MCP_LOG テーブルを使用して、ユーザーで MCP を介して行ったすべての操作を確認できます。

もう一つだけ…

これは簡単すぎた!

よし、もっと難しくしてみよう。

ひどい名前の表はどうでしょう?LLM(法学修士)の学生でも、そこから推測したり推論したりするのは難しいでしょう。

バッシュ
SQL> info bad_name
TABLE: BAD_NAME 
	 LAST ANALYZED:2025-07-31 19:43:55.0 
	 ROWS         :107 
	 SAMPLE SIZE  :107 
	 INMEMORY     :DISABLED 
	 COMMENTS     : 

Columns 
NAME         DATA TYPE           NULL  DEFAULT    COMMENTS
 ABC         NUMBER(6,0)         Yes              
 DEF         VARCHAR2(20 BYTE)   Yes              
 GHI         VARCHAR2(25 BYTE)   No               
 EMAIL       VARCHAR2(25 BYTE)   No               
 JKL         VARCHAR2(20 BYTE)   Yes              
 MNO         DATE                No               
 PQR         NUMBER(8,2)         Yes              


SQL> select 'good luck with that, Claude!';

つまり、最初の結果はまあまあだったということだ。

しかし、私は馬鹿ではないし、LLM(法学修士)課程は提案を受け入れるのが得意だ。

プロンプト推測する代わりに、テーブルのデータをサンプリングして、各列に実際に何が格納されているかを確認してみてはどうでしょうか?

クロード素晴らしいアイデアだ!推測するよりずっと賢明だ。BAD_NAMEテーブルの実際のデータをサンプリングして、各列に何が含まれているかを確認しよう。そうすれば、より正確で意味のあるコメントを作成できるだろう。

そして今では、目の前のタスクをはるかにうまくこなせるようになった。

これは、以下のSQLを実行するように要求します。

SQL
SELECT /* LLM in use is claude-sonnet-4 */ * FROM BAD_NAME WHERE ROWNUM <= 10

はい、最初の10行を読み込みます。

列名がもっと分かりやすくなるかどうかは分かりませんが、少なくとも各列の中身は理解できるようです。また、従業員にもジャンプしたので、日付フィールドはHIRE_DATEだと想定しているようです。興味深いですね…。

コメント

このブログの人気の投稿

Oracle Database 19cサポート・タイムラインの重要な更新 (2024/11/20)

ミリ秒の問題: BCCグループとOCIが市場データ・パフォーマンスを再定義する方法(AWSに対するベンチマークを使用) (2025/11/13)

Oracle Enterprise Manager 24aiの概要 (2024/12/18)