このプロジェクトは、モデルコンテキストプロトコル(MCP)と検索強化生成(RAG)を組み合わせた軽量級のマルチエージェントAIシステムを商業分析に使用する例を示しています。システムは、複数の専用ツールサーバーを調整することで、自然言語での商業データの統計分析と知識検索機能を提供し、モジュール化設計により拡張が容易で、LLMバックエンドの切り替えも可能です。
2ポイント
6.9K

インストール

以下のコマンドをクライアントにコピーして設定
注意:あなたのキーは機密情報です。誰とも共有しないでください。

🚀 MCP-RAG: ビジネス分析のためのエージェンティックAIオーケストレーション

モデルコンテキストプロトコル(MCP)検索拡張生成(RAG) を組み合わせた軽量なデモで、ビジネス分析のためのマルチエージェントAIワークフローをオーケストレートします。

🚀 クイックスタート

このプロジェクトは、以下のような エージェンティックAIシステム を構築する方法を紹介しています。

  1. 複数のエージェントをオーケストレート:MCPサーバーが異なる専用ツールを調整します。
  2. ビジネス知識を取得:RAGがコンテキストを考慮した情報検索を提供します。
  3. 統計分析を実行:自然言語クエリによる自動データ分析を行います。
  4. モジュール性を維持:LLMバックエンドの交換や新機能の追加が容易です。

✨ 主な機能

  • MCPベースの調整:複数の専用サーバーが連携して動作します。
  • ビジネス分析ツール:平均、標準偏差、相関、線形回帰などの分析機能を備えています。
  • RAG知識ベース:ビジネス用語、ポリシー、分析ガイドラインが収録されています。
  • モジュール式設計:新しいツールの追加やLLMバックエンドの交換が簡単です。
  • 自然言語インターフェース:「第1四半期の平均収益はいくらですか?」のような質問ができます。

📦 インストール

前提条件

  • Python 3.8以上
  • Google Gemini APIキー(無料版利用可能) - 将来的なLLM統合に必要
  • MCPとRAGの概念に関する基本的な理解

インストール手順

  1. リポジトリをクローン

    git clone https://github.com/ANSH-RIYAL/MCP-RAG.git
    cd MCP-RAG
    
  2. 依存関係をインストール

    pip install -r requirements.txt
    
  3. 環境変数を設定

    Gemini API(デフォルト)の場合

    export LLM_MODE="gemini"
    export GEMINI_API_KEY="your-gemini-api-key"
    

    カスタムローカルホストAPIの場合

    export LLM_MODE="custom"
    export CUSTOM_API_URL="http://localhost:8000"
    export CUSTOM_API_KEY="your-api-key"  # オプション
    

💻 使用例

基本的な使用法

クイックデモ

デモンストレーションスクリプトを実行して、両方のMCPサーバーの動作を確認します。

python main.py

これにより、以下のことが表示されます。

  • サンプルデータを使用したビジネス分析ツールの動作
  • ビジネス用語のRAG知識検索
  • システムがどのように連携して動作するか
  • 選択したバックエンドとのLLM統合

LLMバックエンドの選択

システムは2つのLLMバックエンドをサポートしています。

オプション1:Google Gemini API(デフォルト)
export LLM_MODE="gemini"
export GEMINI_API_KEY="your-gemini-api-key"
python main.py
オプション2:カスタムローカルホストAPI
export LLM_MODE="custom"
export CUSTOM_API_URL="http://localhost:8000"
export CUSTOM_API_KEY="your-api-key"  # オプション
python main.py

カスタムAPIの要件

  • OpenAI互換のチャット完了エンドポイント(/v1/chat/completions)をサポートする必要があります。
  • ツール/関数呼び出し形式を受け入れる必要があります。
  • ローカルホスト:8000で実行することが想定されています(設定可能)。

会話シナリオ

会話シナリオを実行して、実際の使用例を確認します。

python test_scenarios.py

これは、非技術的なユーザーがシステムとどのように対話するかを示すLinkedIn投稿シナリオをデモンストレーションします。

ビジネス分析ツール

システムは以下の分析機能を提供します。

  • データ探索:データセット情報とサンプルデータを取得します。
  • 統計分析:平均、標準偏差のフィルタリング付き分析を行います。
  • 相関分析:変数間の関係を見つけます。
  • 予測モデリング:予測のための線形回帰を行います。

RAG知識検索

以下の方法でビジネス知識にアクセスできます。

  • 用語定義:ビジネス概念を検索します。
  • ポリシー情報:会社の手順を取得します。
  • 分析ガイドライン:データ解釈のコンテキストを取得します。

高度な使用法

