Skip to main content
Glama

Obsidian MCP

by takuya0206
server.ts2.78 kB
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { ObsidianAPI } from "./api/obsidian-api.js"; import { createReadNoteTool, createReadActiveNoteTool, createListNotesTool, createPatchNoteTool, createAdvancedSearchJsonLogicTool, readNoteDefinition, readActiveNoteDefinition, listNotesDefinition, patchNoteDefinition, advancedSearchJsonLogicDefinition, } from "./tools/index.js"; /** * Obsidian MCP Server class * Handles server initialization and tool registration */ export class ObsidianMcpServer { private server: McpServer; private api: ObsidianAPI; /** * Create a new Obsidian MCP Server */ constructor() { // Initialize Obsidian API this.api = new ObsidianAPI(); // Initialize MCP server this.server = new McpServer({ name: "obsidian-mcp", version: "1.0.0", }); // Register tools this.registerTools(); } /** * Register all tools with the MCP server */ private registerTools() { // 1. readNote - Read the contents of a specific note this.server.tool( readNoteDefinition.name, readNoteDefinition.description, readNoteDefinition.schema, createReadNoteTool(this.api) ); // 2. readActiveNote - Read the contents of the current active note this.server.tool( readActiveNoteDefinition.name, readActiveNoteDefinition.description, readActiveNoteDefinition.schema, createReadActiveNoteTool(this.api) ); // 3. listNotes - List all notes in the vault or a specific folder this.server.tool( listNotesDefinition.name, listNotesDefinition.description, listNotesDefinition.schema, createListNotesTool(this.api) ); // 4. patchNote - Patch a note with new content this.server.tool( patchNoteDefinition.name, patchNoteDefinition.description, patchNoteDefinition.schema, createPatchNoteTool(this.api) ); // 5. searchWithJsonLogic - Search with WithJsonLogic this.server.tool( advancedSearchJsonLogicDefinition.name, advancedSearchJsonLogicDefinition.description, advancedSearchJsonLogicDefinition.schema, createAdvancedSearchJsonLogicTool(this.api) ); } /** * Start the server */ async start() { console.error("Obsidian MCP Server starting..."); const transport = new StdioServerTransport(); await this.server.connect(transport); console.error("Obsidian MCP Server running on stdio"); // Handle termination process.on("SIGINT", async () => { console.error("Shutting down Obsidian MCP Server..."); await this.server.close(); process.exit(0); }); } }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/takuya0206/obsidian-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server