Atlas / MCP servers / stivenson / cvlac-mcp

cvlac-mcpBLOCK

mcp/stivenson/cvlac-mcp

MCP server that syncs a MinCiencias CvLAC profile with a personal portfolio, via Playwright

Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
13 10r · 3w · 0d
Transport
stdio
License
ISC
Stars
1
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

cvlac-mcp

Actualiza tu CvLAC conversando con tu asistente de IA, sin llenar formularios a mano.

Llenar el CvLAC de MinCiencias es lento: un formulario por cada curso, premio o proyecto, con catálogos de instituciones y municipios que no siempre encuentran lo que buscas. cvlac-mcp le da a tu asistente de IA (Claude, por ejemplo) la capacidad de hacerlo por ti: le dices en el chat qué agregar o corregir, y él entra a CvLAC con tu cuenta, llena el formulario, lo guarda y revisa que haya quedado guardado.

Funciona en tu computador. Tus credenciales no salen de él y no pasan por ningún servidor intermedio.

  • Cómo se ve
  • Qué puede hacer y qué no
  • Qué necesitas
  • Instalación paso a paso — unos 15 minutos
  • Qué pedirle
  • Cómo te protege
  • Problemas frecuentes
Read from source at commit 39851d998156OBSERVED · 2026-10-11
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code (npm)
claude mcp add cvlac-mcp -- npx -y [email protected]
03

Exposed tools (13)

10 read · 3 write · 0 destructive.

ToolRiskDescription
complete_productread
diffread
inspect_formread
loginread
lookup_doiread
read_cvlacread
read_cvlac_detailread
read_portfolioread
read_profileread
screenshotread
syncwrite
update_profilewrite
update_sectionwrite
04

Trust audit

BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)WARN
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (5 observation(s))
Network
declared (5 observation(s))
Shell
declared (3 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (11)

HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/tools/update-section.ts:947
: await page.$$eval(
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
MEDIUMPrompt injection · prompt.hidden_style · CWE-94, CWE-1427
docs/cvlac-findings.md:230
4. **`txt_otro` vive dentro de `<div id="otro" style="display:none">`**, que solo se muestra al hacer clic en su checkbox (`mostrarCampoOtro()`). Un `page.fill` ahí espera a que sea editable hasta ago
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
tests/idiomas-lineas.test.ts:121
page.$eval(`input[name="${name}"]:checked`, (el) => (el as HTMLInputElement).value);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
tests/profile.test.ts:208
page.$eval(`[name="${name}"]`, (el) => (el as HTMLInputElement).value);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
tests/profile.test.ts:210
page.$eval(`[name="${name}"]`, (el) => (el as HTMLInputElement).checked);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/extractors/cvlac/cursos.ts:2
import type { CvLACCursoItem } from '../../types.js';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/extractors/cvlac/cursos.ts:3
import { URLS } from '../../browser/navigation.js';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/extractors/cvlac/demas-trabajos.ts:2
import type { CvLACDemasTrabajoItem } from '../../types.js';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/extractors/cvlac/demas-trabajos.ts:3
import { URLS } from '../../browser/navigation.js';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/extractors/cvlac/eventos.ts:2
import type { CvLACEventoItem } from '../../types.js';
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@modelcontextprotocol/sdk, dotenv, zod, @types/node, tsx, typescript, vitest
Why it matters. 7 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha 39851d998156full audit observations/trust-audit/mcp-server/stivenson__cvlac-mcp.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-1139851d998156BLOCKD69first audit
06

Questions

What is the cvlac-mcp MCP server?

MCP server that syncs a MinCiencias CvLAC profile with a personal portfolio, via Playwright

What tools does cvlac-mcp expose?

13 in total: 10 read-only, 3 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is cvlac-mcp safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (69/100) and found 1 critical or high issue in the source. Each one is listed on this page with the file and line it is on.

What credentials does cvlac-mcp need?

It reads CVLAC_PASSWORD from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does cvlac-mcp run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as cvlac-mcp at 1.0.6.

How current is this page?

The grade is for one exact copy of the source (39851d998156), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement