UNPKG

systemprompt-mcp-notion

Version:

A specialized Model Context Protocol (MCP) server that integrates Notion into your AI workflows. This server enables seamless access to Notion through MCP, allowing AI agents to interact with pages, databases, and comments.

58 lines (57 loc) 2.06 kB
import { NOTION_PROMPTS } from "../constants/prompts.js"; import { injectVariablesIntoText } from "../utils/message-handlers.js"; export async function handleListPrompts(request) { try { if (!NOTION_PROMPTS || !Array.isArray(NOTION_PROMPTS)) { throw new Error("Failed to fetch prompts"); } return { prompts: NOTION_PROMPTS.map(({ messages, ...rest }) => rest), }; } catch (error) { console.error("Failed to fetch prompts:", error); throw error; } } export async function handleGetPrompt(request) { try { if (!NOTION_PROMPTS || !Array.isArray(NOTION_PROMPTS)) { throw new Error("Failed to fetch prompts"); } const foundPrompt = NOTION_PROMPTS.find((p) => p.name === request.params.name); if (!foundPrompt) { throw new Error(`Prompt not found: ${request.params.name}`); } if (!foundPrompt.messages || !Array.isArray(foundPrompt.messages) || foundPrompt.messages.length === 0) { throw new Error(`Messages not found for prompt: ${request.params.name}`); } const injectedMessages = foundPrompt.messages.map((message) => { if (message.role === "user" && message.content.type === "text" && request.params.arguments) { return { role: message.role, content: { type: "text", text: injectVariablesIntoText(message.content.text, request.params.arguments), }, }; } return message; }); return { name: foundPrompt.name, description: foundPrompt.description, arguments: foundPrompt.arguments || [], messages: injectedMessages, _meta: foundPrompt._meta, }; } catch (error) { console.error("Failed to fetch prompt:", error); throw error; } }