# CvLAC (MinCiencias) (npm · cvlac-mcp)

Update your Colombian CvLAC (MinCiencias) research CV by chatting with your AI assistant.

- Trust score: 84/100 (high trust)
- Change this week: +2
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- npm · `cvlac-mcp`: 84/100 (this document), [markdown](https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp.md), [page](https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp)

## Channel facts

- Registry: `npm`
- Package: `cvlac-mcp`
- Version: `1.0.6`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 98/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 31 of 96 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (ISC).
  - Actively maintained (last published 33 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 77/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1502 tokens (~115/item across 13 items; 13 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 100/100
  - No destabilizing schema changes in the last 30 days.
- **Tool Coverage**: 96/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 89% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 13 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 13 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the CvLAC (MinCiencias) MCP server?

CvLAC (MinCiencias) runs locally as an npm package, launched with npx -y cvlac-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add stivenson-cvlac-mcp -- npx -y cvlac-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "stivenson-cvlac-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "cvlac-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "stivenson-cvlac-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "cvlac-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add stivenson-cvlac-mcp -- npx -y cvlac-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "stivenson-cvlac-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "cvlac-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add stivenson-cvlac-mcp --command npx --arg -y --arg cvlac-mcp
```

### Hermes

```yaml
mcp_servers:
  stivenson-cvlac-mcp:
    command: "npx"
    args: ["-y", "cvlac-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "stivenson-cvlac-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "cvlac-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add stivenson-cvlac-mcp -t stdio -c npx -a -y cvlac-mcp
```

### Other

```json
{
  "mcpServers": {
    "stivenson-cvlac-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "cvlac-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-02 (score 84, 0)

- [security] Stability: 0.97 → pass

### 2026-11-01 (score 84, +1)

No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-31 (score 83, 0)

- [functional regression] Security disclosure: unverified → fail

### 2026-10-30 (score 83, +1)

- [functional regression] Security disclosure: fail → unverified

### 2026-10-28 (score 82, +1)

No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-26 (score 81, +1)

No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-24 (score 80, +1)

No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-22 (score 79, +1)

No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (13)

### `login` (~33 tokens)

Authenticate in CvLAC and persist the browser session.

Input parameters:

- `force` (boolean): Force re-login even if session is valid

### `read_cvlac` (~64 tokens)

Read current CvLAC sections, including articles, books, chapters, theses, juries and five kinds of technical production. Returns existing items for comparison; list results include every JMesa page.

Input parameters:

- `section` (string): Which section to read. Defaults to all.

### `read_cvlac_detail` (~101 tokens)

Read the full record page of one CvLAC item. The list views only show a couple of columns, so this is the only way to see the fields a write actually stored (role, dates, institution, financing). Finds the row by label, case- and accent-insensitive.

Input parameters:

- `label` (string, required): Name/title as it appears in the section list, e.g. the degree for formacion
- `section` (string, required)

### `read_portfolio` (~38 tokens)

Read and parse the configured portfolio site (PORTFOLIO_URL), merged with the curated proyectos/software/eventos from data/portfolio-extra.json.

### `diff` (~53 tokens)

Compare CvLAC vs portfolio. Returns four buckets: missing, toUpdate, similar (close to an existing entry — a human decides) and upToDate.

Input parameters:

- `section` (string): Limit diff to a specific section

### `update_section` (~355 tokens)

Apply a single change to a CvLAC section. Takes a screenshot for confirmation. An "add" whose item resembles an existing entry returns status "needs_confirmation" and writes nothing; resolve it with action:"update" or repeat with confirm_duplicate:true. A "delete" also writes nothing until it is repeated with confirm_delete:true. A picker whose search matched several rows — a common university name can match close to 200 institutions in CvLAC — also returns needs_confirmation, with the candidates in "choices"; repeat with the chosen id in data.institucionId. For articles provide title, year and issn/revista; for books provide title, isbn, year, editorial and area; for chapters provide title, bookTitle, year and area; for theses provide title, tipo, year, institution and programme; for juries provide title, nivel, year, orientado, institution and programme; technical sections require title and year, with section-specific fields. Catalogue choices are answered by repeating the call with revistaId, libroId, editorialId, programaId, areaId or institucionId in data. Coauthors, keywords, recognitions and linked thesis students are completed from the CvLAC website. For books, certificateCLCDO and certificateCLRI accept local PDF paths (maximum 2 MiB each).

Input parameters:

- `action` (string, required)
- `confirm_delete` (boolean): Required by action:"delete". Without it nothing is removed and the call returns needs_confirmation — CvLAC has no undo.
- `confirm_duplicate` (boolean): Create the item even though CvLAC already holds a similar one
- `data` (object, required): The item data to add/update
- `section` (string, required)

### `lookup_doi` (~68 tokens)

Read-only: look up a DOI in Crossref and return an article draft. Review it, then pass it to update_section with section:"articulos"; this tool does not write to CvLAC.

Input parameters:

- `doi` (string, required): DOI, doi:... or https://doi.org/...

### `complete_product` (~257 tokens)

Complete the post-save CvLAC phase for an existing product. It manages ordered keywords, knowledge areas, coauthors and recognitions; for theses it also links students with their participation. It reads current values, resolves catalogue names, and never removes an existing value without confirm_delete:true. Use dry_run:true to preview catalogue resolution and removals without writing.

Input parameters:

- `areas` (array): Complete ordered replacement list of product knowledge areas, by code or name
- `coauthors` (array): Complete ordered replacement list of coauthor names; the CvLAC owner is preserved
- `confirm_delete` (boolean): Required when the replacement drops existing keywords, areas, coauthors or recognitions, or unlinks thesis students
- `dry_run` (boolean): Preview without creating keywords or submitting lists
- `keywords` (array): Complete ordered replacement list of product keywords
- `label` (string, required): Exact title as shown in the section list
- `recognitions` (array): Complete ordered replacement list of recognition titles already registered in CvLAC
- `section` (string, required): Product section containing the existing item
- `students` (array): Complete thesis student list; each item may use participation TUT, ASE, COT or ORI

### `read_profile` (~69 tokens)

Read the two CvLAC pages that hold one record instead of a list: the researcher profile text (txt_desc_perfil), the table of academic social networks (Google Scholar, ORCID, LinkedIn, Scopus...) and the áreas de actuación. None of them appears in read_cvlac.

### `update_profile` (~240 tokens)

Write the researcher profile text and/or the academic social networks. Networks are MERGED over what CvLAC already stores — its form rewrites the whole table, so this reads it first and posts everything back. Pass url:null to remove one. A network CvLAC does not list goes in "otro" with its name in "label". Removing one needs confirm_delete:true. The profile text cannot be blanked: CvLAC marks it required. The areas list is replaced whole, so dropping one also needs confirm_delete:true.

Input parameters:

- `areas` (array): The whole list of áreas de actuación, in order — the first is the main one — by name or by CvLAC code. It replaces what is stored, so anything left out is a removal. An ambiguous name comes back in "…
- `confirm_delete` (boolean): Required when a network carries url:null or the areas list drops one. Without it nothing is written.
- `description` (string): Replaces the profile text. Omit to leave it untouched.
- `networks` (array): Networks to set or remove. Everything else stored is kept.

### `sync` (~93 tokens)

Run a full diff and apply the unambiguous items (missing + toUpdate). Items that resemble existing CvLAC entries are never written; they are listed for a human to resolve. It previews by default; pass dry_run:false to apply changes explicitly.

Input parameters:

- `dry_run` (boolean): Preview changes without applying them. Defaults to true; use false to write.
- `sections` (array): Limit sync to specific sections

### `screenshot` (~85 tokens)

Capture a CvLAC page for debugging: the given url, or else the last list, record or form page a tool visited, reloaded as it is now. Action links (delete, save) are refused, because in CvLAC opening one performs it.

Input parameters:

- `url` (string): A CvLAC list, record or form page. Defaults to the last one visited.

### `inspect_form` (~46 tokens)

Navigate to a CvLAC URL and return the HTML of all form inputs/selects/textareas for debugging field names.

Input parameters:

- `url` (string, required): The CvLAC URL to inspect

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp#diagnostics

## Score history

- 2026-11-05: 84
- 2026-11-04: 84
- 2026-11-03: 84
- 2026-11-02: 84
- 2026-11-01: 84
- 2026-10-31: 83
- 2026-10-30: 83
- 2026-10-29: 82
- 2026-10-28: 82
- 2026-10-27: 81
- 2026-10-26: 81
- 2026-10-25: 80
- 2026-10-24: 80
- 2026-10-23: 79
- 2026-10-22: 79
- 2026-10-21: 78
- 2026-10-20: 78
- 2026-10-19: 77
- 2026-10-18: 77
- 2026-10-17: 77
- 2026-10-16: 76
- 2026-10-15: 76
- 2026-10-14: 75
- 2026-10-13: 70
- 2026-10-12: 70
- 2026-10-11: 70
- 2026-10-07: 70
- 2026-10-04: 70
- 2026-10-03: 55

## Common questions

### What is the CvLAC (MinCiencias) MCP server?

CvLAC (MinCiencias) is an MCP server listed in the public MCP registry as io.github.stivenson/cvlac-mcp. Update your Colombian CvLAC (MinCiencias) research CV by chatting with your AI assistant. This page covers its npm package (cvlac-mcp).

### Is the CvLAC (MinCiencias) MCP server safe to use?

CvLAC (MinCiencias) scores 84 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the CvLAC (MinCiencias) MCP server expose?

CvLAC (MinCiencias) exposes 13 tools: login, read_cvlac, read_cvlac_detail, read_portfolio, diff, and 8 more. Their descriptions and schemas cost roughly 1,502 tokens of context every time the server is loaded.

### Is the CvLAC (MinCiencias) MCP server still maintained?

CvLAC (MinCiencias) is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the CvLAC (MinCiencias) MCP server under?

CvLAC (MinCiencias) declares the ISC licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/cvlac-mcp
- Socket report: https://socket.dev/npm/package/cvlac-mcp
- Repository: https://github.com/stivenson/cvlac-mcp
- Changelog RSS feed: https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp.json
- HTML version of this page: https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp
