MCP Server

Un marco para la ejecución de comandos impulsada por IA y un sistema de herramientas basado en complementos. Puede ejecutarse como un servicio independiente o integrarse en otros proyectos para exponer una API coherente que permita invocar herramientas y gestionar tareas.

Documentación

MCP Server

El MCP Server proporciona un marco integral para la ejecución de comandos impulsada por IA, herramientas basadas en plugins y funciones avanzadas que incluyen ejecución síncrona de scripts, evaluación segura de Python y gestión del conocimiento. Puede ejecutarse como un servicio independiente o integrarse en otros proyectos para exponer una API consistente para invocar herramientas y gestionar tareas.

Estructura del Proyecto

  • mcp_tools/ – Marco de plugins y herramientas integradas con gestión de concurrencia mejorada
  • server/ – Implementación del servidor Starlette con endpoints HTTP/SSE e interfaz de DataFrame
  • plugins/ – Plugins extensibles (Azure DevOps, herramientas Git, indexación de conocimiento, Kusto, CircleCI)
  • config/ – Gestor de entorno y ayudantes de configuración
  • utils/ – Utilidades principales (trabajos asíncronos, interfaz de grafo, gestión de memoria, almacén vectorial, PyEval)
  • scripts/ – Instalación, scripts de utilidad y flujos de trabajo de envío automatizados
  • assets/ – Imágenes y recursos de documentación

Instalación

El proyecto utiliza uv para la gestión de dependencias. Instala las dependencias con:

uv sync

O instala en modo de desarrollo usando pip:

pip install -e .

Configuración del Entorno

La configuración está controlada por archivos .env. Crea uno a partir de la plantilla y edítalo con tus ajustes:

cp config/env.template .env

Las variables importantes incluyen rutas de repositorio (GIT_ROOT), detalles de Azure Repo (AZREPO_ORG, AZREPO_PROJECT, AZREPO_REPO) y PRIVATE_TOOL_ROOT opcional para la configuración de herramientas externas. El gestor de entorno carga automáticamente los archivos .env desde la raíz del repositorio, el directorio actual y tu directorio personal.

Accede a la configuración en el código mediante:

from config import env_manager
env_manager.load()
root = env_manager.get_git_root()

Consulta docs/config_overview.md para más información.

Ejecutar el Servidor

Después de instalar las dependencias y configurar .env, inicia el servidor con:

uv run server/main.py

Conéctate al endpoint SSE en http://0.0.0.0:8000/sse o usa las rutas adicionales en server/api.py. Los endpoints de trabajos en segundo plano están documentados en docs/background_jobs_api.md.

Docker

Se incluye un Dockerfile para ejecutar el servidor en un contenedor. Construye la imagen con:

docker build -t mcp-server .

Luego inicia el contenedor exponiendo el puerto 8000:

docker run -p 8000:8000 mcp-server

Consulta docs/docker.md para más detalles.

Archivos de Configuración

El servidor carga prompts y definiciones de herramientas desde archivos YAML:

  • server/prompts.yaml
  • server/tools.yaml

Las anulaciones privadas pueden colocarse en server/.private/ o en una carpeta señalada por PRIVATE_TOOL_ROOT. Los archivos se resuelven en este orden:

  1. PRIVATE_TOOL_ROOT
  2. server/.private/
  3. Valores predeterminados en server/

Sistema de Herramientas

Las herramientas son plugins modulares registrados a través de mcp_tools. Las utilidades integradas incluyen:

  • Ejecutor de Comandos – Ejecución de comandos síncrona y asíncrona con soporte de ejecución hasta completar
  • Automatización de Navegador – Integración con Playwright para interacción web
  • PyEval – Evaluación segura de expresiones Python usando RestrictedPython
  • Servicio de DataFrame – Análisis y visualización de datos con interfaz web
  • Ayudantes de Tiempo – Utilidades basadas en tiempo y programación
  • Cargador de Herramientas YAML – Definiciones dinámicas de herramientas desde archivos YAML

Los plugins adicionales en el directorio plugins/ incluyen integración con Azure DevOps, operaciones Git, indexación de conocimiento, consultas Kusto y flujos de trabajo CircleCI. Consulta mcp_tools/docs/creating_tools.md para detalles sobre cómo crear herramientas personalizadas.

La interfaz web ofrece paneles completos:

  • /tools – Explora todas las herramientas registradas y ve sus detalles
  • /dataframes – Gestión y visualización interactiva de DataFrames
  • /knowledge – Exploración y gestión del grafo de conocimiento
  • /pyeval – Interfaz segura de evaluación de Python

Gestión de Plugins

Los plugins externos pueden instalarse declarándolos en plugin_config.yaml. Cada entrada debe especificar un plugin_repo en la forma owner/repository y un sub_dir opcional si el plugin se encuentra en una subcarpeta. Ejemplo:

plugins:
   - plugin_repo: "github_owner/repo"
     sub_dir: "path/to/plugin"
     type: "python"

Ejecuta la herramienta mcp_admin con la operación refresh_plugins para clonar o actualizar plugins según esta configuración. Pasa force=true para eliminar todos los plugins instalados antes de reinstalarlos.

Ejecutar Pruebas

Ejecuta todos los conjuntos de pruebas con:

scripts/run_tests.sh

O ejecuta pytest directamente en mcp_tools/tests, plugins/*/tests o server/tests.

Características Clave (v0.2.0)

  • Ejecución hasta Completar – Ejecución síncrona de scripts con captura integral de salida
  • Seguridad PyEval – Evaluación segura de expresiones Python usando RestrictedPython
  • Interfaz de DataFrame Mejorada – Interfaz web receptiva para análisis y visualización de datos

Dónde Continuar

  1. Explora la documentación en mcp_tools/docs/ y docs/ para aprender sobre creación de herramientas, inyección de dependencias y funciones avanzadas.
  2. Revisa los archivos de configuración de ejemplo en server/ e intenta agregar tus propias herramientas.
  3. Explora los plugins en el directorio plugins/ para implementaciones concretas.
  4. Consulta el directorio utils/ para utilidades avanzadas como almacenes vectoriales, interfaces de grafo y gestión de memoria.
  5. Consulta el CHANGELOG.md para notas de versión detalladas y actualizaciones recientes.

Integración con Editores

Editores como Cursor/VSCode pueden usar el endpoint SSE agregando lo siguiente a tu configuración:

{
  "mcpServers": {
    "mymcp-sse": { "url": "http://0.0.0.0:8000/sse" }
  }
}

Capturas de Pantalla de Demostración

MCP Server Configuration MCP Server async command execution