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() }; export const getProjects: Tool<typeof schema> = { title: "get-projects", description: "List all available projects in an Autodesk Construction Cloud account", schema, callback: async ({ accountId }) => { // TODO: add pagination support const accessToken = await getAccessToken(["data:read"]); const dataManagementClient = new DataManagementClient(); const projects = await dataManagementClient.getHubProjects(accountId, { accessToken }); if (!projects.data) { throw new Error("No projects found"); } return { content: projects.data.map((project) => ({ type: "text", text: JSON.stringify({ id: project.id, name: project.attributes?.name }) })) }; } };