create_note
Creates a new note in Obsidian by writing Markdown content to a given file path, optionally overwriting existing files.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| content | Yes | ||
| overwrite | No |
Implementation Reference
- src/vault/notes.ts:114-136 (handler)Core implementation of createNote: ensures .md extension, resolves vault path, creates directories, checks for existing notes (throws if overwrite=false), writes file, returns result with path/created/overwritten status.
export async function createNote( relativePath: string, content: string, overwrite = false, ) { const finalPath = ensureMdExtension(relativePath); const fullPath = resolveVaultPath(finalPath); await fs.mkdir(path.dirname(fullPath), { recursive: true }); const exists = await pathExists(fullPath); if (exists && !overwrite) { throw new Error(`Note already exists: ${finalPath}`); } await fs.writeFile(fullPath, content, "utf-8"); return { path: finalPath, created: !exists, overwritten: exists && overwrite, }; } - src/tools/create-note.ts:8-14 (schema)Input schema for create_note tool: path (string, min 1), content (string), overwrite (optional boolean).
{ inputSchema: { path: z.string().min(1), content: z.string(), overwrite: z.boolean().optional(), }, }, - src/tools/create-note.ts:5-22 (registration)Registers 'create_note' tool on the MCP server with input schema and handler that calls the vault createNote function.
export function register(server: McpServer): void { server.registerTool( "create_note", { inputSchema: { path: z.string().min(1), content: z.string(), overwrite: z.boolean().optional(), }, }, async ({ path, content, overwrite }) => { const result = await createNote(path, content, overwrite ?? false); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }], }; }, ); } - src/server.ts:4-4 (registration)Imports the create-note tool module.
import * as createNote from "./tools/create-note.js"; - src/server.ts:16-16 (registration)Registers the create_note tool on the server via createNote.register(server).
createNote.register(server);