Skip to main content
Glama

DeepWriter MCP Server

Official
uploadProjectFiles.ts3.03 kB
import * as apiClient from '../api/deepwriterClient.js'; // Define input/output types based on schema (API key from environment) interface UploadProjectFilesInputArgs { project_id: string; files: File[]; // Array of File objects } // Define the MCP-compliant output structure interface UploadProjectFilesMcpOutput { content: { type: 'text'; text: string }[]; } export const uploadProjectFilesTool = { name: "uploadProjectFiles", description: "Upload multiple files to a project with enhanced support for 20+ file types including PDF, Word, text, code, and data files", async execute(args: UploadProjectFilesInputArgs): Promise<UploadProjectFilesMcpOutput> { console.error(`Executing uploadProjectFiles tool for project ID: ${args.project_id}...`); // Get API key from environment const apiKey = process.env.DEEPWRITER_API_KEY; if (!apiKey) { throw new Error("DEEPWRITER_API_KEY environment variable is required"); } if (!args.project_id) { throw new Error("Missing required argument: project_id"); } if (!args.files || !Array.isArray(args.files) || args.files.length === 0) { throw new Error("Missing required argument: files (must be a non-empty array of File objects)"); } try { // Call the actual API client function const apiResponse = await apiClient.uploadProjectFiles(apiKey, args.project_id, args.files); console.error(`API call successful for uploadProjectFiles. Uploaded ${apiResponse.summary.successful_uploads} files.`); // Generate a detailed response message let responseText = `File upload completed for project ${args.project_id}:\n`; responseText += `Total files: ${apiResponse.summary.total_files}\n`; responseText += `Successful uploads: ${apiResponse.summary.successful_uploads}\n`; responseText += `Failed uploads: ${apiResponse.summary.failed_uploads}\n`; if (apiResponse.files.length > 0) { responseText += '\nSuccessfully uploaded files:\n'; apiResponse.files.forEach((file, index) => { responseText += `${index + 1}. ${file.file_name} (${file.file_type}, ${file.file_size} bytes)\n`; }); } if (apiResponse.summary.errors.length > 0) { responseText += '\nUpload errors:\n'; apiResponse.summary.errors.forEach((error, index) => { responseText += `${index + 1}. ${error.file_name}: ${error.error}\n`; }); } // Transform the API response into MCP format const mcpResponse: UploadProjectFilesMcpOutput = { content: [ { type: 'text', text: responseText.trim() } ] }; return mcpResponse; } catch (error) { console.error(`Error executing uploadProjectFiles tool: ${error}`); const errorMessage = error instanceof Error ? error.message : String(error); throw new Error(`Failed to upload files to project ${args.project_id}: ${errorMessage}`); } } };

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/deepwriter-ai/Deepwriter-MCP'

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