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
JavaScript
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"),
});