🧠 MCP: マルチエージェントコントロールポイント
このプロジェクトでは、ユーザーの質問を LLM モデルまたは専門エージェント (日付、場所、天気、技術専門家など) にルーティングするマルチエージェント サーバーを実装します。使いやすさを考慮して Streamlit で構築されたシンプルな Web インターフェイスが含まれています。
🚀 機能
🌐 FastAPI を使用したバックエンド
🧠 専門エージェント(日付、場所、天気、LLM エキスパート)
🧩 継承機能を備えた拡張可能なモジュール型エージェントシステム
⚙️ エラーとレスポンスの統一的な処理のための共通継承AgenteBase
🤖 エージェント同士が協力し合うためのスマートなロジック
🖥️ Streamlit のビジュアルインターフェース (GUI)
🐳 簡単に導入できる Docker コンテナ
🔌 ローカルまたはリモートネットワークに対応したクライアント・サーバー通信
Related MCP server: Brightsy MCP Server
📁 プロジェクト構造
MCP/
├── core/
│ ├── ollama_wrapper.py # Encapsula la lógica para interactuar con modelos LLM en Ollama
│ ├── context_loader.py # Carga contexto adicional desde base de datos u otras fuentes
│ └── router_llm.py # Router inteligente que decide qué agente usar en base a la consulta
├── agents/ # Carpeta que contiene todos los agentes disponibles del sistema
├── server/
│ ├── mcp_server.py # Punto central que gestiona los agentes registrados y el procesamiento de mensajes
│ └── api.py # Define la API REST usando FastAPI para comunicación con la GUI u otros clientes
├── gui/
│ ├── app.py # Aplicación Streamlit que actúa como interfaz gráfica del sistema
│ └── .streamlit/
│ └── secrets.toml # Archivo de configuración que contiene la URL del backend para la GUI
├── utils/
│ ├── db_utils.py # Funciones auxiliares para conectarse y consultar la base de datos SQLite
│ ├── agente_base.py # Clase base AgenteBase, común a todos los agentes personalizados
│ └── json_parser.py # Utilidad para dividir respuestas JSON en partes más manejables
├── database/
│ ├── context.db # Base de datos SQLite con información contextual para los agentes o el LLM
│ ├── comprobar_db.py # Script que valida la existencia y consistencia de la base de datos
│ └── create_db.py # Script para generar y poblar la base de datos desde cero
├── config.py # Archivo central de configuración del sistema (rutas, modelos, flags, etc.)
├── requirements.txt # Lista de dependencias de Python necesarias para ejecutar el proyecto
├── Dockerfile.backend # Dockerfile para construir el contenedor del backend (API + lógica de agentes)
├── Dockerfile.frontend # Dockerfile para construir el contenedor de la interfaz Streamlit
└── docker-compose.yml # Archivo para levantar los servicios frontend y backend de forma conjunta
⚙️ 要件
🧪 クイックインストール
1. リポジトリをクローンする
git clone https://github.com/tu-usuario/MCP.git
cd MCP
2. Streamlitの設定ファイルを作成する
guiディレクトリ内に次のファイルを作成します。
gui/.streamlit/secrets.toml
以下の内容が含まれます。
server_url = "http://backend:8000/process"
3. Docker Composeで実行する
docker-compose up --build
これにより、2 つのコンテナが構築され、持ち上げられます。
🌍 別のマシンからのアクセス(オプション)
ポート8501正しく公開されていることを確認してください ( 8000 )。
secrets.tomlではlocalhost代わりにサーバーマシンの IP を使用します。
クロスホスト アクセス用にカスタム Docker ネットワークを設定することもできます。
📦 制作用
別のインターフェースと統合する場合は、バックエンドのみを実行できます。
docker build -f Dockerfile.backend -t mcp_backend .
docker run -p 8000:8000 mcp_backend
✨ 使用例
Web インターフェースでは、次のような質問を入力できます。
¿Qué día es hoy?
¿Dónde estoy?
¿Qué clima hace?
Explícame qué es Python
アプリは質問に直接回答するか、エージェントに委任するかを決定します。
🛠️ エージェント募集中
エージェント | 関数 |
日付 | 現在の日付と時刻を返します |
位置 | IPアドレスで都市と国を検出します |
気候 | 現在の場所の天気を返します |
🔄エージェント間の相互作用
天気エージェントは、天気を照会する前に位置情報エージェントを直接使用して地理座標 ( lat 、 lon ) と都市を決定するようになりました。これにより、ユーザーの実際の位置に合わせた応答が可能になります。これにより、エージェント間のモジュール性とコラボレーションが向上します。
🧩 新しいエージェントを作成する方法
AgenteBase から継承するクラスを作成します。
from agentes.base import AgenteBase
class AgenteEjemplo(AgenteBase):
patrones = [r"expresiones.*clave", r"otra.*forma.*de.*preguntar"]
def agente(self) -> dict:
datos = {"respuesta": "Soy un agente de ejemplo"}
return {"success": True, "data": datos}
関連する質問を検出するためのパターンを指定します。
キー success とデータまたはエラーを含む辞書を返すagente()を実装します。
エージェントは指定された LLM を自動的に使用して、データに基づいて自然な応答を生成します。
⚠️ 重要な技術的注意事項
すべてのエージェントは AgenteBase から継承され、以下を管理します。
agent() メソッドは構造化された辞書を返す必要があります。
各エージェントは、使用する LLM モデル ( llm_simpleまたはllm_experto ) を指定します。
📄 ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています。
🙋♂️ 著者
Alejandro Gómez Sierra によって開発されました。