シナリオ1:販売分析

Manager: "What's the average earnings from Q1?"
MCP-RAG System: 
1. Analytics Server: calculate_mean(column='earnings', filter_column='quarter', filter_value='Q1-2024')
   → Mean of earnings: 101666.67
2. RAG Server: get_business_terms(term='earnings')
   → Earnings: Total revenue generated by a department or company in a given period
3. Response: "Average earnings for Q1-2024: $101,667"

シナリオ2:パフォーマンス相関

Manager: "What's the correlation between sales and expenses?"
MCP-RAG System:
1. Analytics Server: calculate_correlation(column1='sales', column2='expenses')
   → Correlation between sales and expenses: 0.923
2. Response: "Correlation: 0.923 (strong positive relationship)"

シナリオ3:予測モデリング

Manager: "Build a model to predict earnings from sales and employees"
MCP-RAG System:
1. Analytics Server: linear_regression(target_column='earnings', feature_columns=['sales', 'employees'])
   → Linear Regression Results:
      Target: earnings
      Features: ['sales', 'employees']
      Intercept: 15000.00
      sales coefficient: 0.45
      employees coefficient: 1250.00
      R-squared: 0.987
2. Response: "Model created with R² = 0.987"

シナリオ4:ビジネス知識

Manager: "What does profit margin mean?"
MCP-RAG System:
1. RAG Server: get_business_terms(term='profit margin')
   → Profit Margin: Percentage of revenue that remains as profit after expenses, calculated as (earnings - expenses) / earnings
2. Response: "Profit Margin: Percentage of revenue that remains as profit after expenses"

シナリオ5:ポリシー情報

Manager: "What are the budget allocation policies?"
MCP-RAG System:
1. RAG Server: get_company_policies(policy_type='budget')
   → Budget Allocation: Marketing gets 25% of total budget, Engineering gets 30%, Sales gets 45%
2. Response: "Budget Allocation: Marketing gets 25%, Engineering gets 30%, Sales gets 45%"

🔧 技術詳細

カスタマイズガイド

あなたの組織向け

ステップ1:サンプルデータを置き換える
  1. ビジネスデータを更新data/sample_business_data.csv を実際のデータに置き換えます。

    • 分析ツールのために列を数値にすることを確認します。
    • フィルタリングのためのカテゴリ列を追加します。
    • トレンド分析のための時間ベースの列を含めます。
  2. 知識ベースを更新data/business_knowledge.txt をあなたの組織の以下の内容に置き換えます。

    • ビジネス用語と定義
    • 会社のポリシーと手順
    • 分析ガイドラインとベストプラクティス
ステップ2:カスタム分析ツールを追加する

変更するファイルsrc/servers/business_analytics_server.py

  1. 新しいツールを追加handle_list_tools() 関数(約29行目)で、新しいツールをツールリストに追加します。

    @server.list_tools()
    async def handle_list_tools() -> ListToolsResult:
        return ListToolsResult(
            tools=[
                # ... 既存のツール (calculate_mean, calculate_std, calculate_correlation, linear_regression) ...
                Tool(
                    name="your_custom_analysis",
                    description="Your custom analysis tool",
                    inputSchema={
                        "type": "object",
                        "properties": {
                            "parameter": {"type": "string"}
                        },
                        "required": ["parameter"]
                    }
                )
            ]
        )
    
  2. ツールロジックを実装handle_call_tool() 関数(約140行目)で、対応するハンドラーを追加します。

    elif name == "your_custom_analysis":
        parameter = arguments["parameter"]
        # Your custom analysis logic here
        result = f"Custom analysis result for {parameter}"
        return CallToolResult(
            content=[TextContent(type="text", text=result)]
        )
    
ステップ3:RAG機能を拡張する

変更するファイルsrc/servers/rag_server.py

  1. 新しい知識ソースを追加load_business_knowledge() 関数(約25行目)を変更して、以下を含めます。

    • データベース接続
    • ドキュメント処理(PDF、Wordドキュメント)
    • API統合(Salesforce、HubSpotなど)
  2. 新しいRAGツールを追加handle_list_tools() 関数(約50行目)で、新しいツールを追加します。

    Tool(
        name="your_custom_rag_tool",
        description="Your custom knowledge retrieval tool",
        inputSchema={
            "type": "object",
            "properties": {
                "query": {"type": "string"}
            },
            "required": ["query"]
        }
    )
    
  3. RAGツールロジックを実装handle_call_tool() 関数(約90行目)で、ハンドラーを追加します。

    elif name == "your_custom_rag_tool":
        query = arguments["query"]
        # Your custom RAG logic here
        result = f"Custom RAG result for {query}"
        return CallToolResult(
            content=[TextContent(type="text", text=result)]
        )
    
