Skip to main content
Glama

Theneo MCP Server

by atombreak
version.handlers.tsβ€’6.31 kB
import { TheneoService } from "../../services/theneo.service.js"; import { logger } from "../../utils/logger.js"; import { CreateProjectVersionInput, CreateProjectVersionSchema, AddSubscriberToProjectVersionInput, AddSubscriberToProjectVersionSchema, } from "../../schemas/index.js"; /** * Handler for listing project versions */ export async function handleListProjectVersions( theneoService: TheneoService, args: { projectId?: string; projectName?: string; workspaceId?: string; workspaceKey?: string; workspaceName?: string; } ) { const { projectId: inputProjectId, projectName, workspaceId: inputWorkspaceId, workspaceKey, workspaceName } = args; // Resolve workspace ID if name or key provided const workspaceId = await theneoService.resolveWorkspaceId( inputWorkspaceId, workspaceKey, workspaceName ); if (workspaceName && !workspaceId) { return { content: [ { type: "text", text: `Error: Workspace '${workspaceName}' not found`, }, ], }; } // Resolve project ID from name if needed const projectId = await theneoService.resolveProjectId(inputProjectId, projectName, workspaceId); if (!projectId) { return { content: [ { type: "text", text: projectName ? `Error: Project '${projectName}' not found` : "Error: projectId or projectName is required", }, ], }; } logger.info("Listing project versions", { projectId, projectName, workspace: workspaceName || workspaceKey, }); const theneo = theneoService.getClient(); const result = await theneo.listProjectVersions(projectId); if (!result.ok) { const error = result.error; logger.error("Failed to list project versions", { error }); return { content: [ { type: "text", text: `Error: ${error?.message || "Failed to list project versions"}`, }, ], }; } const versions = result.value; logger.info("Project versions listed successfully"); return { content: [ { type: "text", text: JSON.stringify(versions, null, 2), }, ], }; } /** * Handler for creating a project version */ export async function handleCreateProjectVersion(theneoService: TheneoService, args: any) { const input = CreateProjectVersionSchema.parse(args) as CreateProjectVersionInput; // Resolve workspace ID if name or key provided const workspaceId = await theneoService.resolveWorkspaceId( input.workspaceId, input.workspaceKey, input.workspaceName ); if (input.workspaceName && !workspaceId) { return { content: [ { type: "text", text: `Error: Workspace '${input.workspaceName}' not found`, }, ], }; } // Resolve project ID from name if needed const projectId = await theneoService.resolveProjectId(input.projectId, input.projectName, workspaceId); if (!projectId) { return { content: [ { type: "text", text: input.projectName ? `Error: Project '${input.projectName}' not found` : "Error: projectId or projectName is required", }, ], }; } logger.info("Creating project version", { projectId, projectName: input.projectName, versionName: input.name, }); const theneo = theneoService.getClient(); const result = await theneo.createProjectVersion({ name: input.name, projectId, previousVersionId: input.previousVersionId, isNewVersion: input.isNewVersion, isEmpty: input.isEmpty, isDefault: input.isDefault, }); if (!result.ok) { const error = result.error; logger.error("Failed to create project version", { error }); return { content: [ { type: "text", text: `Error: ${error?.message || "Failed to create project version"}`, }, ], }; } const version = result.value; logger.info("Project version created successfully"); return { content: [ { type: "text", text: JSON.stringify(version, null, 2), }, ], }; } /** * Handler for deleting a project version */ export async function handleDeleteProjectVersion( theneoService: TheneoService, args: { versionId: string } ) { const { versionId } = args; if (!versionId) { return { content: [ { type: "text", text: "Error: versionId is required", }, ], }; } logger.info("Deleting project version", { versionId }); const theneo = theneoService.getClient(); const result = await theneo.deleteProjectVersion(versionId); if (!result.ok) { const error = result.error; logger.error("Failed to delete project version", { error }); return { content: [ { type: "text", text: `Error: ${error?.message || "Failed to delete project version"}`, }, ], }; } logger.info("Project version deleted successfully"); return { content: [ { type: "text", text: `Project version '${versionId}' deleted successfully`, }, ], }; } /** * Handler for adding subscriber to project version */ export async function handleAddSubscriberToVersion(theneoService: TheneoService, args: any) { const input = AddSubscriberToProjectVersionSchema.parse(args) as AddSubscriberToProjectVersionInput; logger.info("Adding subscriber to project version", { email: input.email, versionId: input.projectVersionId, }); const theneo = theneoService.getClient(); const result = await theneo.addSubscriberToProjectVersion({ email: input.email, projectVersionId: input.projectVersionId, }); if (!result.ok) { const error = result.error; logger.error("Failed to add subscriber", { error }); return { content: [ { type: "text", text: `Error: ${error?.message || "Failed to add subscriber"}`, }, ], }; } logger.info("Subscriber added successfully"); return { content: [ { type: "text", text: `Subscriber '${input.email}' added successfully to version '${input.projectVersionId}'`, }, ], }; }

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/atombreak/theneo-mcp'

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