Solution Knowledge

Enterprise data intelligence use cases (3/n)

この記事は 2025年9月5日にMediumに公開されたブログ記事「Enterprise data intelligence use cases (3/n)」の日本語による概説記事です。

この記事は 2025年9月5日にMediumに公開されたブログ記事「Enterprise data intelligence use cases (3/n)」の日本語による概説記事です。

日本語訳にあたり、一部の構成・リンク先を変更しています。原文は本文末にあるリンクを参照ください。

Enterprise data intelligence use cases (3/n)

エンタープライズデータインテリジェンスのユースケース(3/n)
MCP を使用して AI エージェント (LLM) を複数のデータ ソースに接続する

はじめに

前回の記事では、エンタープライズ データインテリジェンスのユースケースにおいて必須となりつつあるいくつかのツール、すなわち ナレッジグラフ(Knowledge Graph:GraphRAG) や AI エージェント フレームワークなどについて解説しました。

ここでは、最新の注目トピックの一つになっているModel Context Protocol (MCP)を採り上げ、MCPがセマンティックレイヤー(メタデータ) の探索 、DWH のデータ ソースへの直接アクセスによるデータプロダクト作成など、データと AI エージェント (LLM) の間のギャップを埋めるのにどのように役立つかを、検証結果を含めて解説します。

MCPとは何か?

本投稿はMCPの技術的解説を目的としたものではありません。ここでは、以降の議論に最も関連する側面に焦点を絞って解説します(詳細については参考文献をご覧ください)。

MCPは、大規模言語モデルが外部ツール、API、データソースと構造化され、統制された方法で対話できるようにするオープンスタンダードです。WikipediaAnthropic のドキュメントによれば、MCPは、軽量なクライアント・サーバーモデルを定義しています。このモデルでは、データベース、ナレッジグラフ、SaaS APIなどのサービスが、LLMエージェントがツールとして呼び出せる機能(Capabilities)を公開します。これにより、すべてのコネクタをモデルに直接埋め込む必要がなくなり、可観測性とアクセス制御が確保されます。

本稿の目的において、MCPはLLMベースのエージェント フレームワーク(Claude Desktop など)と、企業のデータカタログや Neo4j ベースのナレッジグラフを橋渡しするコントロールプレーンとして機能します。これにより、AI の出力が企業内で検証された確かな知識に根ざしたものとなります。

ここでは、グラフデータベースへのMCP接続に焦点を当てていますが、APIを介してQuollioメタデータカタログに直接接続することもできます。

LLM エージェント フレームワークで MCP を使用する理由

前回の投稿では、GraphRAG を基盤とした LLM エージェント フレームワークについて説明しました。エージェントは、各エージェントに定義されたツールを通じて、LLM を呼び出すか、ナレッジグラフに直接アクセスするように設計されていました。

User interaction with the Knowledge Graphs powered AI agent framework
ナレッジグラフを利用したAIエージェント フレームワークとのユーザーインタラクション

実際のところ、これは、MCPを使用してデータやClaude Desktopなどの別のLLMエージェント フレームワークに接続することと同じ概念です。

Claude DesktopをAIエージェント フレームワークとして使用し、ナレッジグラフに接続するMCPサーバーを装備すると、次の図が得られます。

Using MCP to connect Claude Desktop (Sonnet) with metadata Knowledge Graph
MCP を使用して Claude Desktop (Sonnet) をメタデータ ナレッジ グラフに接続

Graph データベースへの接続

この実装ではメインのグラフデータベースとしてNeo4jを使用しているため、Neo4jラボまたはコミュニティによって公開されたMCPサーバーを使用しました: https://neo4j.com/developer/genai-ecosystem/model-context-protocol-mcp/

また、コードを少し調整して、たとえば、独自のエージェントツールにすでに含まれているエンドツーエンドのリネージ探索機能など、いくつかの特定の機能を追加しました。これにより、Claude LLM側が、「テーブルXまでの上流のリネージと、すべてのタグ、そしてパスに沿って各テーブルが属するスキーマを取得してほしい」といった具体的な質問に対して、無駄な時間を費やして独自に処理を考案する、いわば「すでに世にある『車輪』を再発明する」必要がなくなります。

