Tano's local stdio MCP Gateway lets external agents query files, objects, relations, and data tables, then submit changes for review using stable IDs and revisions.
Connect a local workspace
Open or refresh the workspace in desktop Tano first. Copy the startup configuration from its MCP panel. Node.js 24.12 or newer is required; application data must be outside the workspace and match the desktop app's directory so proposals and activity are shared.
From the open source checkout:
npm run mcp:build
node apps/mcp/dist/tano-mcp.cjs --workspace /path/to/notes --data-dir /path/to/tano-app-data --access review
| Access | Allowed operations |
|---|---|
read |
Queries and reads |
review (default) |
Reads and pending change proposals |
write |
Also enables legacy direct Markdown creation and conditional updates |
Repeat --directory to limit ordinary file directories and --object-type to limit object types. These scopes are independent. Workspace guidance and model output cannot expand them. Cross-resource proposals still require review even with write access.
Query current content
| Tool | Result |
|---|---|
tano_gateway_capabilities |
Workspace identity and granted access |
tano_query_files / tano_read_file |
File IDs, paths, properties, hashes, and content snapshots |
tano_query_objects |
Typed object records and revisions |
tano_query_table |
Table records, saved views, and computed values |
tano_query_relations |
Relations between authorized endpoints |
tano_read_workspace_rules |
Known workspace guidance files |
Check query errors and completeness before concluding that nothing matched. Read by stable ID, retain the returned hash, and refresh after external moves. A path alone does not establish file identity.
Submit and review changes
Use tano_propose_changes for Markdown, object JSON, and .table.json changes. Supply an operationId and edits with path, content, reason, and expectedHash; existing files also require their fileId. Use null for a new file's expected hash. Retry the same operation ID only with identical input.
Open external proposals in assistant session history and review each diff before applying or rejecting it. Query tano_get_operation for per-item states and actual write receipts. Submission does not mean that content was saved. A batch can partly succeed; it is not an all-or-nothing filesystem transaction.
Legacy tano_read_document_identity, tano_propose_document, and tano_get_proposal remain available for document proposals. Markdown proposals can enter individual suggestion review; table and object proposals remain in assistant review.
Direct writes and activity
tano_list_documents and tano_read_document cover legacy Markdown reads. tano_create_document and tano_write_document require explicit --access write. Updates compare expectedHash with the file's current SHA-256; new files cannot overwrite an existing path.
After a stale-write rejection, reread and merge before resubmitting. Do not simply replace the hash while retaining outdated content. tano_list_activity and tano_read_activity expose recorded local operations and available diffs; labels do not authenticate the client's identity.
The gateway is local stdio, not a network collaboration server or terminal executor. Hidden application data and out-of-workspace symlinks are outside its read scope. See agent workflows, file access, and the source integration guide.