MCP: Multi-Agent Control Point
🧠 MCP:多代理控制点
该项目实现了一个多代理服务器,将用户问题路由到 LLM 模型或专门的代理(例如日期、位置、天气或技术专家)。包括使用 Streamlit 构建的简单 Web 界面,以方便使用。
🚀 功能
🌐 使用 FastAPI 的后端
🧠 专业代理(日期、地点、天气、法学硕士专家)
🧩 具有继承性的可扩展和模块化代理系统
⚙️ 通用继承
AgenteBase,用于统一错误和响应处理🤖 代理之间相互协作的智能逻辑
🖥️ Streamlit 的可视化界面(GUI)
🐳 Docker 容器,易于部署
🔌 客户端-服务器通信可用于本地或远程网络
Related MCP server: Time-MCP
📁 项目结构
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 MCP2.创建Streamlit的配置文件
在gui目录中,创建文件:
gui/.streamlit/secrets.toml内容如下:
server_url = "http://backend:8000/process"3. 使用 Docker Compose 运行
docker-compose up --build这将构建并提升两个容器:
后端位于
http://localhost:8000图形界面
http://localhost:8501
🌍 从另一台机器访问(可选)
确保正确公开端口(
8000、8501)。在
secrets.toml中使用服务器机器的 IP 而不是localhost。您还可以设置自定义 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}指定模式来检测相关问题。
实现
agente(),返回一个包含成功键和数据或错误的字典。代理将自动使用指示的 LLM 根据您的数据生成自然响应。
⚠️ 重要技术说明
所有代理都继承自 AgenteBase,它管理:
标准误差
通过 LLM 将数据转换为自然响应
agent() 方法必须返回一个结构化字典。
每个代理指定要使用哪个 LLM 模型(
llm_simple或llm_experto)。
📄 许可证
该项目已获得 MIT 许可。
🙋♂️ 作者
由 Alejandro Gómez Sierra 开发。
Related MCP Connectors
LLM Orchestration Agent (Langgraph)
LLM Orchestration Agent (Langchain)
LLM Orchestration Agent (Opentelemetry Api)
LLM Orchestration Agent (Opentelemetry Instrumentation Fastapi)
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn intermediate agent server that enhances LLMs with weather data capabilities using the Model Context Protocol (MCP) framework, enabling retrieval of real-time weather information.-
- FlicenseNot gradedqualityDmaintenanceAn agentic AI system that answers time-related questions by calling a time API tool and general questions using an LLM, accessible through a simple chat interface.-
- FlicenseNot gradedqualityDmaintenanceA multi-server implementation that uses OpenAI's LLM to orchestrate multiple tool servers providing web search, weather lookup, random facts, and PostgreSQL database querying capabilities.-
- AlicenseCqualityDmaintenanceA server that transforms a standard Language Model into a dynamic multi-agent system where the model simulates both a Conductor (project manager) and Experts (specialized agents) to tackle complex problems through a collaborative workflow.234Apache 2.0