Skip to main content
Glama
Gomezzz299

MCP: Multi-Agent Control Point

by Gomezzz299

🧠 MCP: многоагентная точка управления

В этом проекте реализован многоагентный сервер, который направляет вопросы пользователей в модель LLM или специализированным агентам (например, дата, местоположение, погода или технический эксперт). Включает простой веб-интерфейс, созданный с помощью Streamlit для удобства использования.


🚀 Особенности

  • 🌐 Бэкэнд с 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

Это позволит построить и поднять два контейнера:

  • Бэкэнд на http://localhost:8000

  • Графический интерфейс по адресу http://localhost:8501


🌍 Доступ с другого компьютера (опционально)

  1. Убедитесь, что вы правильно открыли порты ( 8000 , 8501 ).

  2. Используйте IP-адрес серверной машины вместо localhost в secrets.toml .

  3. Вы также можете настроить собственные сети Docker для кросс-хостового доступа.


📦 Для производства

Вы можете запустить только бэкэнд, если хотите интегрировать его с другим интерфейсом:

docker build -f Dockerfile.backend -t mcp_backend .
docker run -p 8000:8000 mcp_backend

✨ Пример использования

В веб-интерфейсе вы можете вводить такие вопросы, как:

  • ¿Qué día es hoy?

  • ¿Dónde estoy?

  • ¿Qué clima hace?

  • Explícame qué es Python

Приложение решит, отвечать ли на вопрос напрямую или делегировать это агенту.


🛠️ Доступны агенты

Агент

Функция

ДАТА

Возвращает текущую дату и время

РАСПОЛОЖЕНИЕ

Определяет город и страну по IP

КЛИМАТ

Возвращает погоду в текущем местоположении


🔄 Взаимодействие между агентами

Агент погоды теперь напрямую использует агент местоположения для определения географических координат ( lat , lon ) и города перед запросом погоды, что позволяет получать ответы, соответствующие фактическому местоположению пользователя. Это улучшает модульность и взаимодействие между агентами.


🧩 Как создать нового агента

  1. Создайте класс, наследующий от 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}
  1. Определяет шаблоны для обнаружения релевантных вопросов.

  2. Реализует функцию agente() , которая возвращает словарь с ключевыми данными об успехе и ошибке.

  3. Агент автоматически использует указанный LLM для генерации естественных ответов на основе ваших данных.


⚠️ Важные технические примечания

  • Все агенты наследуют от AgenteBase, который управляет:

    • Стандартные ошибки

    • Преобразование данных в естественный ответ с помощью LLM

  • Метод agent() должен возвращать структурированный словарь.

  • Каждый агент указывает, какую модель LLM использовать ( llm_simple или llm_experto ).

📄 Лицензия

Данный проект лицензирован по лицензии MIT.


🙋‍♂️ Автор

Разработано Алехандро Гомесом Сьеррой.

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Gomezzz299/MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server