obsidian-mcp-server
Version:
MCP server for Obsidian vaults — read, write, search, and surgically edit notes, tags, and frontmatter via the Local REST API plugin. STDIO or Streamable HTTP.
50 lines • 2.61 kB
JavaScript
/**
* @fileoverview Tool registration barrel. Tools are split into read-only and
* write groups so the entry point can wrap the write set with `disabledTool()`
* when `OBSIDIAN_READ_ONLY=true`. The command-palette pair is exported
* separately so the entry point wraps it with `disabledTool()` when either
* `OBSIDIAN_ENABLE_COMMANDS=false` or `OBSIDIAN_READ_ONLY=true` — keeping this
* module free of eager config reads. `obsidian_search_notes` is exposed as a
* factory (`buildSearchNotesTool`) because its mode enum is conditional on
* Omnisearch reachability, which is only known after the startup probe runs.
* @module mcp-server/tools/definitions/index
*/
import { obsidianAppendToNote } from './obsidian-append-to-note.tool.js';
import { obsidianDeleteNote } from './obsidian-delete-note.tool.js';
import { obsidianExecuteCommand } from './obsidian-execute-command.tool.js';
import { obsidianGetNote } from './obsidian-get-note.tool.js';
import { obsidianListCommands } from './obsidian-list-commands.tool.js';
import { obsidianListNotes } from './obsidian-list-notes.tool.js';
import { obsidianListTags } from './obsidian-list-tags.tool.js';
import { obsidianManageFrontmatter } from './obsidian-manage-frontmatter.tool.js';
import { obsidianManageTags } from './obsidian-manage-tags.tool.js';
import { obsidianOpenInUi } from './obsidian-open-in-ui.tool.js';
import { obsidianPatchNote } from './obsidian-patch-note.tool.js';
import { obsidianReplaceInNote } from './obsidian-replace-in-note.tool.js';
import { obsidianWriteNote } from './obsidian-write-note.tool.js';
export { buildSearchNotesTool } from './obsidian-search-notes.tool.js';
/**
* Read-only tools that don't depend on runtime probes — always registered,
* even with `OBSIDIAN_READ_ONLY=true`. `obsidian_search_notes` is constructed
* separately in the entry point via `buildSearchNotesTool` so its mode enum
* can reflect Omnisearch reachability.
*/
export const readToolDefinitions = [
obsidianGetNote,
obsidianListNotes,
obsidianListTags,
obsidianOpenInUi,
];
/** Write tools — wrapped with `disabledTool()` when `OBSIDIAN_READ_ONLY=true`. */
export const writeToolDefinitions = [
obsidianWriteNote,
obsidianAppendToNote,
obsidianPatchNote,
obsidianReplaceInNote,
obsidianManageFrontmatter,
obsidianManageTags,
obsidianDeleteNote,
];
/** Command-palette tools — opt-in via `OBSIDIAN_ENABLE_COMMANDS=true`; suppressed by `OBSIDIAN_READ_ONLY=true`. */
export const commandToolDefinitions = [obsidianListCommands, obsidianExecuteCommand];
//# sourceMappingURL=index.js.map