Atlas / MCP servers / mcp-tool-shop-org / repo-knowledge

repo-knowledgeSAFE

mcp/mcp-tool-shop-org/repo-knowledge

Repo knowledge system — relational catalog with full-text search, audit evidence, and MCP access

Verdict
SAFE
Grade
B
Trust score
88 /100
Exposed tools
46 38r · 6w · 2d
Transport
stdio
License
MIT
Stars
0
01

Overview

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

日本語 | 中文 | Español | Français | हिन्दी | Italiano | Português (BR)

Local-first repo knowledge system built on SQLite and FTS5. Catalogs repositories with structured metadata, thesis notes, architecture docs, audit evidence, and inter-repo relationships — then exposes everything through a CLI and MCP server for AI-integrated workflows.

Why

Package registries and GitHub APIs tell you what a repo is. They don't tell you what it's for, how it relates to your other repos, what its architectural thesis is, or whether it passed your last security audit. repo-knowledge fills that gap: a single local database that holds thesis, architecture, audit evidence, relationships, and full-text search across all of it.

Install

npm install -g @mcptoolshop/repo-knowledge

Requirements:

  • Node.js 20+ — this package's engines.node is >=20. The l
Read from source at commit 99452431d686OBSERVED · 2026-10-12
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
claude mcp add sample-test-repo --env GITHUB_TOKEN=${GITHUB_TOKEN} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "sample-test-repo": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "GITHUB_TOKEN": "${GITHUB_TOKEN}"
      }
    }
  }
}
03

Exposed tools (46)

38 read · 6 write · 2 destructive. Blast radius: 2 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
areadan indexable description
add_relationshipwriteRecord a relationship between two repos.
add_repo_notewriteAdd a knowledge note to a repo. Use for thesis, architecture, warnings, next steps, etc.
alphareadalpha service with quokka-token in the blurb
archive_reporeadMark a repo archived (lifecycle_status=archived, deprecated_at=now). Preserves all notes/findings — this is the reversible alternative to delete_repo. If reason is given it is recorded as a warning note. Re-archiving is idempotent (re-confirms deprecated_at).
audit_controls_listreadList all canonical audit controls, optionally filtered by domain. Use this to know what control IDs to reference when submitting audit results.
audit_detailreadGet the full latest audit for a repo: all control results, findings, metrics, and artifacts.
audit_failingreadList repos whose LATEST audit has failing controls in a given domain. Returns each failing control id + title + notes per repo.
audit_findingsreadList open audit findings across the portfolio. Filter by severity or domain.
audit_portfolioreadPortfolio-wide audit posture: all repos with their latest audit status, grouped by posture (critical/needs_attention/healthy/unaudited).
audit_posturereadGet audit posture for a repo: last audit date, status, open findings by severity, failed domains, pass rate.
audit_submitwriteSubmit audit results for a repo. This is the primary ingestion tool for Claude auditors. Accepts the full audit payload: run metadata, control results, findings, and metrics.
audit_unauditedreadList repos that have no audit runs yet.
breadfirst
betareadbeta library
col-titlereaddocumented title quux literal marker in the body
colon-reporeadthe slug hello literal marker phrase lives here
db_fsckread
delete_repodestructiveHARD-DELETE a repo and all related rows (notes, facts, docs, relationships, audit runs — FK cascade). IRREVERSIBLE. There is no interactive prompt over MCP, so
find_reposreadFilter repos by owner, status, category, language, framework, or app shape.
get_reporeadGet full knowledge dump for a repo. Includes tech, notes, facts, releases, relationships.
health_doctorreadSingle-repo build-health deep dive: CI, declared/observed toolchain + drift, dep-audit (with CVE IDs) and history, workflow actions + permissions. DB-only read (no network refresh).
health_feedreadBuild-health change feed across the whole portfolio: audit deltas, newly-unpinned actions, broken CI streaks, toolchain drift. DB-only read (no registry/network refresh) — reflects state as of the last
health_portfolioreadPortfolio health rollup — one row per repo with CI / dep / action-pin health grades + toolchain-drift flag and inline detail. DB-only read (no network refresh).
knowledge_statsreadShow database statistics: counts of repos, notes, docs, facts, releases, relationships.
multireadtagged content
oldreaddesc
ops_runswriteList recent operational run rows: db_health_runs (fsck) and/or sync_runs. Read-only audit trail. Use kind to scope to one table.
rreadA test repo for FTS
related_reposreadShow repos related to a given repo (dependencies, companions, successors, etc).
repodestructiveDROP TABLE repos; -- malicious
repo1readsomething with ${marker} inside
repo_diffreadPer-repo DB-entry change history within a time window: notes added, audit runs, dep-audit severity deltas, published versions. Default window is the last 7 days. DB-only read.
repo_summaryreadCompact one-paragraph summary of a repo: what it is, what stack, what state, what is next.
repo_versionsreadList published versions recorded for a repo, grouped per channel (npm / pypi / github-release). READ-ONLY — unlike
repos_by_stackreadFind repos using a specific tech stack combination. Example:
repos_needing_workreadFind repos that need attention: unaudited, stale, have warnings, or need next steps.
search_reposreadFull-text search across all indexed content: docs, notes, repo descriptions. Use this when you remember a concept but not the repo name.
suggest_dogfoodreadGet dogfood intelligence suggestions (findings, patterns, recommendations, doctrine) for a repo OR a product surface. Specify EXACTLY ONE of repo / surface.
sync_dogfoodwriteSync dogfood evidence from dogfood-lab/testing-os into repo_facts. One-way read — testing-os remains write authority.
sync_reposwriteTrigger a full sync: GitHub metadata + local repo scan + FTS reindex.
test-reporeadA test
unicode-edgeread日本語 content here
unicode-fr-accreadcafé au lait french press
unicode-jpread日本語のテスト
unicode-survivereadcafé tested edge case
04

