updateImageItemUsingFileFromDevice.ts•3.04 kB
import MiroClient from '../client.js';
import { z } from 'zod';
import { ServerResponse } from '../server-response.js';
import { ToolSchema } from '../tool.js';
import { UploadFileFromDeviceData } from '@mirohq/miro-api/dist/model/uploadFileFromDeviceData.js';
import { RequestFile } from '@mirohq/miro-api/dist/model/models.js';
import * as fs from 'fs';
import FormData from 'form-data';
const updateImageItemUsingFileFromDeviceTool: ToolSchema = {
name: "update-image-item-using-file",
description: "Update an existing image item on a Miro board using file from device",
args: {
boardId: z.string().describe("Unique identifier (ID) of the board where you want to update the item"),
itemId: z.string().describe("Unique identifier (ID) of the image that you want to update"),
filePath: z.string().describe("Path to the new image file on the device"),
title: z.string().optional().nullish().describe("Updated title of the image"),
position: z.object({
x: z.number().optional().nullish().describe("Updated X coordinate of the image"),
y: z.number().optional().nullish().describe("Updated Y coordinate of the image"),
origin: z.string().optional().nullish().describe("Updated origin of the image (center, top-left, etc.)"),
relativeTo: z.string().optional().nullish().describe("Updated reference point (canvas_center, etc.)")
}).optional().nullish().describe("Updated position of the image on the board")
},
fn: async ({ boardId, itemId, filePath, title, position }) => {
try {
if (!boardId) {
return ServerResponse.error("Board ID is required");
}
if (!itemId) {
return ServerResponse.error("Item ID is required");
}
if (!filePath) {
return ServerResponse.error("File path is required");
}
// Implementacja aktualizacji obrazu z pliku lokalnego nie jest możliwa bezpośrednio w MCP
// ponieważ wymaga dostępu do systemu plików klienta oraz konstruktora FormData
const instructionsForUser = {
message: "Aktualizacja obrazu z pliku lokalnego nie jest obecnie obsługiwana bezpośrednio w MCP Miro.",
alternatives: [
"1. Użyj funkcji 'update-image-item' z URL do obrazu.",
"2. Alternatywnie, możesz użyć bezpośrednio API Miro przez SDK lub żądania HTTP:",
" - Utwórz formularz FormData",
" - Dodaj plik do formularza",
" - Wyślij żądanie PATCH do https://api.miro.com/v2/boards/{boardId}/images/{itemId}",
" - Dodaj nagłówek 'Content-Type: multipart/form-data' oraz token autoryzacyjny"
],
documentation: "Więcej informacji znajdziesz w dokumentacji API Miro: https://developers.miro.com/reference/update-image-item-using-file-from-device"
};
return ServerResponse.text(JSON.stringify(instructionsForUser, null, 2));
} catch (error) {
return ServerResponse.error(error);
}
}
}
export default updateImageItemUsingFileFromDeviceTool;