ステップ4:LLMバックエンドを統合する

作成するファイルsrc/servers/llm_server.py(新しいファイル)

システムにはすでに、GeminiとカスタムローカルホストAPIの両方をサポートする柔軟なLLMクライアント(src/core/llm_client.py)が含まれています。

  1. 既存のLLMクライアントを使用するsrc/core/gemini_rag_agent.pyFlexibleRAGAgent はすでに以下をサポートしています。

    • Google Gemini API
    • カスタムローカルホストAPI(OpenAI互換形式)
  2. カスタムLLMサーバーを作成する(オプション):LLM操作のための専用MCPサーバーが必要な場合は、以下のように作成します。

    import asyncio
    from mcp.server import Server
    from mcp.server.stdio import stdio_server
    from mcp.types import Tool, TextContent, CallToolResult
    
    server = Server("llm-server")
    
    @server.list_tools()
    async def handle_list_tools():
        return ListToolsResult(
            tools=[
                Tool(
                    name="process_natural_language",
                    description="Convert natural language to tool calls",
                    inputSchema={
                        "type": "object",
                        "properties": {
                            "query": {"type": "string"}
                        },
                        "required": ["query"]
                    }
                )
            ]
        )
    
    @server.call_tool()
    async def handle_call_tool(name: str, arguments: dict):
        if name == "process_natural_language":
            query = arguments["query"]
            # Integrate with OpenAI, Gemini, or local models
            # Convert natural language to appropriate tool calls
            return CallToolResult(
                content=[TextContent(type="text", text=f"Processed: {query}")]
            )
    
  3. requirements.txtに追加する

    openai>=1.0.0
    google-genai>=0.3.0
    httpx>=0.24.0
    
ステップ5:新しいデータソースを追加する

変更するファイルsrc/servers/business_analytics_server.pysrc/servers/rag_server.py

  1. データベースコネクター:以下のデータベースに接続するツールを追加します。

    • PostgreSQL、MySQL、SQLite
    • MongoDB、Redis
    • データウェアハウス(Snowflake、BigQuery)
  2. API統合:ビジネスシステムに接続します。

    • CRMシステム(Salesforce、HubSpot)
    • マーケティングプラットフォーム(Google Analytics、Facebook Ads)
    • 財務システム(QuickBooks、Xero)

現在のツール実装

ビジネス分析ツールsrc/servers/business_analytics_server.py):

  • calculate_mean - 数値列の平均を計算します。
  • calculate_std - 標準偏差を計算します。
  • calculate_correlation - 変数間の関係を見つけます。
  • linear_regression - 予測モデルを構築します。
  • get_data_info - データセット情報を取得します。

RAGツールsrc/servers/rag_server.py):

  • get_business_terms - ビジネス定義を検索します。
  • get_company_policies - ポリシー情報を取得します。
  • search_business_knowledge - 一般的な知識検索を行います。

LLM統合src/core/llm_client.py):

  • FlexibleRAGAgent - GeminiとカスタムローカルホストAPIの両方をサポートします。
  • LLMClient - 両方のバックエンドのAPI通信を処理します。
  • ツール呼び出しと会話管理

モジュール式アーキテクチャの利点

モジュール式設計により、以下のことが可能になります。

  • コンポーネントを交換:他のサーバーに影響を与えることなく、任意のサーバーを交換できます。
  • 機能を追加:既存のコードを書き換えることなく、新しいツールを追加できます。
  • 独立してスケール:異なるサーバーを異なるマシンで実行できます。
  • ユースケースごとにカスタマイズ:必要なツールのみを使用できます。

拡張例

センチメント分析を追加する

作成するファイルsrc/servers/sentiment_analysis_server.py

# Create sentiment_analysis_server.py
@server.list_tool()
async def analyze_sentiment(text: str) -> CallToolResult:
    # Integrate with sentiment analysis API
    # Return sentiment scores and insights

予測を追加する

変更するファイルsrc/servers/business_analytics_server.py

# Add to handle_list_tools() function
Tool(
    name="time_series_forecast",
    description="Forecast future values using time series analysis",
    inputSchema={
        "type": "object",
        "properties": {
            "column": {"type": "string"},
            "periods": {"type": "integer"}
        }
    }
)

ドキュメント処理を追加する

作成するファイルsrc/servers/document_processor_server.py

# Create document_processor_server.py
@server.list_tool()
async def process_document(file_path: str) -> CallToolResult:
    # Extract text from PDFs, Word docs, etc.
    # Add to knowledge base

アーキテクチャ

プロジェクト構造