Trust audit

SAFEgrade B · trust 88/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

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

Findings (17)

MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
delete_repo, repo
Why it matters. 2 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/audit/import.ts:570
checksum = createHash('md5').update(content).digest('hex');
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/sync/local.ts:53
return createHash('md5').update(content).digest('hex');
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/mcp/server.ts:90
const { version: pkgVersion } = require('../../package.json') as { version: string };
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@modelcontextprotocol/sdk, better-sqlite3, commander, @eslint/js, @types/better-sqlite3, @types/node, @vitest/coverage-v8, eslint
Why it matters. 12 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
site/package.json
@astrojs/starlight, @mcptoolshop/site-theme, @tailwindcss/vite, astro, tailwindcss
Why it matters. 5 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
test/fixtures/sample-repo/package.json
express, better-sqlite3, typescript
Why it matters. 3 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
research/STUDY-RK-003/pack-practitioner.md:26
8. SECURITY.md stdio MCP — mcp-tool-shop-org · dated 2026-06-22 on tip · `SECURITY.md` L26–30 — MCP server runs locally over stdio with no network endpoints; GitHub sync uses `gh` auth (no credentials
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
research/STUDY-RK-014/pack-analogist.md:18
5. VS Code telemetry opt-out / local-first data folder — VS Code Docs — ongoing — https://code.visualstudio.com/docs/configure/telemetry — Hold-with-limit: operator can keep the tool local with no pho
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
research/STUDY-RK-085/pack-analogist.md:11
3. HOLD-WITH-LIMIT — Push protection / secret scanning gate class (GitHub Docs) — https://docs.github.com/en/code-security/concepts/secret-security/push-protection — Blocks new land of secret/identity
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
research/STUDY-RK-090/pack-analogist.md:15
3. Push protection / secret scanning gate class — https://docs.github.com/en/code-security/concepts/secret-security/push-protection — Hold-with-limit: blocks new land of secret/identity class; does no
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
research/STUDY-RK-104/pack-analogist.md:20
3. Push protection / secret scanning gate — GitHub Docs — https://docs.github.com/en/code-security/concepts/secret-security/push-protection — Hold-with-limit: blocks new land of identity class; does n
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
README.md:41
**Data NOT touched:** no source code is read from GitHub, no credentials are stored, no data is sent to external services.
Why it matters. asks the agent to read credentials
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
research/STUDY-RK-007/pack-practitioner.md:12
1. README Security Model HARD — mcp-tool-shop-org · tip `ab89010` (2026-09-11) · `/workspace/studio/repo-knowledge/README.md` L39–41 — **Data touched:** local SQLite + GitHub API metadata via `gh` (re
Why it matters. asks the agent to read credentials
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
research/STUDY-RK-010/pack-analogist.md:24
8. Soft folklore that registry read credentials imply publish rights — Fail-transfer: read packument needs no publish token; soft folklore: 0. Did not publish.
Why it matters. asks the agent to read credentials
INFOPrompt injection · prompt.fetch_and_trust · CWE-94, CWE-1427
research/STUDY-RK-015/pack-scholar.md:15
6. Mynampaty, Josephine, Isaacs, McNutt (2026). Linting Style and Substance in READMEs. arXiv:2603.00331 / https://arxiv.org/abs/2603.00331 — LintMe can execute documented CLI/install commands as subs
Why it matters. remote text is to be obeyed as instructions
INFOPrompt injection · prompt.persistence · CWE-94, CWE-1427
research/STUDY-RK-105/pack-practitioner.md:17
7. beginners backup FAQ — PATH covered, content uncleared | org: local tip + PR heads | date: 2026-09-23 | path: `site/src/content/docs/handbook/beginners.md` · PRs #17/#19/#24 | Finding: tip FAQ stil
Why it matters. instructs the agent to persist itself in the user's environment

Gates applied: no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha 99452431d686full audit observations/trust-audit/mcp-server/mcp-tool-shop-org__repo-knowledge.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-1299452431d686SAFEB88first audit
06

Questions

What is the repo-knowledge MCP server?

Repo knowledge system — relational catalog with full-text search, audit evidence, and MCP access

What tools does repo-knowledge expose?

46 in total: 38 read-only, 6 that write, and 2 that can delete or overwrite (delete_repo, repo). Every one is listed on this page with its risk.

Is repo-knowledge safe to connect to an agent?

The audit found nothing in the source that contradicts what it says it does, and graded it B (88/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B. Separately from the audit: 2 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does repo-knowledge need?

It reads GITHUB_TOKEN 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 repo-knowledge run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as sample-test-repo at 1.0.0.

How current is this page?

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

Advertisement