実装は簡単です。コードをダウンロードし、次のように構成ファイルを Claude Desktopに追加するだけです。

  • Shell: install first mcp-neo4j-cypher
    git clone https://github.com/neo4j-contrib/mcp-neo4j.git
    cd mcp-neo4j/servers/mcp-neo4j-cypher
    rm -rf .venv ; uv venv ; source .venv/bin/activate ; uv pip install -e .
  • Claude Desktop config file(json):
    {
        "mcpServers": {
            "neo4j": {
                "command": "/opt/homebrew/bin/uv",
                "args": [
                    "--directory",
                    "/Users/LoysBelleguie/dev/MCP_servers/mcp-neo4j/servers/mcp-neo4j-cypher/src",
                    "run",
                    "mcp-neo4j-cypher",
                    "--db-url",
                    "neo4j://localhost:7692",
                    "--username",
                    "neo4j",
                    "--password",
                    "Poipoi99!"
                ]
            },
     (other servers follows)
    }

当然のことながら、コマンド「—db-url」「neo4j://localhost:7692」は、Claude Desktopアプリを起動する前にナレッジグラフサーバーが準備完了していることを意味します。その後、Claude Desktopを再起動すると、MCPサーバーが正しく接続されていることを確認できます。

Claude Desktop での MCP サーバー接続の設定
Claude Desktop での MCP サーバー接続の設定

Neo4j Knowledge Graph のテスト — MCP — Claude LLM シナリオ

前回と同じ「メタデータレイク」のシナリオから始めます。ナレッジグラフ内のデータは、次の要素を含んでいます。

  1. 企業のビジネスエンティティに直接リンクされた、QDICのデータベース全体の完全なコピー、および
  2. PDF文書やHTMLページなどの非構造化データです。

後者(非構造化データ)は解析され、特定の用語が抽出(エンティティ化)され、ビジネスドメインの用語集としてナレッジグラフに保存されます。

Claude(Sonnet model) は、MCP を通じてどのように ナレッジグラフ と通信するのでしょうか?

(コードを追加していない)元のバージョンで、MCPセットアップの技術的機能を確認しましょう。

元のバージョン(コードは追加されていない)でMCPセットアップの技術的機能を確認しましょう。ブラインドテスト、つまり追加のコンテキストのないワンショットプロンプトを作成します: MCPサーバーでナレッジグラフをスキャンするだけで、エンタープライズビジネスを探索するようにSonnetに依頼します。

MCPを用いてナレッジグラフを探索し、この顧客のコンテキストを要約します。顧客はどのようなビジネスに携わっていますか?「knowledge_base」サブグラフの下にロードされたドキュメントに基づいて、現在の主な懸念は何ですか?
One-shot prompt test to query the Knowledge Graph through MCP from Claude LLM
Claude LLM による MCP を通じて Knowledge Graph を照会するワンショット プロンプト テスト

ここで重要な点は、LLM が最初に実行するアクションが次のとおりであるということです。

1. MCPサーバーで利用できるツールをリストアップする
1. MCPサーバーで利用できるツールをリストアップする
2. スキーマを確認する
2. スキーマを確認する

ナレッジグラフスキーマクエリはプロンプトから指示されたわけでも、ワークフローのどこかにハードコーディングされたわけでもありませんが、MCPサーバー機能の設計とLLM推論機能の結果です。

前者はAIエージェントのツールとして機能し、以下の指示を通してLLMにスキーマチェックを促します。

後者は、クエリ実行に先立ってスキーマ探索が行われる多くのデータベース操作例でトレーニングされている可能性が高いため、明示的なコード指示ではなく、学習された動作パターンとなっています。

@mcp.tool(name=namespace_prefix+"get_neo4j_schema", 
             ...
    async def get_neo4j_schema() -> list[ToolResult]:
        """
        List all nodes, their attributes and their relationships to other nodes in the neo4j database.
        This requires that the APOC plugin is installed and enabled.
        """

        get_schema_query = """
        CALL apoc.meta.schema();
        """

分析は、LLM が生成したいくつかのクエリで続行され、一見合理的な方法でグラフを探索します。

Excerpt of the Chain of Thoughts of Claude LLM using MCP-KG connection
MCP-ナレッジグラフ接続を用いたClaude LLMの思考の連鎖の抜粋

Chain of Thoughts(CoT)は非常に説得力があります。関連するCypherクエリを作成し、解析されたドキュメント(非構造化データ)から構築された知識ベースとソースデータのメタデータを区別します。

この実験の目的は、MCP セットアップをテストして検証することだけです。最終レポートは少し的外れです (データベースが EU 内の企業のものであると推測しました) が、プロンプトにコンテキスト行を数行追加すれば簡単に修正できます。

データソースへの接続でループを閉じる

前回のシナリオでは、「一般的な」ユーザーがメタデータやセマンティックレイヤーから企業データ全体を探索することに焦点を当てました。このユーザーは、裏側で MCP サーバーを介してナレッジベースに接続されている AI チャットボット(Anthropic Claude)に質問をしていました。

次の MCP ユースケースに目を向けます。ここで登場するユーザーはビジネスアナリストです。彼は前回のメタデータ検索で関連データセットを見つけたため、今度は Snowflake 内のソースデータに切り替え、ダッシュボードを構築しようとしています。

このケースでは、LLM はグラフデータベース向けのクエリ、すなわち Neo4j の「Cypher」クエリを作成しません。その代わりに、ごく一般的な SQL クエリを生成します。言い換えれば、自然言語による質問から始まる CoTに基づいて SQL コマンドを生成します。これは通常、「text2SQL」と呼ばれます。

MCP connection to Snowflake database from Claude LLM
MCP connection to Snowflake database from Claude LLM

Claude LLM による Snowflake データベースへの MCP 接続

このコンセプトを、シンプルなSnowflake MCPコネクタ( https://github.com/davidamom/snowflake-mcp.git )でテストしました。プロセスは予想通り、Neo4jナレッジグラフを使用した前回のケースと非常に似ており、Snowflake MCPサーバーはSQLクエリをSnowflakeに直接送信し、データをClaude Sonnet LLMモデルに返します。

確立されたベンチマークデータセットTCP-Hを使用して、Claudeが与えた回答をTCP-Hドキュメント( https://www.tpc.org/tpc_documents_current_versions/pdf/tpc-h_v2.17.1.pdf 、質問Q2、30ページ)にリストされているビジネスケースの1つと比較できます。

One-shot prompt to query Snowflake through MCP from Claude LLM
Claude LLMのMCPを介してSnowflakeをクエリするワンショットプロンプト

これまでと同様に、LLMはまずスキーマを参照し、次に各テーブルをスキャンして利用可能なデータを探索します。そして、データプロダクトを構築するためのSQLコマンドを含むレポートを返します。Snowflakeアカウントで直接実行できるように、説明付きのSQLファイルを1つだけ作成するように依頼しました。SQLコマンドは問題なく実行されましたが、LLMが既に結果を検証しているので、逆の結果になるのはおかしいです。

Left: save the SQL created by Claude LLM | Right: run the SQL on Snowflake
左: Claude LLM が作成した SQL を保存 | 右: Snowflake で SQL を実行

MCP/LLMでデータ品質の問題を検出する

興味深いことに、Snowflake の TPC-H データ セットを使用した最後のセッション中に、レポートが画面に表示されているときに、一部のデータが間違っていることに気付きました。データは国番号「+33」を英国に割り当てていますが、これはフランスのコードです。
私はそれがLLMによるハルシネーション(誤情報の生成)ではないかと思い、尋ねました。

「Supplier#000005359(英国)の電話番号が+33で、実際にはフランスであることがわかったSQLを確認してください。この結果はあなたが発明したのですか?SQLクエリと結果を分かりやすい表で示してください。」
Catching a data issue from the SQL generated by Claude LLM/MCP
Claude LLM/MCP が生成した SQL からデータの問題点を検出

Sonnet(LLM)からの回答がすべてを物語っています。まさに、LLM/MCP によって実現されたデータ品質チェックを手に入れたのです!

最後に

この記事では、GraphRAG を活用した AI エージェント フレームワークを、自作の AI エージェント フレームワークとツールの代わりに MCP サーバーを使用するように変更する方法を示しました。利用可能な MCP サーバーの使いやすさにより、セットアップ全体を概念的に視覚化することがより簡単になります。

  1. ユーザーは、データの検出、探索、セマンティック分析などのためにメタデータとセマンティック レイヤーにアクセスできます。
  2. 一方、データ エントリ ポイントを見つけたら、同じ LLM セッションでデータ ソースに切り替えて、データ プロダクトを構築し、ビジネス分析 (ダッシュボード) や AI モデルを完成させたり、新しいデータ セットを保存したりすることもできます。
Using multiple types of MCP servers to query both the semantic layer (metadata) and the data source (ex. a Snowflake database)
Using multiple types of MCP servers to query both the semantic layer (metadata) and the data source (ex. a Snowflake database)

複数のタイプのMCPサーバーを使用して、セマンティックレイヤー(メタデータ)とデータソース(Snowflakeデータベースなど)の両方をクエリします。

Loys Belleguie, Sep 5, 2025, Enterprise data intelligence use cases (3/n)
https://loysbelleguie.medium.com/enterprise-data-intelligence-use-cases-3-n-3a97a63c899d

“現実的に機能”する
データインテリジェンスへの
唯一の選択肢

データインテリジェンスに関して、今後の進め方のご相談やデモをご希望の方は、お気軽にお問い合わせください。