APS MCP Server

import { z } from "zod"; import { DataManagementClient } from "@aps_sdk/data-management"; import { getAccessToken } from "./common.js"; import type { Tool } from "./common.js"; const schema = { accountId: z.string().nonempty(), projectId: z.string().nonempty(), folderId: z.string().optional() }; export const getFolderContents: Tool<typeof schema> = { title: "get-folder-contents", description: "List contents of a project or a specific subfolder in Autodesk Construction Cloud", schema, callback: async ({ accountId, projectId, folderId }) => { // TODO: add pagination support const accessToken = await getAccessToken(["data:read"]); const dataManagementClient = new DataManagementClient(); const contents = folderId ? await dataManagementClient.getFolderContents(projectId, folderId, { accessToken }) : await dataManagementClient.getProjectTopFolders(accountId, projectId, { accessToken }); if (!contents.data) { throw new Error("No contents found"); } return { content: contents.data.map((item) => ({ type: "text", text: JSON.stringify(item) })) }; } };