# Fjord (mcpb · fjord-mcp.mcpb)

Local kanban boards, markdown notes and Git/GitHub/Azure DevOps work from the Fjord app.

- Trust score: 38/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-23

## Components

- mcpb · `fjord-mcp.mcpb`: 38/100 (this document), [markdown](https://verifymcp.io/servers/jhtjernsmo-fjord/fjord-mcp.md), [page](https://verifymcp.io/servers/jhtjernsmo-fjord/fjord-mcp)

## Channel facts

- Registry: `mcpb`
- Package: `https://github.com/jhtjernsmo/fjord/releases/download/v0.2.32/fjord-mcp.mcpb`
- Transport: `stdio`
- SHA-256: `523464bc4fff7493861c9d6874d500866947c8a7b4ff63a132b8d500cba7cc23`

## 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-10-23.

- **Supply Chain Security**: 0/100
  - No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.
  - Known CVEs could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).
  - Install-script risk not yet assessed.
  - Dependency health could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).
- **Provenance & Transparency**: 48/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT OR Apache-2.0).
  - Actively maintained (last published 0 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 63/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 1787 tokens (~63/item across 28 items; 28 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 3/100
  - Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 78/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 34% 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 28 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 29 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.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the Fjord MCP server?

Fjord ships as an MCPB bundle, a single file you download and open in an MCP host that supports MCPB bundles, such as Claude Desktop. The host reads the launch command from the bundle's own manifest, so there is no command to copy. Before opening it, check the file's SHA-256 matches the one the MCP registry declares for it, 523464bc4fff7493861c9d6874d500866947c8a7b4ff63a132b8d500cba7cc23; the commands to do that are on this page. If it does not match, do not open it.

- Download bundle: `https://github.com/jhtjernsmo/fjord/releases/download/v0.2.32/fjord-mcp.mcpb`
- SHA-256: `523464bc4fff7493861c9d6874d500866947c8a7b4ff63a132b8d500cba7cc23`

### Verify on macOS / Linux

```bash
echo "523464bc4fff7493861c9d6874d500866947c8a7b4ff63a132b8d500cba7cc23  fjord-mcp.mcpb" | shasum -a 256 -c
```

### Verify on Windows (PowerShell)

```powershell
(Get-FileHash -Algorithm SHA256 .\fjord-mcp.mcpb).Hash -eq "523464bc4fff7493861c9d6874d500866947c8a7b4ff63a132b8d500cba7cc23"
```

## 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-10-23 (score 38, +1)

- [security regression] Stability: 0.00 → unverified

### 2026-10-22 (score 37)

First indexed and scored.

## MCP tools (28)

### `list_projects` (~23 tokens)

List projects with progress counts.

Input parameters:

- `include_archived` (boolean)

### `get_board` (~27 tokens)

Columns and active tasks of a project.

Input parameters:

- `project` (string, required): Project id or slug

### `create_project` (~54 tokens)

Create a project with default columns.

Input parameters:

- `color` (string): #rrggbb
- `description` (string)
- `icon` (string): Short glyph, e.g. >_
- `name` (string, required)

### `create_task` (~113 tokens)

Add a task to a project. Pass parent (a task id in the same project) to create a subtask; subtasks can't have subtasks.

Input parameters:

- `body` (string): Markdown
- `due` (string): YYYY-MM-DD
- `parent` (integer): Parent task id, to create a subtask
- `priority` (integer)
- `project` (string, required): Project id or slug
- `status` (string): Column name or id (default: first)
- `title` (string, required)

### `get_task` (~32 tokens)

Read one task: its fields and markdown body, its subtasks and attached files.

Input parameters:

- `id` (integer, required)

### `update_task` (~110 tokens)

Edit a task. Pass due: null to clear the due date. parent: a task id in the same project makes it a subtask of that task (it can't have subtasks of its own); null makes it a regular task.

Input parameters:

- `body` (string)
- `due` (string|null)
- `id` (integer, required)
- `parent` (integer|null): Parent task id, or null for a regular task
- `priority` (integer)
- `title` (string)

### `move_task` (~103 tokens)

Move a task to another column, or to another project (its subtasks and files go with it; without status it lands in the column with the same name). With "Send state changes to Azure" on, a column move also sets the state of the task's Azure Boards work item to the column's name.

Input parameters:

- `id` (integer, required)
- `project` (string): Name or slug of the project to move it to
- `status` (string)

### `complete_task` (~37 tokens)

Move a task to the project's done column (its Azure Boards work item follows when writing to Azure is on).

Input parameters:

- `id` (integer, required)

### `set_task_pending` (~80 tokens)

Mark a task pending (waiting on someone else, e.g. a reply from the client) or not. It stays in its column. With "Send state changes to Azure" on, a task from Azure Boards moves its work item to the pending state too.

Input parameters:

- `id` (integer, required)
- `pending` (boolean, required): false to stop pending

### `archive_task` (~22 tokens)

Archive a task (reversible).

Input parameters:

- `id` (integer, required)

### `add_note` (~91 tokens)

Add a markdown note — to a project, or to the global notespace if project is omitted. Link with [[Project]], [[#12]] (task) or [[Note title]].

Input parameters:

- `body` (string)
- `folder` (string): e.g. product/ideas
- `pinned` (boolean)
- `project` (string): Project id or slug
- `title` (string, required)

### `list_notes` (~58 tokens)

List notes (without bodies; use get_note). project: only that project's notes; free_only: only notespace notes without a project; otherwise all.

Input parameters:

- `free_only` (boolean)
- `project` (string): Project id or slug

### `get_note` (~33 tokens)

Read a note: markdown body plus its [[links]] resolved to projects/tasks/notes.

Input parameters:

- `id` (integer, required)

### `update_note` (~111 tokens)

Edit a note. Only given fields change. append adds text to the end of the body. project: id/slug to move into a project, null to move to the notespace.

Input parameters:

- `append` (string)
- `body` (string): Replaces the whole body
- `folder` (string): e.g. product/ideas; empty = none
- `id` (integer, required)
- `pinned` (boolean)
- `project` (string|null)
- `title` (string)

### `analyze_story` (~140 tokens)

Start a user story analysis for a task: creates a note from the user's own analysis template in the project's Analysis folder, linked to the task, and returns it with the task's context (title, description, acceptance criteria, risk, work item URL). If the task already has one, returns that instead (created = false). Fill in each section from the context with update_note (body replaces the whole note): keep the user's headings, their order and the [[#id]] link, and write in the language the user writes in. Leave a section's placeholder line if there's nothing to say rather than inventing facts.

Input parameters:

- `task` (integer, required)

### `list_new_imports` (~64 tokens)

Tasks imported from Azure Boards that no agent has analyzed yet, with their task and link. Analyze each one (update_task to append a short summary, acceptance criteria and suggested subtasks to the body; create_task for subtasks if useful), then call mark_analyzed.

### `mark_analyzed` (~34 tokens)

Mark an imported task as analyzed so it no longer shows up in list_new_imports.

Input parameters:

- `task` (integer, required)

### `import_azure` (~41 tokens)

Fetch work items assigned to the user in Azure Boards and create or refresh tasks in the mapped Fjord projects (mappings are set in Fjord's Settings).

### `backlinks` (~32 tokens)

Notes that link to a project, task or note.

Input parameters:

- `id` (integer, required)
- `kind` (string, required)

### `attach_file` (~49 tokens)

Copy a local file into Fjord and attach it to a project or task.

Input parameters:

- `path` (string, required)
- `project` (string, required): Project id or slug
- `task` (integer)

### `search` (~25 tokens)

Full-text search across tasks, notes and file names.

Input parameters:

- `query` (string, required)

### `link_repo` (~49 tokens)

Link a project to the git repository at a local path (GitHub or Azure DevOps is detected from origin).

Input parameters:

- `path` (string, required)
- `project` (string, required): Project id or slug

### `git_status` (~31 tokens)

Current branch, branches and recent commits of a project's repository.

Input parameters:

- `project` (string, required): Project id or slug

### `start_branch` (~96 tokens)

Check out (or create) the git branch for a task, named <type>/<id>-<title>, e.g. feat/12-add-login. type is feat, fix, chore, docs, refactor, test, perf, ci or hotfix (guessed from the task if omitted). Moves the task to in progress when auto-move is on.

Input parameters:

- `id` (integer, required)
- `type` (string)

### `link_branch` (~58 tokens)

Link a task to a branch that already exists in the linked repository (or unlink with branch: null), so its pull requests show on the task. Doesn't check anything out.

Input parameters:

- `branch` (string|null, required)
- `id` (integer, required)

### `list_pull_requests` (~43 tokens)

GitHub pull requests of a project with CI state and linked tasks; moves tasks of merged PRs to done.

Input parameters:

- `project` (string, required): Project id or slug

### `open_pull_request` (~42 tokens)

Push a task's branch and open a GitHub pull request using the task title and description.

Input parameters:

- `draft` (boolean)
- `id` (integer, required)

### `recent_activity` (~34 tokens)

Recent changes, optionally for one project.

Input parameters:

- `limit` (integer)
- `project` (string): Project id or slug

## Diagnostics

Captured diagnostic sections: Provenance. The full working is on the page: https://verifymcp.io/servers/jhtjernsmo-fjord/fjord-mcp#diagnostics

## Score history

- 2026-10-23: 38
- 2026-10-22: 37

## Common questions

### What is the Fjord MCP server?

Fjord is an MCP server listed in the public MCP registry as io.github.jhtjernsmo/fjord. Local kanban boards, markdown notes and Git/GitHub/Azure DevOps work from the Fjord app. This page covers its MCPB bundle (https://github.com/jhtjernsmo/fjord/releases/download/v0.2.32/fjord-mcp.mcpb).

### Is the Fjord MCP server safe to use?

Fjord scores 38 out of 100 on VerifyMCP. 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 Fjord MCP server expose?

Fjord exposes 28 tools: list_projects, get_board, create_project, create_task, get_task, and 23 more. Their descriptions and schemas cost roughly 1,632 tokens of context every time the server is loaded.

### What licence is the Fjord MCP server under?

Fjord declares the MIT OR Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- Repository: https://github.com/jhtjernsmo/fjord
- Website: https://jhtjernsmo.github.io/fjord/
- Changelog RSS feed: https://verifymcp.io/servers/jhtjernsmo-fjord/fjord-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/jhtjernsmo-fjord/fjord-mcp.json
- HTML version of this page: https://verifymcp.io/servers/jhtjernsmo-fjord/fjord-mcp
