bourne mcp
Project Bourne
Project Bourne es una infraestructura de código abierto de ejecución y procedencia para cargas de trabajo científicas y de ingeniería reproducibles.
Planifica y ejecuta experimentos computacionales en equipos locales, GPUs, Slurm y PBS, a la vez que conserva entradas, salidas, contexto de ejecución, linaje de artefactos, telemetría, verificación e historial necesarios para reproducir un resultado.
Está diseñado para investigadores, estudiantes desde el grado hasta el doctorado, profesorado, ingenieros de investigación, científicos computacionales, usuarios de software científico y equipos de computación científica, tanto en el ámbito académico, como en la investigación pública y en la industria I+D.
Inicio rápido
Humano
La CLI para humanos está disponible hoy:
python -m pip install bourneprov
bourne run python examples/demo.py
bourne list
bourne show @1
# Or execute an ExecutionRequest v1 document:
bourne execute --request bourne.jsonAgente / MCP
Los puntos de entrada de agente y MCP de la v0.6.0 son públicos:
python -m pip install "bourneprov[mcp]==0.6.0"
npx -y @project-bourne/mcp@0.6.0Para desarrollo desde la copia del código fuente, en lugar de eso:
python -m pip install -e ".[mcp]"
bourne mcpRelated MCP server: heddle
Por qué Bourne
Bourne encapsula ejecutables arbitrarios sin necesidad de cambiar el programa científico. Es local-first y agnóstico respecto al framework: Python, solvers compilados, Julia, programas MPI y otros comandos usan el mismo modelo de experimento duradero.
bourne run bash -c "echo hello"
bourne run ./solver case.yaml
bourne run julia simulation.jl
bourne run mpirun -np 64 ./solverLos stdout y stderr del programa permanecen visibles durante la ejecución y se conservan en el registro del experimento.
Arquitectura
Bourne Core es responsable de la ejecución determinista, la planificación, el almacenamiento y la procedencia. Los humanos pueden usarlo mediante la CLI o servicios de Python; los agentes pueden usar los mismos servicios a través del adaptador opcional de MCP:
Project Bourne Core
│
┌────────────┼────────────┐
│ │ │
CLI SDK MCP
humans agentsLa interfaz de agente es una vía opcional de acceso, no la identidad de producto de Bourne. MCP funciona sin la Skill portable, y Bourne no contiene ningún LLM integrado.
Integración de agente y MCP
El servidor stdio local canónico es bourne mcp. La identidad oficial estable del Registro MCP es io.github.KozakHou/project-bourne, y la Skill de agente portable está en skills/project-bourne. El paquete npm v0.6.0 y la entrada correspondiente del Registry son públicos.
Un agente compatible con MCP puedes convertir una solicitud explícita como "Ejecuta esta simulación con cuatro GPUs y conserva la procedencia" en una ExecutionRequest v1, pedir a Bourne que la planifique, mostrar la resolución determinista y ejecutar el plan inmutable cuando se haya establecido la intención de ejecución. Bourne no interpreta lenguaje natural sin restricciones y no llama a otro modelo.
La vía de agente es deliberadamente bifásica:
agent intent → ExecutionRequest v1 → bourne_plan → inspect → bourne_execute_planLa planificación nunca ejecuta la carga de trabajo ni descubre infraestructura de forma silenciosa. Los objetivos ambiguos y los hechos desconocidos permanecen sin resolver. Las anotaciones MCP son sugerencias de UX del host: Bourne Core sigue aplicando planes inmutables, argv exacto, propiedad de jobs del planificador, semántica de artefactos y procedencia. Consulta Integración con MCP y Guía de agentes.
Solicitudes de ejecución
Una ejecución ahora puede describirse en una solicitud JSON delimitada y versionada:
{
"kind": "bourne.execution-request",
"version": 1,
"command": ["python", "train.py", "--case", "case1"],
"artifacts": {
"inputs": ["config.yaml"],
"outputs": ["result.h5"]
},
"resources": {"cpus": 8, "gpus": 1, "walltime": "2h"},
"execution": {"backend": "direct"},
"verification": {
"checks": [
{"type": "output_exists", "path": "result.h5"},
{"type": "output_min_bytes", "path": "result.h5", "min_bytes": 1024}
]
}
}Guárdalo como bourne.json y usa la misma intención para planificar o ejecutar:
bourne request validate bourne.json
bourne request show bourne.json
bourne discover
bourne plan --request bourne.json
bourne execute --request bourne.jsonCrea una solicitud mínima sin ejecutar ni descubrir nada:
bourne request init --output bourne.json -- python train.py
bourne request schema > execution-request-v1.schema.jsonLos comandos actuales basados en flags siguen siendo compatibles. Se compilan en el mismo pipeline ExecutionRequest → WorkloadSpec → ExecutionPlan, en lugar de una implementación en paralelo:
bourne execute --backend direct --cpus 2 --output result.txt -- python script.pyPara un archivo de solicitud, una working_directory relativa se resuelve desde el directorio del archivo de solicitud. Los artefactos declarados se resuel then a partir de ese directorio de trabajo científico. Bourne conserva los valores léxico y derivado del directorio de trabajo, y no expande $HOME, no evalúa sintaxis de shell, no importa código del proyecto ni ejecuta nada mientras analiza o planifica.
Las referencias parentales siguen la misma regla de preservación de la intención. Una solicitud puede usar latest, @N, un nombre único o un ULID completo. Bourne conserva ese valor solicitado y registra aparte el ULID canónico del padre usado por la carga de trabajo compilada.
La telemetría resumida está habilitada por defecto y usa hechos ya capturados: wall time, recuentos de bytes UTF-8 de stdout/stderr, totales de bytes de artefactos conocidos, recursos solicitados, asignación observada y tiempos de cola del scheduler cuando los timestamps lo permiten. "telemetry": {"mode": "off"} desactiva el resumen. Los hechos que faltan siguen estando disponibles, nunca son cero.
Las comprobaciones iniciales de verificación determinista son output_exists, output_min_bytes, y output_sha256. Evalúan solo los registros Artifact de salida como capturados. La verificación se guarda aparte del estado de proceso: un experimento puede estar completed mientras la verificación está failed o unknown. Estas comprobaciones establecen hechos sobre un artefacto, no validez científica general. Consulta Solicitudes de ejecución , telemetría y verificación para saber el contrato exacto y los límites de seguridad.
Planificación y ejecución
Project Bourne v0.4.0 añade una capa de planificación duradera sobre los inventarios v0.3:
bourne discover
bourne plan --backend direct -- python examples/demo.py
bourne execute --backend direct -- python examples/demo.py
bourne execution list
bourne execution show @1bourne plan nunca ejecuta el comando científico ni hace discovery. Crea un WorkloadSpec independiente del framework, compara sus requisitos implícitos y explícitos con un inventario existing, explica cada candidato y conserva un ExecutionPlan inmutable solo cuando la selección no sea ambigua. Usa restricciones de recursos y colocación cuando sea necesario:
bourne plan \
--backend slurm \
--target gpu \
--cpus 16 \
--gpus 4 \
--nodes 1 \
--memory 64G \
--walltime 2h \
-- ./solver case.yamlEjecuta un plan de Slurm seleccionado y luego inspecciona o espera el intento de ejecución resultante:
bourne execute --plan @1
bourne execution show @1
bourne execution wait @1Mientras un job grabado sigue activo, bourne execution cancel @1 solicita la cancelación de esa task gestionada por Bourne. El mismo modelo de planificación y ciclo de vida admite --backend pbs.
La ejecución directa reutiliza la maquinaria existente de Bourne: live output, process group, artifacts, lineage y provenance. Los planes Slurm y PBS usan un worker de Bourne autónomo preparado con el plan. El worker hace pre notificación y registra el host y the experimental experiment actualmente asignados: el controlador del lado de acceso importejec sudario JSON limitado de forma transaccional. No se requiere SSH a nodos de cómputo ni paquete bourneprov preinstalado, aunque la vitacora de cómputo debe provide Python 3 y visibilidad de los directorios de apoyo y de trabajo.
Enviar no es un experimento, la finalización del scheduler no es un éxito científico, y los recursos solicitados no son recursos asignados. Bourne registra estados duraderos por separado. La cancelación acepta una referencia de ejecución de Bourne, no un ID arbitrario de job del scheduler, y comprueba la identidad del que envía. Consulta Planificación de cargas de trabajo y ejecución con scheduler para conocer el modelo exacto, el límite de seguridad y las limitaciones actuales.
Descubrimiento de sitios de compute (v0.3.0)
Bourne puede tomar una instantánea local e inmutable de la superficie de ejecución visible para tu identidad actual:
bourne discover
bourne inventory
bourne inventory --find python
bourne inventory --jsonEl descubrimiento abarca la identidad y el target de acceso actual, rutas de almacenamiento relevantes permitidas, contextos de ejecución directa, ejecutables PATH genéricos, contextos coConda/virtualenv/container/module, capacidades seguras del sistema, historial de Bourne y resúmenes de clase de destino Slurm/PBS de solo lectura cuando existan. Un ejecutable desconocido se registra de manera genérica sin ser ejecutado. Laptops, estaciones de trabajo de escritorio y GPU, máquinas personales clase DGX, sistemas de laboratorio compartidos y sitios HPC respaldados por queues son todos sitios de compute válidos. Una máquina sin scheduler está completa por sí misma.
El descubrimiento es observacional: un ejecutable no es validado para compatibilidad con la carga de trabajo, una partición del work o ejecución visible no es prueba, no es una autorización de envío, y una hint de rol de almacenamiento no es una política de retención ni de backups. Los inventarios permanecen locales. Los providers no atraviesan los home de otros usuarios, no recorren storage compartido, no inspeccionan credenciales SSH ni secretos de contenedores, no evacúan variables de entorno arbitrarias, no hacen SSH a nodos de cómputo, no envían ni cancelan trabajos del scheduler, ni modifican entornos. Consulta Descubrimiento de sitios de cómputo para conocer la topología exacta, las evidencias, los límites y las semillas de seguridad.
Procedencia, Artefactos y Linaje
Project Bourne v0.2 añade huellas explícitas de entrada/salida, una relación mínima derived_from, observaciones seguras de contexto de ejecución y el rastreo de artefactos. Ejecuta el ejemplo determinista desde un directorio aislado:
cp -R examples/provenance /tmp/bourne-provenance-demo
cd /tmp/bourne-provenance-demo
export BOURNE_DB="$PWD/bourne.sqlite3"
bourne run \
--input config_A.json \
--output result_A.csv \
-- python demo_simulation.py config_A.json result_A.csv
bourne run \
--derived-from @1 \
--input config_B.json \
--input result_A.csv \
--output result_B.csv \
-- python demo_simulation.py config_B.json result_B.csv
bourne show @2
bourne show @1
bourne trace result_B.csvLas entradas se marcan con huellas antes de la ejecución. Las salidas se marcadas despues, incluyendo las esperanzas que faltan después de una ejecución falllastid o interrumpida. SHA-256 se lee en bloques; no se notifica ni copia ni exporta aplicaciones de archivos declarados.
Una ruta no es una identidad de artefacto. Cada captura tiene un ULID único, mientras que SHA-256 distingue las versiones del contenido. Cuando un historial puede identificar varias versiones y el contenido actual del archivo no las puede distinguir, bourne trace muestra candidatos y rechaza a interpretar. Ver Artifacts, lineage, and execution context para la semántica exacta de captura, rastreo, migración y seguridad.
Referencias de experimentos amigables para humans
Las identidades canónicas de experimentos siguen siendo ULIDs de 26 caracteres. Los comandos aceptan a furtivo, use an experiment also discover:
01M02GDJEW... case-insensitive unique ULID prefix
latest most recent experiment
@1 most recent experiment
@2 second-most-recent experiment
@3 third-most-recent experimentPor ejemplo:
bourne show latest
bourne show 01M02GDJEW
bourne compare @2 @1
bourne run --derived-from @1 -- ./solver case_B.yamlBourne nunca adivina si un prefijo es ambiguo. bourne list muestra un prefijo de 10 caracteres por defecto; bourne list --full-id muestra los IDs canónicos.
Autocompletado de shell
Los candidatos de autocompletado incluyen IDs canónicos de experimento, latest, y referencias recientes @N. Activar la completado para la sesión de shell actual con:
# Bash
source <(bourne completion bash)
# Zsh
source <(bourne completion zsh)
# Fish
bourne completion fish | sourceO auto para bourne show y bourne compare consulta la base de datos configurada actual, incluido BOURNE_DB.
Lo que Bourne registra
Cada experimento registra:
estado de ejecución (
completed,failedointerrupted), vector de argumentos exacto, working directory, marcas de tiempo UTC, duración y código de salida;.* stdout/stderr en vivo y capturados;* raíz del repositorio Git, commit, rama y dirty state si existe;sistema operativo, arquitectura, nombre de host, CPU y metadatos runtime de NVIDIA opcional;. * rutas de ejecutables solicitadas y resueltas, más indicaciones de contexto virtualenv/Conda estrictamente allow-listed;
versiones de artefactos de entrada/salida declarados y herencia del linaje.
Los recolectores decaen con gracia. La falta de Git, herramientas de NVIDIA, GPUs, pistas de entorno o resolución sin errores no hace fallar la carga. Las variables de entorno arbitrarias no persisteten, así que las credenciales y tokens no estén capturados por defecto.
Los comandos fallidos e interrumpidos se guardan antes de que Bourne devuelva su semántica de proceso:
bourne run --output expected.csv -- python -c "raise RuntimeError('boom')"
bourne show @1En sistemas POSIX, Bourne usa un grupo específico de proceso de proceso para suplente: normalmente termine los valores y sin to other procesos no relacionados.
La ejecución exitosa no es verificación, y la verificación determinista de artefactos no es validación científica general. Bourne guarda estos estados por separado.
Almacenamiento local y migración
La ruta ruta por defecto de SQLite es:
~/.local/share/bourne/experiments.sqlite3Usar una base específica del Proyecto:
export BOURNE_DB=/path/to/experiments.sqlite3Abrir una base de data v0.1.1, v0.2.0, v0.3.0 o v0.4.0 con este release candidate ejecuta migraciones transaccionales deterministas hasta el esquerma 5. Los experimentos, artefactos, linaje, inventarios, workloads, planes, ejecuciones, jobs de scheduler, asignaciones, allocaciones, socias y enlaces de experimento siguen siendo legibles. La migración no echa creación de ExecutionRequest histórico de v0.4. Los esquemas desconocidos o más nuevos fallan explícitamente; Bourne nunca se reposiciona una base de data existente. Cada nuevo descubrimiento crea una instantánea inmutable nueva.
Licencia
La v0.5.0 y posteriores se distributed bajo la Apache License 2.0. Las versiones hasta la v0.4.0 permanecen bajo los términos de la Licencia MIT en virtud de los cuales se publicaron. Consulta historial de licencias para más detalles.
Validación de release
La versión del repositorio es 0.6.0. La base runtime tiene cero dependencias de terceros; el soporte MCP es una opción adicional explícitamente opcional.
Ejecuta las pruebas del árbol de fuentes con:
PYTHONPATH=src python -W error::ResourceWarning -m unittest discover -s tests -vstdout y stderr todavía se acumulan en memoria antes de la persistencia final. Los registros de experimentos con spool en disco, el descubrimiento automático de artefactos, el archivado de artefactos, la instalación automática de dependencias científicas, la carga automática de módulos, la orquestación de contenedores, la ejecución SSH, la copia remota, el muestreo de utilización, la perfilación, los scripts de verificación arbitrarios, la inferencia amplia de validez científica, el MCP HTTP alojado, los LLM integrados y el análisis de lenguaje natural permanecen fuera de v0.6.0. Consulte docs/VISION.md para conocer la dirección a largo plazo.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables orchestration of MCP tool calls through declarative YAML-defined directed graphs with data transformation, conditional routing, and observable execution flows.7918MIT
- AlicenseNot gradedqualityAmaintenanceEnables users to define and run MCP tools using declarative YAML configs with built-in trust enforcement, credential brokering, and tamper-evident audit logging.14MIT

Patronus MCP Serverofficial
AlicenseNot gradedqualityDmaintenanceEnables running LLM evaluations, experiments, and custom evaluators through a standardized MCP interface.16Apache 2.0- AlicenseNot gradedqualityAmaintenanceEnables AI-assisted scientific research workflow management through MCP, including project creation, ideation, experiment execution, and artifact handling, with integration for ChatGPT, Codex, and Claude Code.Apache 2.0
Related MCP Connectors
Create, browse, remix, collaborate on, and run durable AI workflow nodes from MCP hosts.
Control plane for autonomous software labor. Agents claim objectives over MCP with audit trail.
Create and drive plori cloud agents and workflows over MCP; each agent has its own environment.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/KozakHou/project-bourne'
If you have feedback or need assistance with the MCP directory API, please join our Discord server