UNPKG

hackmd-mcp

Version:

A Model Context Protocol server for integrating HackMD's note-taking platform with AI assistants.

78 lines (77 loc) 2.64 kB
import { z } from "zod"; import { DEFAULT_HACKMD_API_URL } from "./constants.js"; export const ConfigSchema = z.object({ hackmdApiToken: z .string() .describe("HackMD API token for authenticated requests"), hackmdApiUrl: z .string() .optional() .describe(`HackMD API URL (defaults to ${DEFAULT_HACKMD_API_URL})`), }); // Local type definitions to match HackMD API types var NotePermissionRole; (function (NotePermissionRole) { NotePermissionRole["OWNER"] = "owner"; NotePermissionRole["SIGNED_IN"] = "signed_in"; NotePermissionRole["GUEST"] = "guest"; })(NotePermissionRole || (NotePermissionRole = {})); var CommentPermissionType; (function (CommentPermissionType) { CommentPermissionType["DISABLED"] = "disabled"; CommentPermissionType["FORBIDDEN"] = "forbidden"; CommentPermissionType["OWNERS"] = "owners"; CommentPermissionType["SIGNED_IN_USERS"] = "signed_in_users"; CommentPermissionType["EVERYONE"] = "everyone"; })(CommentPermissionType || (CommentPermissionType = {})); export const CreateNoteOptionsSchema = z.object({ title: z.string().optional().describe("Note title"), content: z.string().optional().describe("Note content"), readPermission: z .enum([ NotePermissionRole.OWNER, NotePermissionRole.SIGNED_IN, NotePermissionRole.GUEST, ]) .optional() .describe("Read permission"), writePermission: z .enum([ NotePermissionRole.OWNER, NotePermissionRole.SIGNED_IN, NotePermissionRole.GUEST, ]) .optional() .describe("Write permission"), commentPermission: z .enum([ CommentPermissionType.DISABLED, CommentPermissionType.FORBIDDEN, CommentPermissionType.OWNERS, CommentPermissionType.SIGNED_IN_USERS, CommentPermissionType.EVERYONE, ]) .optional() .describe("Comment permission"), permalink: z.string().optional().describe("Custom permalink"), }); export const UpdateNoteOptionsSchema = z.object({ content: z.string().optional().describe("New note content"), readPermission: z .enum([ NotePermissionRole.OWNER, NotePermissionRole.SIGNED_IN, NotePermissionRole.GUEST, ]) .optional() .describe("Read permission"), writePermission: z .enum([ NotePermissionRole.OWNER, NotePermissionRole.SIGNED_IN, NotePermissionRole.GUEST, ]) .optional() .describe("Write permission"), permalink: z.string().optional().describe("Custom permalink"), });