MCP-RAG/
├── data/
│   ├── sample_business_data.csv    # 分析用のビジネスデータセット
│   └── business_knowledge.txt      # RAG知識ベース
├── src/
│   └── servers/
│       ├── business_analytics_server.py  # 統計分析ツール
│       └── rag_server.py                 # 知識検索ツール
├── main.py                         # デモとオーケストレーションスクリプト
├── test_scenarios.py               # 会話シナリオ
├── requirements.txt                # 依存関係
└── README.md                       # このファイル

主要コンポーネント

  1. ビジネス分析サーバー:統計分析ツールを提供するMCPサーバー
  2. RAGサーバー:ビジネス知識検索用のMCPサーバー
  3. オーケストレーション層:サーバーとLLM(将来的に)の間を調整する
  4. データ層:サンプルビジネスデータと知識ベース

設定

環境変数

変数 説明 デフォルト
LLM_MODE LLMバックエンドモード:"gemini" または "custom" gemini
GEMINI_API_KEY LLM統合のためのGemini APIキー なし
GEMINI_MODEL Geminiモデル名 gemini-2.0-flash-exp
CUSTOM_API_URL カスタムローカルホストAPIのURL http://localhost:8000
CUSTOM_API_KEY カスタムAPIキー(オプション) なし

サンプルデータ

システムには以下が含まれています。

  • 四半期ごとのビジネスデータ:4四半期にわたる販売、マーケティング、エンジニアリングのメトリック
  • ビジネス知識ベース:用語、ポリシー、分析ガイドライン

🎯 ユースケース

ビジネスリーダー向け

  • ノーコード分析:ビジネスデータに関する自然言語の質問をすることができます。
  • 迅速な洞察:技術的な専門知識なしで統計分析を取得できます。
  • コンテキストを考慮したレポート:データ分析とビジネス知識を組み合わせることができます。

データチーム向け

  • モジュール式アーキテクチャ:新しい分析ツールを簡単に追加できます。
  • LLM統合:自然言語クエリ処理の準備ができています。
  • 拡張可能なフレームワーク:特定のニーズに合わせたカスタムエージェントを構築できます。

AIエンジニア向け

  • MCPプロトコル:最新のAIオーケストレーションパターンを学ぶことができます。
  • RAG実装:知識検索システムを理解できます。
  • エージェンティック設計:マルチエージェントAIワークフローを構築できます。

🚀 将来の拡張

計画されている機能

  • [ ] LLM統合:Gemini、OpenAI、またはローカルモデルと接続する
  • [ ] 自然言語クエリ:複雑なビジネス質問を処理する
  • [ ] 高度な分析:時系列分析、クラスタリング、予測
  • [ ] Webインターフェース:非技術的なユーザー向けの使いやすいダッシュボード
  • [ ] リアルタイムデータ:ライブデータソースに接続する
  • [ ] カスタム知識ベース:会社固有のドキュメントをアップロードする

統合の可能性

  • ローカルLLM APILocal LLM API を使用してオープンソースモデルを使用する
  • データベースコネクター:SQLデータベース、データウェアハウスに接続する
  • API統合:Salesforce、HubSpot、Google Analytics
  • ドキュメント処理:PDF、DOCX、メール分析

🤝 コントリビューション

これはエージェンティックAIシステムを構築するための基礎です。コントリビューションを歓迎します。

  • 新しい分析ツール:統計手法、MLモデルを追加する
  • 知識ベースの拡張:ビジネスドメイン、業界固有のコンテンツを追加する
  • LLM統合:異なるAIモデルのサポートを追加する
  • ドキュメント:チュートリアル、ユースケース、ベストプラクティスを追加する

📄 ライセンス

MITライセンス - 自由に使用し、独自のプロジェクトで変更してください!

🔗 関連プロジェクト


あなた独自のエージェンティックAIシステムを構築準備はできていますか? この基礎から始めて、特定のニーズに合わせて拡張してください。モジュール式設計により、新しい機能を追加しながらクリーンなアーキテクチャを維持することが容易です。

#AgenticAI #MCP #RAG #BusinessAnalytics #OpenSourceAI

代替品

