🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

filamental-mcp

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

filamental-mcp

MCP server exposing your Filamental vault to AI assistants (Claude, Claude Code, etc.)

latest
Source
npmnpm
Version
0.2.9
Version published
Maintainers
1
Created
Source

filamental-mcp

A local Model Context Protocol server that connects AI assistants (Claude Desktop, Claude Code, etc.) directly to your Filamental knowledge graph.

The server reads and writes your vault -- searching nodes, following connections, creating and updating content -- while Filamental is running or closed. It talks to the same SQLite index the app uses, so changes are immediately visible when you open Filamental.

Requires Node.js 22+ and Filamental desktop app.

Prerequisites

  • Filamental installed and at least one vault opened (this initialises the SQLite index)
  • Node.js 22 or later

Setup via Filamental

The easiest way to connect is through the app:

  • Open Filamental and go to Settings > AI Integrations
  • Click Connect to Claude Desktop
  • Restart Claude Desktop

Filamental resolves all paths automatically. The MCP follows whichever vault you have open — no restart needed when you switch worlds.

Manual setup

Install globally:

npm install -g filamental-mcp

Then add to your claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "filamental": {
      "command": "node",
      "args": [
        "--no-warnings",
        "/absolute/path/to/node_modules/filamental-mcp/dist/index.js"
      ]
    }
  }
}

No --vault argument needed. The server reads the active vault from Filamental automatically and reconnects when you switch worlds. To pin to a specific vault (e.g. for testing), pass --vault <absolute-path> explicitly.

Claude Code

Add a .mcp.json at your project root:

{
  "mcpServers": {
    "filamental": {
      "command": "npx",
      "args": [
        "filamental-mcp",
        "--vault",
        "/absolute/path/to/your/vault"
      ]
    }
  }
}

Tools

Read

ToolDescription
get_vault_infoNode and edge counts plus entity and connector type names
list_node_typesFull entity type configuration for this vault
list_connector_typesFull connector type configuration for this vault
search_nodesFull-text search across node names, note bodies and property values
get_nodeFull node record by UUID
get_connectionsAll edges connected to a node, reported from that node's point of view (see Arrow direction)
get_subgraphBFS traversal from a root node up to N hops (max depth 3)

Write

ToolDescription
create_nodeCreate a new node -- writes a markdown file and updates the SQLite index
update_nodeUpdate an existing node; omitted fields are unchanged
delete_nodeDelete a node and remove it from the index
create_edgeAdd a relationship between two nodes
delete_edgeRemove a relationship between two nodes

Arrow direction

A connector's direction is one of none, outgoing, incoming or bidirectional. Nothing else is accepted, and an unrecognised value is rejected rather than stored.

On writes (create_edge, create_node, update_node) direction is stated relative to sourcetarget: outgoing draws the arrowhead at the target, incoming draws it back at the source, bidirectional draws both, none is a plain line.

On reads (get_connections) direction is instead stated relative to the node you asked about, because that is what the user sees on screen:

FieldMeaning
nodeThe node you asked about
otherThe node at the far end
directionWhere the arrowhead is drawn, as seen from node
stored_onWhich node's file holds the relationship

This distinction matters. Which end of a connector is stored as source is decided by whichever end the user happened to drag from when drawing it, and is invisible on the graph — an undirected connector looks identical either way round. So the same arrow reads as outgoing from one end and incoming from the other, and get_connections flips it for you. Filtering with direction: "outgoing" gives you edges whose arrow points away from the node you asked about, never edges that merely happen to be stored with it as source. A bidirectional edge matches both outgoing and incoming filters, since it genuinely points both ways; undirected matches only edges with no arrow at all.

Use stored_on only if you are editing the underlying Markdown file directly. It says nothing about what the arrow does.

CLI options

filamental-mcp --vault <path>          Use vault at <path>
filamental-mcp --vault <path> --db <path>   Override the SQLite database path (for testing)

How it works

Filamental stores all node data as Markdown files with YAML frontmatter inside your vault folder. It also maintains a SQLite index (stored in your OS app-config directory, not inside the vault) for fast full-text search and graph traversal.

This server opens that SQLite index read-write. Read tools query it directly. Write tools update both the Markdown file on disk and the SQLite index so the Filamental app sees changes immediately on next load.

Compatibility

filamental-mcpFilamental appDB schema
0.2.6+0.3.0 and later (current)v6
0.2.0 – 0.2.50.2.xv5

The server keeps working even on a schema mismatch (the DB is a disposable index, so most read/write operations tolerate drift). If a tool call fails for an unrelated reason while versions are mismatched, the error message is annotated with which side to update.

Known limitations

  • The pre-built binary (better-sqlite3) is Windows x64 only. Other platforms require building from source.
  • Auto-config via Filamental Settings has been tested on Windows. macOS path resolution is included but untested.

License

MIT — Copyright Filamental

Keywords

filamental

FAQs

Package last updated on 06 Aug 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts