Atlas / MCP servers / aliasunder / vault-cortex

vault-cortexBLOCK

mcp/aliasunder/vault-cortex

Standalone MCP server for Obsidian vaults — hybrid search, structured memory, task management, files, OAuth 2.1. Run locally, self-host, or one-click deploy for remote access.

Verdict
BLOCK
Grade
D
Trust score
65 /100
Exposed tools
6 6r · 0w · 0d
Transport
streamable-http
License
MIT
Stars
26
01

Overview

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

[](https://github.com/aliasunder/vault-cortex/actions/workflows/ci.yml) [](https://github.com/aliasunder/vault-cortex/actions/workflows/gitleaks.yml) [](https://github.com/aliasunder/vault-cortex/actions/workflows/trivy.yml) [](https://github.com/aliasunder/vault-cortex/releases) [](https://www.npmjs.com/package/vault-cortex) [](https://scorecard.dev/viewer/?uri=github.com/aliasunder/vault-cortex) [](https://www.bestpractices.dev/projects/14162) [](https://deepwiki.com/aliasunder/vault-cortex) [](https://glama.ai/mcp/servers/aliasunder/vault-cortex)

Vault Cortex is a standalone MCP server that gives any AI agent hybrid search, task management, structured memory, and read/write access to your Obsidian vault. No plugins, no running Obsidian, no separate bridge. One Docker container, your vault folder, a full tool suite + guided prompts. Run it on a remote

Read from source at commit d4fe3c474918OBSERVED · 2026-10-10
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 (oci)
claude mcp add vault-cortex:0.54.12 --env MCP_AUTH_TOKEN=${MCP_AUTH_TOKEN} -- docker run -i --rm ghcr.io/aliasunder/vault-cortex:0.54.12:None
03

Exposed tools (6)

6 read · 0 write · 0 destructive.

ToolRiskDescription
vault-orientationreadSurvey the vault
vault_areadRead a note.
vault_a_long_tool_name_left_out_of_the_measurereadRead a note.
vault_breadList.
vault_read_notereadRead a note
vault_xreadPlan — 😀
04

Trust audit

BLOCKgrade D · trust 65/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 codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (9 observation(s))
Network
declared (3 observation(s))
Shell
declared (5 observation(s))
Dependencies
pinned
Secrets in source
found

Findings (25)

HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
scripts/dev.ts:178
const keyPath = expandHome(env.LIGHTSAIL_SSH_KEY ?? "~/.ssh/vault-cortex")
Why it matters. touches a credential store
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
scripts/dev.ts:184
`    ssh-keygen -t ed25519 -f ~/.ssh/vault-cortex -C vault-cortex-deploy`,
Why it matters. touches a credential store
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
sst.config.ts:146
: [expandHome("~/.ssh/vault-cortex.pub")]
Why it matters. touches a credential store
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
sst.config.ts:153
`  ssh-keygen -t ed25519 -f ~/.ssh/vault-cortex -C vault-cortex-deploy\n` +
Why it matters. touches a credential store
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
cli/src/get-sync-token.ts:164
prompts.print(`\n  ${token}\n`)
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
Dockerfile:176
CMD ["node", "-e", "fetch(`http://127.0.0.1:${process.env.PORT||8000}/healthz`).then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"]
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
src/__tests__/docker/docker-harness.ts:313
token: "fake-sync-token-from-setup-page",
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
src/__tests__/docker/remote-image-boot.test.ts:1379
token: "fake-stale-sync-token",
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
src/functions/__tests__/authorizer.test.ts:181
secret: "not-the-lambda-secret",
LOWInventory / provenance · inv.hidden_file · CWE-1104
.coderabbit.yaml
.coderabbit.yaml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.gitleaks.toml
.gitleaks.toml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.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
.prettierignore
.prettierignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.prettierrc.json
.prettierrc.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.symlink · CWE-1104
CLAUDE.md
CLAUDE.md
Why it matters. link not followed
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/__tests__/docker/fixtures/sync-engine-oracle.ts:98
const compileBundle = new Function(
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
cli/src/__tests__/integration/pty-harness.ts:17
const CLI_BIN = resolve(thisDir, "../../bin.ts")
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
cli/src/__tests__/node-version.test.ts:22
readFileSync(fileURLToPath(new URL("../../package.json", import.meta.url)), "utf8"),
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
cli/src/__tests__/templates.test.ts:6
import { loadConfig } from "../../../src/vault-mcp/config.js"
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
cli/src/__tests__/templates.test.ts:11
readFileSync(fileURLToPath(new URL(`../../../${repoRelativePath}`, import.meta.url)), "utf8")
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
scripts/__tests__/instance-env.test.ts:224
new URL(`../../.github/workflows/${workflowFile}`, import.meta.url),
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
cli/src/__tests__/configure.test.ts:197
expect(fetchedUrls).toEqual(["http://127.0.0.1:9100/healthz"])
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
cli/src/__tests__/docker.test.ts:222
{ url: "http://127.0.0.1:8000/healthz", timeoutMs: 100, intervalMs: 1 },
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
cli/src/__tests__/docker.test.ts:244
url: "http://127.0.0.1:8000/healthz",
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
cli/src/__tests__/docker.test.ts:261
{ url: "http://127.0.0.1:8000/healthz", timeoutMs: 20, intervalMs: 1 },

Gates applied: no_behavioural_pass.

Audited 2026-10-10 · audit v0.4.1 · source sha d4fe3c474918full audit observations/trust-audit/mcp-server/aliasunder__vault-cortex.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-10d4fe3c474918BLOCKD65first audit
06

Questions

What is the vault-cortex MCP server?

Standalone MCP server for Obsidian vaults — hybrid search, structured memory, task management, files, OAuth 2.1. Run locally, self-host, or one-click deploy for remote access.

What tools does vault-cortex expose?

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

Is vault-cortex safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (65/100) and found 4 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 vault-cortex need?

It reads GH_TOKEN and MCP_AUTH_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 vault-cortex run?

It speaks streamable-http, so it runs as a service you connect to over the network. It is published on npm as vault-cortex at 0.54.12.

How current is this page?

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

Advertisement