hackmd-mcp
Version:
This is a Model Context Protocol (MCP) server for interacting with the [HackMD API](https://hackmd.io/@hackmd-api/developer-portal). It allows AI assistants to perform operations such as:
68 lines (67 loc) • 2.3 kB
JavaScript
import { z } from "zod";
// 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"),
});