@vessl-ai/mcpctl-control-plane
Version:
Vessl MCP Control Plane service for managing distributed jobs.
75 lines (64 loc) • 2 kB
text/typescript
import { Body, Controller, Get, Param, Post } from '@nestjs/common';
import {
ServerInstance,
ServerRunSpec,
} from '@vessl-ai/mcpctl-shared/types/domain/server';
import { ServerService } from './server.service';
export class ServerController {
constructor(private readonly serverService: ServerService) {}
// Start a server
async startServer(
body: { runSpec: ServerRunSpec },
): Promise<ServerInstance> {
return this.serverService.start(body.runSpec);
}
// Stop a server
async stopServer( name: string): Promise<ServerInstance> {
return this.serverService.stopInstance(name);
}
// Restart a server
async restartServer( name: string): Promise<ServerInstance> {
return this.serverService.restartInstance(name);
}
// Get status of a server
async statusServer(
name: string,
): Promise<ServerInstance | undefined> {
const instance = await this.serverService.getInstanceByName(name);
if (!instance) {
throw new Error(`Instance ${name} not found`);
}
return instance;
}
// List all servers
async listServers(): Promise<ServerInstance[]> {
return this.serverService.listInstances();
}
// List all server run specs
async listServerSpecs(): Promise<ServerRunSpec[]> {
return this.serverService.listRunSpecs();
}
async getServer(
name: string,
): Promise<ServerInstance | undefined> {
return this.serverService.getInstanceByName(name);
}
async getServerSpec(
name: string,
): Promise<ServerRunSpec | undefined> {
return this.serverService.getRunSpecByName(name);
}
async removeServer( name: string): Promise<void> {
return this.serverService.removeServerInstance(name);
}
}