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.yamlserver/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:
PRIVATE_TOOL_ROOTserver/.private/- 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
- Explora la documentación en
mcp_tools/docs/ydocs/para aprender sobre creación de herramientas, inyección de dependencias y funciones avanzadas. - Revisa los archivos de configuración de ejemplo en
server/e intenta agregar tus propias herramientas. - Explora los plugins en el directorio
plugins/para implementaciones concretas. - Consulta el directorio
utils/para utilidades avanzadas como almacenes vectoriales, interfaces de grafo y gestión de memoria. - Consulta el
CHANGELOG.mdpara 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