K
Klavis
Klavis AIはオープンソースプロジェクトで、Slack、Discord、Webプラットフォームで簡単に使えるMCP(モデルコンテキストプロトコル)サービスを提供します。レポート生成、YouTubeツール、ドキュメント変換などのさまざまな機能があり、非技術ユーザーと開発者がAIワークフローを使用するのをサポートします。
TypeScript
6.7K
5ポイント
D
Devtools Debugger MCP
Node.jsデバッガーMCPサーバーは、Chrome DevToolsプロトコルに基づく完全なデバッグ機能を提供します。ブレークポイントの設定、ステップ実行、変数のチェック、式の評価などが含まれます。
TypeScript
5.4K
4ポイント
S
Scrapling
Scraplingは適応型ウェブページのスクレイピングライブラリで、ウェブサイトの変化を自動的に学習し、要素を再配置します。複数のスクレイピング方法とAI統合をサポートし、高性能な解析と開発者に優しい体験を提供します。
Python
8.9K
5ポイント
M
Mcpjungle
MCPJungleは自ホスト型のMCPゲートウェイで、複数のMCPサーバーを集中的に管理および代理し、AIエージェントに統一されたツールアクセスインターフェースを提供します。
Go
0
4.5ポイント
N
Nexus
NexusはAIツール集約ゲートウェイで、複数のMCPサーバーとLLMプロバイダーの接続をサポートし、統一されたエンドポイントを通じてツール検索、実行、およびモデルルーティング機能を提供し、セキュリティ認証とレート制限をサポートします。
Rust
0
4ポイント
A
Apple Health MCP
SQLでAppleの健康データをクエリするためのMCPサーバーで、DuckDBをベースにした効率的な分析をサポートし、自然言語クエリと自動レポートの生成が可能です。
TypeScript
7.0K
4.5ポイント
Z
Zen MCP Server
Zen MCPは多モデルAI協調開発サーバーで、ClaudeやGemini CLIなどのAIコーディングアシスタントに強化されたワークフローツールとモデル間のコンテキスト管理を提供します。これは複数のAIモデルのシームレスな協調をサポートし、コードレビュー、デバッグ、リファクタリングなどの開発タスクを実現し、異なるワークフロー間で会話のコンテキストを維持することができます。
Python
13.1K
5ポイント
O
Opendia
OpenDiaはオープンソースのブラウザ拡張ツールで、AIモデルが直接ユーザーのブラウザを制御でき、既存のログイン状態、ブックマークなどのデータを利用して自動化操作を行います。複数のブラウザとAIモデルをサポートし、プライバシー保護に配慮しています。
JavaScript
8.7K
5ポイント
C
Context7
Context7 MCPは、AIプログラミングアシスタントにリアルタイムのバージョン固有のドキュメントとコード例を提供するサービスで、Model Context Protocolを通じてプロンプトに直接統合され、LLMが古い情報を使用する問題を解決します。
TypeScript
42.4K
4.7ポイント
E
Edgeone Pages MCP Server
EdgeOne Pages MCPは、MCPプロトコルを通じてHTMLコンテンツをEdgeOne Pagesに迅速にデプロイし、公開URLを取得するサービスです。
TypeScript
15.1K
4.8ポイント
G
Gmail MCP Server
Claude Desktop用に設計されたGmail自動認証MCPサーバーで、自然言語でのやり取りによるGmailの管理をサポートし、メール送信、ラベル管理、一括操作などの完全な機能を備えています。
TypeScript
12.3K
4.5ポイント
B
Baidu Map
認証済み
百度マップMCPサーバーは国内初のMCPプロトコルに対応した地図サービスで、地理コーディング、ルート計画など10個の標準化されたAPIインターフェースを提供し、PythonとTypescriptでの迅速な接続をサポートし、エージェントに地図関連の機能を実現させます。
Python
24.2K
4.5ポイント
G
Gitlab MCP Server
認証済み
GitLab MCPサーバーは、Model Context Protocolに基づくプロジェクトで、GitLabアカウントとのやり取りに必要な包括的なツールセットを提供します。コードレビュー、マージリクエスト管理、CI/CD設定などの機能が含まれます。
TypeScript
12.0K
4.3ポイント
U
Unity
認証済み
UnityMCPはUnityエディターのプラグインで、モデルコンテキストプロトコル (MCP) を実装し、UnityとAIアシスタントのシームレスな統合を提供します。リアルタイムの状態監視、リモートコマンドの実行、ログ機能が含まれます。
C#
14.8K
5ポイント
M
Magic MCP
Magic Component Platform (MCP) はAI駆動のUIコンポーネント生成ツールで、自然言語での記述を通じて、開発者が迅速に現代的なUIコンポーネントを作成するのを支援し、複数のIDEとの統合をサポートします。
JavaScript
14.5K
5ポイント
S
Sequential Thinking MCP Server
MCPプロトコルに基づく構造化思考サーバーで、思考段階を定義することで複雑な問題を分解し要約を生成するのに役立ちます。
Python
20.1K
4.5ポイント
AIBase
智啓未来、あなたの人工知能ソリューションシンクタンク
© 2025AIBase