# io.github.ecestnrkl/figjam-mcp (npm · figjam-context-mcp)

Query FigJam board context, source-cited answers and snapshot changes through five local MCP tools.

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

## Components

- npm · `figjam-context-mcp`: 86/100 (this document), [markdown](https://verifymcp.io/servers/ecestnrkl-figjam-mcp/figjam-context-mcp.md), [page](https://verifymcp.io/servers/ecestnrkl-figjam-mcp/figjam-context-mcp)

## Channel facts

- Registry: `npm`
- Package: `figjam-context-mcp`
- Version: `0.11.0`
- 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.
  - 2 of 7 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 100/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to ecestnrkl/figjam-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 10 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 62/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1376 tokens (~275/item across 5 items; 5 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 57/100
  - Stability observed for 17 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 97/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 90% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 5 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 5 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the io.github.ecestnrkl/figjam-mcp server?

io.github.ecestnrkl/figjam-mcp runs locally as an npm package, launched with npx -y figjam-context-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 ecestnrkl-figjam-mcp -- npx -y figjam-context-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "ecestnrkl-figjam-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "figjam-context-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "ecestnrkl-figjam-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "figjam-context-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add ecestnrkl-figjam-mcp -- npx -y figjam-context-mcp
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add ecestnrkl-figjam-mcp --command npx --arg -y --arg figjam-context-mcp
```

### Hermes

```yaml
mcp_servers:
  ecestnrkl-figjam-mcp:
    command: "npx"
    args: ["-y", "figjam-context-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "ecestnrkl-figjam-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "figjam-context-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add ecestnrkl-figjam-mcp -t stdio -c npx -a -y figjam-context-mcp
```

### Other

```json
{
  "mcpServers": {
    "ecestnrkl-figjam-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "figjam-context-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-04 (score 86, +1)

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

### 2026-11-02 (score 85, +1)

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

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

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

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

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

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

- [security regression] Stability: 0.20 → unverified
- [security regression] Tool safety: pass → unverified
- [functional regression] Schema quality: 243 → 275
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified
- [functional] Package version: 0.10.3 → 0.11.0

### 2026-10-23 (score 81, +11)

- [security improvement] Known CVEs: unverified → pass
- [functional improvement] Dependency health: unverified → 0.85

### 2026-10-22 (score 70, +16)

- [security regression] Stability: 0.07 → unverified
- [security regression] Tool safety: pass → unverified
- [security improvement] Malware scan: unverified → pass
- [security improvement] Known CVEs: unverified → pass
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] Dependency health: unverified → 0.85
- [functional] First check of Schema quality: unverified
- [functional] Package version: 0.10.2 → 0.10.3

### 2026-10-21 (score 54, 0)

- [security improvement] Malware scan: unverified → pass
- [security improvement] Known CVEs: unverified → pass
- [functional improvement] Dependency health: unverified → 0.85
- [functional] Package version: 0.9.1 → 0.10.2
- [functional] Package version: 0.9.1 → 0.10.1
- [functional] Package version: 0.9.1 → 0.10.0

## MCP tools (5)

### `ingest_board` (~476 tokens)

Ingest FigJam Board

Read a FigJam/Figma URL with the configured Figma token and persist a local snapshot for get_board_context, answer_from_board and diff_board; the summary names the largest sections to read next and how many excerpts lie outside sections. Leaves the Figma file unchanged. Every call downloads the board from Figma (one Tier 1 request); get_board_context and answer_from_board read the saved snapshot without a new request. Balanced/quality modes may send board text and images to the configured LLM provider and incur charges; max_speed skips vision. Re-ingest to refresh stale content and continue pending image interpretation; focusNodeIds with section IDs from the summary or the first page of get_board_context interprets their images first. Local history is bounded. Supports framework phases or customPhases.

Input parameters:

- `customPhases` (array): Free-form phase names to map clusters onto (e.g. ["Ideen", "Feedback", "Offene Fragen"]); overrides docStructureHint
- `docStructureHint` (string): Built-in framework used to map clusters to phases
- `figmaAccessToken` (string): Figma personal access token; falls back to FIGMA_ACCESS_TOKEN env var if omitted
- `figmaFileUrl` (string, required): URL of the FigJam/Figma file to ingest
- `focusNodeIds` (array): IDs of pages, sections, frames, groups or single nodes whose image clusters are interpreted first, in list order; the rest of the board follows in the usual order. Section IDs come from the ingest_bo…
- `forceFullIngest` (boolean): Build the snapshot from the downloaded board again instead of the cached result for unchanged content, e.g. after turning credential redaction off. Image interpretations of unchanged clusters are kep…
- `ingestMode` (string): How aggressively to use vision LLM calls during ingest

Output parameters:

- `boardId` (string)
- `clusterCount` (integer)
- `figmaVersion` (string)
- `freshnessCheckedAt` (string)
- `ingestMode` (string)
- `persistenceWarning` (string)
- `qualityReport` (object)
- `relationCount` (integer): Directed cluster-to-cluster relations derived from connector arrows
- `snapshotId` (string)
- `summary` (string)

### `get_board_context` (~565 tokens)

Get Board Context

Read source-cited context from an ingested board snapshot. Start overviews, summaries and documentation with a call without topic, nodeIds, limit and maxChars: its first page names the largest sections and lists sections with IDs. Then pass section, page, frame or group IDs as nodeIds; several IDs share each page in request order. Default detail: "auto" switches reads of multiple distinct IDs or one page, section, frame or group to a compact overview only when the first full page would leave unread excerpts. Overview lines contain node IDs and deterministically shortened text (50–120 characters); structuredContent puts the excerpts once in overview.text, with empty evidence and clusters. limit applies only to the full view and is ignored in an overview, even when explicit. Read the complete source and Figma link with the same boardId and snapshotId, nodeIds: ["<ID>"] and detail: "full"; table IDs read every row. Without overview, excerpts are in evidence. Read outsideSections: true, search with topic, or continue with cursor. Synthesize the answer yourself. No network or LLM calls; use ingest_board to refresh Figma content.

Input parameters:

- `boardId` (string, required): The Figma file key returned by ingest_board
- `cursor` (string): nextCursor of the previous page, unchanged; send it with the same topic, nodeIds, outsideSections, detail, limit and maxChars
- `detail` (string): auto uses a compact, source-marked overview when a requested container or several nodeIds need multiple full pages; full returns linked evidence objects. Overview lines may be shortened; use full to…
- `limit` (integer): Maximum evidence excerpts per full page (default 20, at most 100); ignored in an automatic overview, even when explicit. Use detail: full for an excerpt limit
- `maxChars` (integer): Character budget for each representation: the readable text content and the JSON of structuredContent (default 12000, minimum 2000)
- `nodeIds` (array): Read exact source nodes, all rows of a table or the row of a table cell, or every excerpt inside a page, section, frame or group by its ID (nested sections included, in reading order); several IDs in…
- `outsideSections` (boolean): Read every excerpt that lies in no section, cluster by cluster in reading order, tables row by row; on a board without sections, all excerpts. Cannot be combined with topic or nodeIds
- `snapshotId` (string): Read a specific retained snapshot instead of the latest board
- `topic` (string): Optional topic to focus the context on

Output parameters:

- `clusters` (array)
- `connections` (array): Arrows with at least one end, or a section, frame or group around one, among this page's excerpts; never arrows to a page. The label is the text on the arrow
- `contextText` (string): Orientation and reading instructions. Excerpts are in overview.text when overview is present (evidence and clusters are then empty), otherwise in evidence; text content carries the same readable exce…
- `evidence` (array): Full linked excerpts; empty in overview mode, where excerpts are in overview.text instead
- `nextCursor` (string)
- `overview` (object): Present only for automatic compact overview pages; evidence and clusters are empty, not a claim of no matches. Read a line's full text and Figma link with the same boardId and snapshotId, its nodeId,…
- `relations` (array): Cluster-to-cluster relations derived from connector arrows
- `snapshotId` (string)
- `totalMatched` (integer)
- `truncated` (boolean)
- `truncation` (object): Explicit omissions from structured results and the readable text
- `unknownNodeIds` (array): Requested nodeIds that are not in this snapshot; the others are read

### `answer_from_board` (~127 tokens)

Answer From Board

Answer one specific question, such as a number, a status or a decision, from the most relevant excerpts of an ingested board, with validated source citations or an insufficient-evidence result. It reads only a handful of excerpts: not for summaries, lists, risks or next steps across several sections; read those with get_board_context. Sends the question and the selected excerpts to the configured LLM provider; calls may incur charges.

Input parameters:

- `boardId` (string, required): The Figma file key returned by ingest_board
- `question` (string, required)
- `snapshotId` (string)

Output parameters:

- `answer` (string)
- `citations` (array)
- `citedClusters` (array)
- `snapshotId` (string)

### `diff_board` (~150 tokens)

Diff Board Snapshots

Compare retained local snapshots of the same board, reporting cluster, node and connector changes. Names each changed node with its section and its old and new text, and each changed table cell with its row and column. Needs two ingests; when the board did not change in between, it reports no changes since the first. compareTo=1 selects the previous snapshot, 2 selects two states back. No network or LLM calls; ingest_board must capture the current Figma state first.

Input parameters:

- `boardId` (string, required): The Figma file key, as returned by ingest_board
- `compareTo` (integer): How many snapshots back to use as the baseline (1 = the ingest before the latest)

Output parameters:

- `addedConnections` (array)
- `baselineCreatedAt` (string): ISO timestamp of the baseline ingest
- `baselineSnapshotId` (string)
- `boardId` (string)
- `currentCreatedAt` (string): ISO timestamp of the latest ingest
- `currentSnapshotId` (string)
- `modifiedClusters` (array)
- `newClusters` (array)
- `nodeChanges` (array): Edited, added, then removed nodes in reading order; read whole texts with get_board_context and nodeIds
- `nodeChangesOmitted` (integer): Changed nodes beyond the first 100
- `removedClusters` (array)
- `removedConnections` (array)
- `stats` (object)
- `summaryText` (string): Paste-ready human/LLM-readable change report
- `tableCellChanges` (array)

### `diagnose_llm_config` (~58 tokens)

Diagnose LLM Config

Test the configured text and vision models with three small synthetic JSON challenges. Sends synthetic text and an image to the configured provider, may incur charges, and reports semantic/schema failures. Does not read board contents. Use after changing model/provider settings.

Output parameters:

- `checks` (array)
- `fastTextModels` (array)
- `ok` (boolean)
- `preset` (string)
- `providerRequireParameters` (boolean)
- `summary` (string)
- `textModels` (array)
- `visionModels` (array)

## Diagnostics

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

## Score history

- 2026-11-05: 86
- 2026-11-04: 86
- 2026-11-03: 85
- 2026-11-02: 85
- 2026-11-01: 84
- 2026-10-31: 84
- 2026-10-30: 84
- 2026-10-29: 83
- 2026-10-28: 83
- 2026-10-27: 82
- 2026-10-26: 82
- 2026-10-25: 81
- 2026-10-24: 81
- 2026-10-23: 81
- 2026-10-22: 70
- 2026-10-21: 54
- 2026-10-20: 54
- 2026-10-19: 54

## Common questions

### What is the io.github.ecestnrkl/figjam-mcp server?

io.github.ecestnrkl/figjam-mcp is listed in the public MCP registry as io.github.ecestnrkl/figjam-mcp. Query FigJam board context, source-cited answers and snapshot changes through five local MCP tools. This page covers its npm package (figjam-context-mcp).

### Is the io.github.ecestnrkl/figjam-mcp server safe to use?

io.github.ecestnrkl/figjam-mcp scores 86 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. Its build provenance is signed and verified. 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 io.github.ecestnrkl/figjam-mcp server expose?

io.github.ecestnrkl/figjam-mcp exposes 5 tools: ingest_board, get_board_context, answer_from_board, diff_board, diagnose_llm_config. Their descriptions and schemas cost roughly 1,376 tokens of context every time the server is loaded.

### Is the io.github.ecestnrkl/figjam-mcp server still maintained?

io.github.ecestnrkl/figjam-mcp 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 io.github.ecestnrkl/figjam-mcp server under?

io.github.ecestnrkl/figjam-mcp declares the MIT 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/figjam-context-mcp
- Socket report: https://socket.dev/npm/package/figjam-context-mcp
- Repository: https://github.com/ecestnrkl/figjam-mcp
- Changelog RSS feed: https://verifymcp.io/servers/ecestnrkl-figjam-mcp/figjam-context-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/ecestnrkl-figjam-mcp/figjam-context-mcp.json
- HTML version of this page: https://verifymcp.io/servers/ecestnrkl-figjam-mcp/figjam-context-mcp
