Atlas / MCP servers / spencerbeggs / okfit

okfitBLOCK

mcp/spencerbeggs/okfit

Node.js tooling for Google Open Knowlege Format agentic documentation system.

Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
14 14r · 0w · 0d
Transport
—
License
MIT
Stars
2
01

Overview

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

Node.js tooling for the Open Knowledge Format (OKF), built on Effect.

OKF is a directory of markdown files with YAML frontmatter that captures what a project is and should be, with provenance, trust, and lifecycle as first-class fields. okfit gives humans and agents a CLI, an MCP server, and an agent plugin for Claude Code and GitHub Copilot for authoring, validating, and querying those bundles.

Packages

The agent plugin lives in plugin/: one pluginfinity source built into a Claude Code plugin (plugin/builds/claude/) and a GitHub Copilot plugin (plugin/builds/copilot/).

Working with Claude Code

Run pnpm claude to start a session with this repository's own plugin loaded (claude --plugin-dir plugin/builds/claude) -- ten skills, the okf-docs and okf-publisher agents, the MCP and LSP servers, and the session-start/validate hooks documented in plugin/README.md. After editing anything under plugin/, run pnpm plugin:build.

Status

Early development. Nothing is published yet.

License

MIT

Read from source at commit a4155b79cfe8OBSERVED · 2026-10-11
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.

claude-code
claude mcp add docs -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "docs": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ]
    }
  }
}
03

Exposed tools (14)

14 read · 0 write · 0 destructive.

ToolRiskDescription
DecisionreadA choice made, the alternatives rejected, and why.
ModulereadA unit of code with an owner and a boundary.
architecturereadConcerns the shape of the system rather than one module.
kindreadWhat sort of unit.
layerreadFree text.
monorepo-routerreadA monorepo whose root README routes to per-package READMEs.
monorepo-shared-docsreadA monorepo with routing READMEs plus a shared root docs/ folder, contributor guides and per-package docs/ folders read on the forge.
npm-packagereadA single package published to npm: a README surface that links to a docs/ folder surface.
okfitreadTeaches AI coding agents the Open Knowledge Format (OKF) v0.2 and keeps a repository
packagereadAn npm package.
resourcereadWhere the code lives.
sitereadA documentation website plus one-page README variants that link to it; keep the variants that match the repository shape.
testingreadConcerns how the system is verified.
websitereadA site.
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 codePASS
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

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

Findings (25)

HIGHPrompt injection · prompt.zero_width · CWE-94, CWE-1427
packages/engine/__test__/fixtures/edits/expected/status-bom.md:1
---
Why it matters. invisible characters in instruction text
Fix. strip non-printing characters
HIGHPrompt injection · prompt.zero_width · CWE-94, CWE-1427
packages/engine/__test__/fixtures/edits/status-bom.md:1
---
Why it matters. invisible characters in instruction text
Fix. strip non-printing characters
HIGHPrompt injection · prompt.zero_width · CWE-94, CWE-1427
packages/engine/__test__/fixtures/sync/generated/bom.md:1
---
Why it matters. invisible characters in instruction text
Fix. strip non-printing characters
HIGHPrompt injection · prompt.zero_width · CWE-94, CWE-1427
packages/engine/__test__/fixtures/verify/bom.md:1
---
Why it matters. invisible characters in instruction text
Fix. strip non-printing characters
HIGHPrompt injection · prompt.zero_width · CWE-94, CWE-1427
packages/engine/__test__/fixtures/verify/expected/bom.md:1
---
Why it matters. invisible characters in instruction text
Fix. strip non-printing characters
LOWInventory / provenance · inv.hidden_file · CWE-1104
.changeset/.markdownlint.json
.markdownlint.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.envrc
.envrc
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.gitmodules
.gitmodules
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
lib/configs/.markdownlint-cli2.jsonc
.markdownlint-cli2.jsonc
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
packages/core/__test__/fixtures/bad/c-hidden-directory/.hidden.md
.hidden.md
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/cli/__test__/commands/context.test.ts:3
import { contextCommand } from "../../src/commands/context.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/cli/__test__/commands/context.test.ts:4
import { rootCommand } from "../../src/commands/root.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/cli/__test__/commands/graph.test.ts:3
import { graphCommand } from "../../src/commands/graph.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/cli/__test__/commands/init.test.ts:2
import { initCommand } from "../../src/commands/init.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/cli/__test__/commands/lint.test.ts:3
import { lintCommand } from "../../src/commands/lint.js";
LOWObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
packages/core/__test__/internals.test.ts:11
assert.strictEqual(detectFence("---\ntype: A\n---\n"), "absent");
LOWObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
packages/engine/__test__/edits/FrontmatterEdits.test.ts:201
const source = `${pub("  - path: a.md")}`;
LOWObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
packages/engine/__test__/edits/FrontmatterEdits.test.ts:203
assert.strictEqual(out, `${pub(`  - path: a.md\n    body: ${D1}`)}`),
LOWObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
packages/engine/__test__/edits/FrontmatterEdits.test.ts:343
const source = doc(["type: Module", "status: draft", "title: Alpha"], "\n", "");
LOWObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
packages/engine/__test__/edits/FrontmatterEdits.test.ts:345
assert.ok(out.startsWith("---\n"));
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@savvy-web/silk, @vitest-agent/plugin, pluginfinity
Why it matters. 3 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/cli/package.json
@savvy-web/bundler
Why it matters. 1 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/core/package.json
@savvy-web/bundler
Why it matters. 1 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/engine/package.json
@savvy-web/bundler
Why it matters. 1 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/lsp/package.json
vscode-languageserver, @savvy-web/bundler, vscode-jsonrpc
Why it matters. 3 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 a4155b79cfe8full audit observations/trust-audit/mcp-server/spencerbeggs__okfit.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-11a4155b79cfe8BLOCKD69first audit
06

Questions

What is the @okfit/plugin MCP server?

Node.js tooling for Google Open Knowlege Format agentic documentation system.

What tools does @okfit/plugin expose?

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

Is @okfit/plugin safe to connect to an agent?

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

What credentials does @okfit/plugin need?

No credential environment variables were found in its source, so it appears to need none.

How current is this page?

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

Advertisement