@smartsheet/smar-mcp
Version:
A Model Context Protocol (MCP) server for interacting with the Smartsheet API. This server provides tools for searching, retrieving, and updating Smartsheet sheets through the MCP protocol.
93 lines (92 loc) • 3.43 kB
JavaScript
import { z } from "zod";
export function getFolderTools(server, api) {
// Tool: Get Folder
server.tool("get_folder", "Retrieves the current state of a folder, including its contents which can be sheets, reports, or other folders", {
folderId: z.string().describe("The ID of the folder to retrieve")
}, async ({ folderId }) => {
try {
console.info(`Getting folder with ID: ${folderId}`);
const folder = await api.folders.getFolder(folderId);
return {
content: [
{
type: "text",
text: JSON.stringify(folder, null, 2)
}
]
};
}
catch (error) {
console.error(`Failed to get folder with ID: ${folderId}`, { error });
return {
content: [
{
type: "text",
text: `Failed to get_folder: ${error.message}`
}
],
isError: true
};
}
});
// Tool: Create Folder in folder
server.tool("create_folder", "Creates a new folder in a folder", {
folderId: z.string().describe("The ID of the folder to create the folder in"),
folderName: z.string().describe("The name of the new folder")
}, async ({ folderId, folderName }) => {
try {
console.info(`Creating folder in workspace with ID: ${folderId}`);
const folder = await api.folders.createFolder(folderId, folderName);
return {
content: [
{
type: "text",
text: JSON.stringify(folder, null, 2)
}
]
};
}
catch (error) {
console.error(`Failed to create folder in workspace with ID: ${folderId}`, { error });
return {
content: [
{
type: "text",
text: `Failed to create_folder: ${error.message}`
}
],
isError: true
};
}
});
// Tool: Create Folder in workspace
server.tool("create_workspace_folder", "Creates a new folder in a workspace", {
workspaceId: z.string().describe("The ID of the workspace to create the folder in"),
folderName: z.string().describe("The name of the new folder")
}, async ({ workspaceId, folderName }) => {
try {
console.info(`Creating folder in workspace with ID: ${workspaceId}`);
const folder = await api.workspaces.createWorkspaceFolder(workspaceId, folderName);
return {
content: [
{
type: "text",
text: JSON.stringify(folder, null, 2)
}
]
};
}
catch (error) {
console.error(`Failed to create folder in workspace with ID: ${workspaceId}`, { error });
return {
content: [
{
type: "text",
text: `Failed to create_workspace_folder: ${error.message}`
}
],
isError: true
};
}
});
}