obsidian-mcp-server
Version:
Model Context Protocol (MCP) server designed for LLMs to interact with Obsidian vaults. Provides secure, token-aware tools for seamless knowledge base management through a standardized interface.
69 lines • 2.11 kB
JavaScript
/**
* Property types and schemas for Obsidian notes
*/
import { z } from "zod";
/**
* Define validation schemas
* Allow any string for type to be more flexible
*/
export const PropertyType = z.string();
/**
* Valid status values for notes
*/
export const StatusEnum = z.enum([
"draft",
"in-progress",
"review",
"complete"
]);
/**
* Schema for reading properties (includes timestamps)
*/
export const ObsidianPropertiesSchema = z.object({
// Basic Metadata
// Note: Timestamps are managed automatically
title: z.string().optional(),
modified: z.string().datetime().optional(), // Read-only, managed by MCP server
author: z.string().optional(),
// Classification
type: z.array(PropertyType).optional(),
// Organization
tags: z.array(z.string()).optional(),
// Technical Metadata
status: z.array(StatusEnum).optional(),
version: z.string().optional(),
platform: z.string().optional(),
repository: z.string().url().optional(),
dependencies: z.array(z.string()).optional(),
// References
sources: z.array(z.string()).optional(),
urls: z.array(z.string().url()).optional(),
papers: z.array(z.string()).optional(),
// Custom Fields
custom: z.record(z.unknown()).optional()
});
/**
* Schema for validating property updates (excludes timestamps)
*/
export const PropertyUpdateSchema = z.object({
// Basic Metadata
title: z.string().optional(),
author: z.string().optional(),
// Classification
type: z.array(PropertyType).optional(),
// Organization
tags: z.array(z.string()).optional(),
// Technical Metadata
status: z.array(StatusEnum).optional(),
version: z.string().optional(),
platform: z.string().optional(),
repository: z.string().url().optional(),
dependencies: z.array(z.string()).optional(),
// References
sources: z.array(z.string()).optional(),
urls: z.array(z.string().url()).optional(),
papers: z.array(z.string()).optional(),
// Custom Fields
custom: z.record(z.unknown()).optional()
});
//# sourceMappingURL=types.js.map