Skip to main content
Glama

WebDAV MCP Server

by masx200
prompt-handlers.ts5.82 kB
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { z } from "zod"; export function setupPromptHandlers(server: McpServer) { // Prompt for creating a new file server.prompt( "webdav_create_remote_file", { path: z.string().min(1, "Path must not be empty"), content: z.string(), description: z.string().optional(), }, (args) => ({ messages: [ { role: "user", content: { type: "text", text: `Create a new file on the remote WebDAV server at path "${args.path}"${ args.description ? ` with the following description: ${args.description}` : "" }. Content to save on the remote WebDAV server: ${args.content} Please execute this remote WebDAV operation and confirm when complete.`, }, }, ], }), ); // Prompt for reading a file server.prompt( "webdav_get_remote_file", { path: z.string().min(1, "Path must not be empty"), }, (args) => ({ messages: [ { role: "user", content: { type: "text", text: `Retrieve the content of the file located at "${args.path}" from the remote WebDAV server and display its contents.`, }, }, ], }), ); // Prompt for updating a file server.prompt( "webdav_update_remote_file", { path: z.string().min(1, "Path must not be empty"), content: z.string(), reason: z.string().optional(), }, (args) => ({ messages: [ { role: "user", content: { type: "text", text: `Update the existing file at "${args.path}" on the remote WebDAV server${ args.reason ? ` for the following reason: ${args.reason}` : "" }. New content to save on the remote WebDAV server: ${args.content} Please execute this remote WebDAV update operation and confirm when complete.`, }, }, ], }), ); // Prompt for deleting a file or directory server.prompt( "webdav_delete_remote_item", // The issue is with boolean not being compatible with the prompt schema // Using string as a workaround { path: z.string().min(1, "Path must not be empty"), confirm: z.string().optional(), }, (args) => { const confirmationEnabled = args.confirm !== "false"; const pathValue = args.path; const isDirectory = pathValue.endsWith("/"); return { messages: [ { role: "user", content: { type: "text", text: `Delete the ${ isDirectory ? "directory" : "file" } at "${pathValue}" from the remote WebDAV server. ${ confirmationEnabled ? "Please confirm this action to proceed with deletion." : "Execute this remote deletion operation." } Please confirm when the remote WebDAV deletion is complete.`, }, }, ], }; }, ); // Prompt for listing directory contents server.prompt( "webdav_list_remote_directory", { path: z.string().optional(), }, (args) => { const pathToUse = args.path || "/"; return { messages: [ { role: "user", content: { type: "text", text: `List all files and directories in the remote WebDAV directory "${pathToUse}". Please provide a well-formatted list showing: - File/directory names - Types (file or directory) - Sizes (for files) - Last modified dates (if available) This is for a remote WebDAV server, not a local filesystem.`, }, }, ], }; }, ); // Prompt for creating a directory server.prompt( "webdav_create_remote_directory", { path: z.string().min(1, "Path must not be empty"), }, (args) => ({ messages: [ { role: "user", content: { type: "text", text: `Create a new directory on the remote WebDAV server at path "${args.path}". Please execute this remote WebDAV operation and confirm when the directory has been created.`, }, }, ], }), ); // Prompt for moving/renaming a file or directory server.prompt( "webdav_move_remote_item", { fromPath: z.string().min(1, "Source path must not be empty"), toPath: z.string().min(1, "Destination path must not be empty"), reason: z.string().optional(), }, (args) => ({ messages: [ { role: "user", content: { type: "text", text: `Move or rename the file/directory from "${args.fromPath}" to "${args.toPath}" on the remote WebDAV server${ args.reason ? ` for the following reason: ${args.reason}` : "" }. Please execute this remote WebDAV operation and confirm when complete.`, }, }, ], }), ); // Prompt for copying a file or directory server.prompt( "webdav_copy_remote_item", { fromPath: z.string().min(1, "Source path must not be empty"), toPath: z.string().min(1, "Destination path must not be empty"), }, (args) => ({ messages: [ { role: "user", content: { type: "text", text: `Copy the file or directory from "${args.fromPath}" to "${args.toPath}" on the remote WebDAV server. Please execute this remote WebDAV copy operation and confirm when complete.`, }, }, ], }), ); }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/masx200/mcp-webdav-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server