MCP Tools for Obsidian

import { mount, unmount } from "svelte"; import type { SetupResult } from "../mcp-server-install/types"; import SettingsTab from "./components/SettingsTab.svelte"; import { App, PluginSettingTab } from "obsidian"; import type McpToolsPlugin from "../../main"; export class McpToolsSettingTab extends PluginSettingTab { plugin: McpToolsPlugin; component?: { $set?: unknown; $on?: unknown; }; constructor(app: App, plugin: McpToolsPlugin) { super(app, plugin); this.plugin = plugin; } display(): void { const { containerEl } = this; containerEl.empty(); this.component = mount(SettingsTab, { target: containerEl, props: { plugin: this.plugin }, }); } hide(): void { this.component && unmount(this.component); } } export async function setup(plugin: McpToolsPlugin): Promise<SetupResult> { try { // Add settings tab to plugin plugin.addSettingTab(new McpToolsSettingTab(plugin.app, plugin)); return { success: true }; } catch (error) { return { success: false, error: error instanceof Error ? error.message : String(error), }; } }