covdbg MCP

Construimos covdbg: un servidor MCP local stdio para cobertura de C++ en Windows x64. Los agentes miden binarios existentes con PDBs coincidentes e inspeccionan el código fuente no cubierto para guiar ediciones de pruebas. Se requiere inicio de sesión de desarrollador. Gratis para repositorios públicos y un repositorio privado por persona; planes de equipo de pago disponibles.

Documentación

Servidor MCP


El servidor MCP de covdbg permite que un agente de codificación de IA mida la cobertura de C++ nativo en Windows y lea los resultados a través de herramientas estructuradas.

Iniciar el servidor

El servidor forma parte del ejecutable de covdbg:

covdbg mcp

Configura tu cliente MCP para lanzar covdbg con el argumento mcp, usando tu proyecto como directorio de trabajo. El servidor utiliza la entrada y salida estándar, con un objeto JSON por línea. No es un servicio HTTP. discover busca en el directorio donde se inició el servidor; pasa --workspace <dir> cuando el cliente no pueda iniciarlo dentro del proyecto.

Para un cliente que lee un archivo .mcp.json del proyecto:

{
  "mcpServers": {
    "covdbg": {
      "command": "covdbg",
      "args": ["mcp"]
    }
  }
}

El ejecutable debe estar en el PATH del cliente, o command debe indicar su ruta completa. Los nombres de archivos de configuración y los pasos de registro dependen del cliente.

Claude Code

Registra el servidor stdio local desde el directorio de tu proyecto:

claude mcp add covdbg -- covdbg mcp

Consulta la ayuda del cliente instalado para conocer las opciones de alcance compatibles e inspecciona la configuración MCP existente antes de modificarla. Después de conectarte, llama a guide antes de iniciar una ejecución de cobertura. Para obtener ayuda con la configuración, usa el prompt de inicio rápido de IA.

Requisitos previos para una ejecución

  • Windows y un ejecutable existente con símbolos de depuración PDB.
  • Un inicio de sesión de desarrollador a través de covdbg login, o COVDBG_PROJECT_TOKEN en el entorno del servidor para CI.
  • Un .covdbg.yaml junto al ejecutable de destino, o un config_path explícito en la llamada a run.

Lee el guide del servidor antes de medir. Sin un topic, explica el flujo de trabajo. Los temas config, excludes, baseline, merging, uncovered, children y libraries cubren cómo escribir un .covdbg.yaml, mantener el CRT y el Windows SDK fuera del informe, código de bibliotecas estáticas que ningún binario de prueba enlaza, medir un conjunto completo, encontrar código muerto con SQL, objetivos que realizan su trabajo en un proceso hijo y código que vive en una DLL. Una configuración mal delimitada puede producir una cobertura engañosa.

El ciclo de mejora

  1. Llama a guide y luego a discover para encontrar ejecutables y bases de datos existentes.
  2. Llama a run con un objetivo y una configuración. Devuelve una sesión de ejecución inmediatamente.
  3. Llama a wait_run hasta que termine. Cada llamada devuelve después de un máximo de 30 segundos. Un resultado exitoso incluye un ID de sesión de cobertura.
  4. Llama a files para clasificar los archivos no cubiertos y luego a code para leer los segmentos no cubiertos de un archivo con contexto.
  5. Haz que el agente edite las pruebas usando sus propias herramientas de codificación, ejecute las pruebas y mida nuevamente.
  6. Revisa tanto el resultado de la prueba como el cambio de cobertura. Cierra las sesiones cuando termines.

El servidor MCP no edita el código fuente ni genera pruebas por sí mismo. Proporciona las mediciones y el contexto que el agente de codificación conectado puede usar.

Referencia de herramientas

HerramientaPropósitoEntradas principales
guideLeer guía de flujo de trabajo y configuracióntopic opcional
discoverEncontrar ejecutables y bases de datos de coberturaroot opcional
runIniciar una ejecución de coberturatarget; opcionales target_arguments, config_path, output_path, follow_children
wait_runEsperar brevemente o recoger el resultado completadosession_id; timeout_seconds opcional
cancel_runTerminar una ejecuciónsession_id
open_coverageAbrir una base de datos existente en modo solo lecturapath
filesClasificar archivos por líneas no cubiertassession_id; opcionales limit, max_coverage_percent
codeLeer segmentos de código fuente no cubiertos con contextosession_id, file_path
queryEjecutar una declaración SQL de solo lecturasession_id, sql; max_rows opcional
mergeCombinar bases de datosinput_paths, output_path
closeLiberar una sesión de ejecución o coberturasession_id

Pasa un filePath devuelto por files directamente a code. La falta de código fuente se informa explícitamente. query rechaza escrituras y declaraciones como ATTACH que accedan fuera de la base de datos abierta.

Establece follow_children en run cuando el objetivo sea un lanzador: un host de scripts, un shell o un ejecutor de pruebas que genere el proceso que realiza el trabajo real. Sin él, solo se mide el lanzador. Está desactivado por defecto porque cada proceso hijo se instrumenta, y un objetivo que invoca shells repetidamente paga por cada uno; el tema de la guía children explica el costo. Tiene el mismo efecto que --follow-children en la línea de comandos o settings.follow_children en .covdbg.yaml.

Sesiones y salidas

Los IDs de ejecución comienzan con run-; los IDs de cobertura abierta comienzan con covdb-. Las sesiones duran mientras dure el proceso del servidor. Un wait_run exitoso abre la base de datos de salida automáticamente. El servidor mantiene hasta 32 sesiones de cobertura abiertas y 8 ejecuciones en curso. Una ejecución ocupa un espacio solo mientras se está ejecutando; una ejecución terminada conserva su resultado pero ya no cuenta, por lo que un conjunto de muchas ejecuciones cortas no necesita close entre ellas.

Una llamada a wait_run se bloquea durante un máximo de 30 segundos, sin importar lo que pida timeout_seconds, porque el servidor responde una llamada a la vez y una espera más larga mantendría cancel_run inalcanzable. Si su respuesta dice stillRunning, llama de nuevo. Los resultados completados distinguen success, no_functions_to_track, license_failure y error.

Por defecto, las ejecuciones usan archivos de salida temporales distintos. Un output_path explícito selecciona un destino. COVDBG_OUTPUT selecciona una ubicación predeterminada fija; evita reutilizar una ubicación en un conjunto porque las ejecuciones posteriores pueden sobrescribir resultados anteriores. Combina las bases de datos separadas en su lugar.

Límites importantes del flujo de trabajo

  • El éxito de la cobertura no es el éxito de la prueba. El código de salida de covdbg no propaga el código de salida del objetivo. Verifica el resultado del ejecutor de pruebas por separado y lee la salida del objetivo.
  • La cancelación pierde la cobertura. La base de datos se escribe cuando la ejecución se completa; cancelar una ejecución no produce una base de datos de cobertura.
  • El servidor lanza un objetivo. No puede adjuntarse a un proceso ya en ejecución ni pausarse en un punto de interrupción para inspección.
  • El contexto del código fuente se devuelve a tu cliente de IA. Un servidor MCP local no implica que el modelo del cliente procese ese contexto localmente.
  • Los esquemas de bases de datos incompatibles más antiguos se rechazan. Regenera la cobertura con la compilación correspondiente.

Para configurarte con un agente de IA, consulta el inicio rápido de IA. Para informes compartidos y CI, consulta informes de cobertura.