Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,4 @@ jspm_packages/
.env

.history/
.specs/
346 changes: 346 additions & 0 deletions bun.lock

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"description": "MCP сервер для автоматизации развертывания приложений в Timeweb Cloud",
"scripts": {
"build": "tsdown && chmod 755 dist/index.js",
"prepare": "npm run build",
"start": "node -r dotenv/config dist/index.js",
"inspect": "export DANGEROUSLY_OMIT_AUTH=true && npx @modelcontextprotocol/inspector npm run start",
"clean": "rm -rf dist",
Expand Down
8 changes: 8 additions & 0 deletions src/actions/add-ai-agent-token-package.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { aiAgentsApiClient } from "../api";

export const addAiAgentTokenPackageAction = async (
agentId: number,
count?: number
): Promise<void> => {
await aiAgentsApiClient.addAgentTokenPackage(agentId, { count });
};
8 changes: 8 additions & 0 deletions src/actions/add-balancer-ips.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { balancersApiClient } from "../api";

export const addBalancerIpsAction = async (
balancerId: number,
ips: string[]
): Promise<void> => {
await balancersApiClient.addBalancerIps(balancerId, ips);
};
9 changes: 9 additions & 0 deletions src/actions/add-balancer-to-project.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { projectsApiClient } from "../api/projects";
import { ProjectResource } from "../types/project.type";

export const addBalancerToProjectAction = async (
projectId: number,
resourceId: number
): Promise<ProjectResource> => {
return await projectsApiClient.addBalancerToProject(projectId, resourceId);
};
7 changes: 7 additions & 0 deletions src/actions/add-bucket-subdomain-certificate.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { s3BucketsApiClient } from "../api";

export const addBucketSubdomainCertificateAction = async (
subdomain: string
): Promise<void> => {
await s3BucketsApiClient.addBucketSubdomainCertificate(subdomain);
};
9 changes: 9 additions & 0 deletions src/actions/add-bucket-subdomains.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { s3BucketsApiClient } from "../api";
import { AddedBucketSubdomain } from "../types/bucket-subdomain.type";

export const addBucketSubdomainsAction = async (
bucketId: number,
subdomains: string[]
): Promise<AddedBucketSubdomain[]> => {
return await s3BucketsApiClient.addBucketSubdomains(bucketId, subdomains);
};
9 changes: 9 additions & 0 deletions src/actions/add-bucket-to-project.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { projectsApiClient } from "../api/projects";
import { ProjectResource } from "../types/project.type";

export const addBucketToProjectAction = async (
projectId: number,
resourceId: number
): Promise<ProjectResource> => {
return await projectsApiClient.addBucketToProject(projectId, resourceId);
};
9 changes: 9 additions & 0 deletions src/actions/add-cluster-to-project.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { projectsApiClient } from "../api/projects";
import { ProjectResource } from "../types/project.type";

export const addClusterToProjectAction = async (
projectId: number,
resourceId: number
): Promise<ProjectResource> => {
return await projectsApiClient.addClusterToProject(projectId, resourceId);
};
9 changes: 9 additions & 0 deletions src/actions/add-database-to-project.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { projectsApiClient } from "../api/projects";
import { ProjectResource } from "../types/project.type";

export const addDatabaseToProjectAction = async (
projectId: number,
resourceId: number
): Promise<ProjectResource> => {
return await projectsApiClient.addDatabaseToProject(projectId, resourceId);
};
9 changes: 9 additions & 0 deletions src/actions/add-dedicated-to-project.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { projectsApiClient } from "../api/projects";
import { ProjectResource } from "../types/project.type";

export const addDedicatedToProjectAction = async (
projectId: number,
resourceId: number
): Promise<ProjectResource> => {
return await projectsApiClient.addDedicatedToProject(projectId, resourceId);
};
5 changes: 5 additions & 0 deletions src/actions/add-domain.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { domainsApiClient } from "../api";

export const addDomainAction = async (fqdn: string): Promise<void> => {
await domainsApiClient.addDomain(fqdn);
};
8 changes: 8 additions & 0 deletions src/actions/add-knowledge-base-token-package.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { knowledgeBasesApiClient } from "../api";

export const addKnowledgeBaseTokenPackageAction = async (
id: number,
count?: number
): Promise<void> => {
await knowledgeBasesApiClient.addKnowledgeBaseTokenPackage(id, { count });
};
9 changes: 9 additions & 0 deletions src/actions/add-server-ip.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { serversApiClient, AddServerIpParams } from "../api/servers";
import { ServerIp } from "../types/server-ip.type";

export const addServerIpAction = async (
serverId: number,
params: AddServerIpParams
): Promise<ServerIp> => {
return await serversApiClient.addServerIp(serverId, params);
};
9 changes: 9 additions & 0 deletions src/actions/add-server-to-project.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { projectsApiClient } from "../api/projects";
import { ProjectResource } from "../types/project.type";

export const addServerToProjectAction = async (
projectId: number,
resourceId: number
): Promise<ProjectResource> => {
return await projectsApiClient.addServerToProject(projectId, resourceId);
};
8 changes: 8 additions & 0 deletions src/actions/add-ssh-keys-to-server.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { sshKeysApiClient } from "../api";

export const addSshKeysToServerAction = async (
serverId: number,
sshKeyIds: number[]
): Promise<void> => {
await sshKeysApiClient.addSshKeysToServer(serverId, sshKeyIds);
};
9 changes: 9 additions & 0 deletions src/actions/add-subdomain.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { domainsApiClient } from "../api";
import { DomainSubdomain } from "../types/domain.type";

export const addSubdomainAction = async (
fqdn: string,
subdomainFqdn: string
): Promise<DomainSubdomain> => {
return await domainsApiClient.addSubdomain(fqdn, subdomainFqdn);
};
10 changes: 10 additions & 0 deletions src/actions/batch-create-mailboxes-v1.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { mailApiClient } from "../api";
import { Mailbox } from "../types/mailbox.type";
import { BatchCreateMailboxesV1RequestDto } from "../types/dto/batch-create-mailboxes-request.dto";

export const batchCreateMailboxesV1Action = async (
domain: string,
data: BatchCreateMailboxesV1RequestDto
): Promise<Mailbox[]> => {
return await mailApiClient.batchCreateMailboxesV1(domain, data);
};
10 changes: 10 additions & 0 deletions src/actions/batch-create-mailboxes.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { mailApiClient } from "../api";
import { MailboxesBatchV2 } from "../types/mailbox.type";
import { BatchCreateMailboxesV2RequestDto } from "../types/dto/batch-create-mailboxes-request.dto";

export const batchCreateMailboxesAction = async (
domain: string,
data: BatchCreateMailboxesV2RequestDto
): Promise<MailboxesBatchV2> => {
return await mailApiClient.batchCreateMailboxesV2(domain, data);
};
9 changes: 9 additions & 0 deletions src/actions/bind-floating-ip.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { dbaasApiClient } from "../api";
import { BindFloatingIpRequestDto } from "../types/dto/bind-floating-ip-request.dto";

export const bindFloatingIpAction = async (
floatingIpId: string,
data: BindFloatingIpRequestDto
): Promise<void> => {
await dbaasApiClient.bindFloatingIp(floatingIpId, data);
};
5 changes: 5 additions & 0 deletions src/actions/check-domain.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { domainsApiClient } from "../api";

export const checkDomainAction = async (fqdn: string): Promise<boolean> => {
return await domainsApiClient.checkDomain(fqdn);
};
6 changes: 6 additions & 0 deletions src/actions/clone-server.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { serversApiClient } from "../api";
import { Server } from "../types/server.type";

export const cloneServerAction = async (serverId: number): Promise<Server> => {
return await serversApiClient.cloneServer(serverId);
};
9 changes: 9 additions & 0 deletions src/actions/create-ai-agent.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { aiAgentsApiClient } from "../api";
import { AiAgent } from "../types/ai-agent.type";
import { CreateAiAgentRequestDto } from "../types/dto/create-ai-agent-request.dto";

export const createAiAgentAction = async (
data: CreateAiAgentRequestDto
): Promise<AiAgent> => {
return await aiAgentsApiClient.createAgent(data);
};
9 changes: 9 additions & 0 deletions src/actions/create-api-key.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { authApiClient } from "../api";
import { CreatedApiKey } from "../types/api-key.type";
import { CreateApiKeyRequestDto } from "../types/dto/create-api-key-request.dto";

export const createApiKeyAction = async (
data: CreateApiKeyRequestDto
): Promise<CreatedApiKey> => {
return await authApiClient.createApiKey(data);
};
10 changes: 10 additions & 0 deletions src/actions/create-balancer-rule.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { balancersApiClient } from "../api";
import { BalancerRule } from "../types/balancer.type";
import { CreateBalancerRuleRequestDto } from "../types/dto/create-balancer-rule-request.dto";

export const createBalancerRuleAction = async (
balancerId: number,
data: CreateBalancerRuleRequestDto
): Promise<BalancerRule> => {
return await balancersApiClient.createBalancerRule(balancerId, data);
};
9 changes: 9 additions & 0 deletions src/actions/create-balancer.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { balancersApiClient } from "../api";
import { Balancer } from "../types/balancer.type";
import { CreateBalancerRequestDto } from "../types/dto/create-balancer-request.dto";

export const createBalancerAction = async (
data: CreateBalancerRequestDto
): Promise<Balancer> => {
return await balancersApiClient.createBalancer(data);
};
9 changes: 9 additions & 0 deletions src/actions/create-bucket.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { s3BucketsApiClient } from "../api";
import { Bucket } from "../types/bucket.type";
import { CreateBucketRequestDto } from "../types/dto/create-bucket-request.dto";

export const createBucketAction = async (
data: CreateBucketRequestDto
): Promise<Bucket> => {
return await s3BucketsApiClient.createBucket(data);
};
9 changes: 9 additions & 0 deletions src/actions/create-container-registry.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { containerRegistryApiClient } from "../api";
import { ContainerRegistry } from "../types/container-registry.type";
import { CreateContainerRegistryRequestDto } from "../types/dto/create-container-registry-request.dto";

export const createContainerRegistryAction = async (
data: CreateContainerRegistryRequestDto
): Promise<ContainerRegistry> => {
return await containerRegistryApiClient.createContainerRegistry(data);
};
10 changes: 10 additions & 0 deletions src/actions/create-database-admin.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { dbaasApiClient } from "../api";
import { DatabaseAdminEntity } from "../types/database-cluster.type";
import { CreateDatabaseAdminRequestDto } from "../types/dto/create-database-admin-request.dto";

export const createDatabaseAdminAction = async (
clusterId: number,
data: CreateDatabaseAdminRequestDto
): Promise<DatabaseAdminEntity | null> => {
return await dbaasApiClient.createDatabaseAdmin(clusterId, data);
};
9 changes: 9 additions & 0 deletions src/actions/create-database-backup.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { dbaasApiClient } from "../api";
import { DatabaseBackup } from "../types/database-cluster.type";

export const createDatabaseBackupAction = async (
dbId: number,
comment?: string
): Promise<DatabaseBackup | null> => {
return await dbaasApiClient.createDatabaseBackup(dbId, comment);
};
10 changes: 10 additions & 0 deletions src/actions/create-database-instance.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { dbaasApiClient } from "../api";
import { DatabaseInstanceEntity } from "../types/database-cluster.type";
import { CreateDatabaseInstanceRequestDto } from "../types/dto/create-database-instance-request.dto";

export const createDatabaseInstanceAction = async (
clusterId: number,
data: CreateDatabaseInstanceRequestDto
): Promise<DatabaseInstanceEntity | null> => {
return await dbaasApiClient.createDatabaseInstance(clusterId, data);
};
9 changes: 9 additions & 0 deletions src/actions/create-dedicated-server.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { dedicatedServersApiClient } from "../api";
import { DedicatedServer } from "../types/dedicated-server.type";
import { CreateDedicatedServerRequestDto } from "../types/dto/create-dedicated-server-request.dto";

export const createDedicatedServerAction = async (
data: CreateDedicatedServerRequestDto
): Promise<DedicatedServer> => {
return await dedicatedServersApiClient.createDedicatedServer(data);
};
10 changes: 10 additions & 0 deletions src/actions/create-dns-record.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { domainsApiClient } from "../api";
import { DnsRecordV2 } from "../types/dns-record.type";
import { CreateDnsRecordV2RequestDto } from "../types/dto/create-dns-record-request.dto";

export const createDnsRecordAction = async (
fqdn: string,
data: CreateDnsRecordV2RequestDto
): Promise<DnsRecordV2> => {
return await domainsApiClient.createDnsRecord(fqdn, data);
};
16 changes: 16 additions & 0 deletions src/actions/create-firewall-group.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { firewallApiClient } from "../api";
import {
FirewallGroup,
FirewallPolicy,
} from "../types/firewall-group.type";

export const createFirewallGroupAction = async (
name: string,
description?: string,
policy?: FirewallPolicy
): Promise<FirewallGroup> => {
return await firewallApiClient.createFirewallGroup(
{ name, description },
policy
);
};
10 changes: 10 additions & 0 deletions src/actions/create-firewall-rule.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { firewallApiClient } from "../api";
import { CreateFirewallRuleRequestDto } from "../types/dto/create-firewall-rule-request.dto";
import { FirewallRule } from "../types/firewall-rule.type";

export const createFirewallRuleAction = async (
groupId: string,
data: CreateFirewallRuleRequestDto
): Promise<FirewallRule> => {
return await firewallApiClient.createFirewallRule(groupId, data);
};
10 changes: 10 additions & 0 deletions src/actions/create-image-download.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { imagesApiClient } from "../api";
import { ImageDownload } from "../types/image-download.type";
import { CreateImageDownloadRequestDto } from "../types/dto/create-image-download-request.dto";

export const createImageDownloadAction = async (
imageId: string,
data: CreateImageDownloadRequestDto
): Promise<ImageDownload> => {
return await imagesApiClient.createImageDownload(imageId, data);
};
9 changes: 9 additions & 0 deletions src/actions/create-image.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { imagesApiClient } from "../api";
import { Image } from "../types/image.type";
import { CreateImageRequestDto } from "../types/dto/create-image-request.dto";

export const createImageAction = async (
data: CreateImageRequestDto
): Promise<Image> => {
return await imagesApiClient.createImage(data);
};
9 changes: 9 additions & 0 deletions src/actions/create-k8s-cluster.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { kubernetesApiClient } from "../api";
import { CreateK8sClusterRequestDto } from "../types/dto/create-k8s-cluster-request.dto";
import { K8sCluster } from "../types/k8s-cluster.type";

export const createK8sClusterAction = async (
data: CreateK8sClusterRequestDto
): Promise<K8sCluster> => {
return await kubernetesApiClient.createCluster(data);
};
10 changes: 10 additions & 0 deletions src/actions/create-k8s-node-group.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { kubernetesApiClient } from "../api";
import { CreateK8sNodeGroupRequestDto } from "../types/dto/create-k8s-node-group-request.dto";
import { K8sNodeGroup } from "../types/k8s-node-group.type";

export const createK8sNodeGroupAction = async (
clusterId: number,
data: CreateK8sNodeGroupRequestDto
): Promise<K8sNodeGroup> => {
return await kubernetesApiClient.createNodeGroup(clusterId, data);
};
9 changes: 9 additions & 0 deletions src/actions/create-knowledge-base.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { knowledgeBasesApiClient } from "../api";
import { KnowledgeBase } from "../types/knowledge-base.type";
import { CreateKnowledgeBaseRequestDto } from "../types/dto/create-knowledge-base-request.dto";

export const createKnowledgeBaseAction = async (
data: CreateKnowledgeBaseRequestDto
): Promise<KnowledgeBase> => {
return await knowledgeBasesApiClient.createKnowledgeBase(data);
};
Loading