About server
server is an MCP server published by git+light-cloud-com in the Cloud category: mCP server for Light Cloud Platform - Deploy and manage applications with Claude.
Install
npx @light-cloud/mcp-serverclaude mcp add server-gitlight -- npx -y @light-cloud/mcp-servernpx -y @light-cloud/mcp-serverThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Tools (100)
add-custom-domainAttach a custom domain to an environment. Returns the DNS records to create; then poll get-custom-domain-status.
Parameters not published.
add-payment-methodSave a card for a workspace
Parameters not published.
check-repo-accessCheck if an organization has access to specific GitHub accounts
Parameters not published.
choose-planPut a workspace on a plan. Free plan: immediate, no card. Paid plan: charges the card on file for the first month;
Parameters not published.
complete-uploadMark an upload as complete with optional detection metadata
Parameters not published.
connectSIGN UP or sign in to Light Cloud with an email — the only account step needed. An email with no account gets one
Parameters not published.
connect-git-providerA link that connects a GitLab or Bitbucket account to a workspace. Give it to the user to open; once approved, create-application works with that provider
Parameters not published.
connect-statusWait for a pending `connect` sign-in to be approved (up to ~45 seconds per call).
Parameters not published.
contact-supportSend a message to Light Cloud support from the signed-in account.
Parameters not published.
create-api-keyCreate an API key for CI and other machines (lc login --api-key, or LIGHT_CLOUD_API_KEY). Paid plans only — a refusal names choose-plan as the next step. The secret is returned once; hand it to the user, never write it into files.
Parameters not published.
Show all 100 tools
create-applicationCreate a new application from a GitHub, GitLab or Bitbucket repository
Parameters not published.
create-application-from-uploadCreate a new application from an uploaded source archive
Parameters not published.
create-databaseCreate a managed database. Default: a PostgreSQL database on the shared pool (tier shared-dev, included in every plan).
Parameters not published.
create-environmentCreate a new environment for an application
Parameters not published.
create-folderCreate a folder (project) in a workspace, optionally inside another folder.
Parameters not published.
create-stackCreate an app from a stack template (for example the Open SaaS / Wasp stack): a repository is created for the user, the app is set up from it and deployed. Stacks are listed by get-platform-config when enabled for the workspace.
Parameters not published.
create-workspaceCreate a new workspace (organisation) owned by the signed-in user, on the free plan.
Parameters not published.
delete-applicationDelete an application and all its environments
Parameters not published.
delete-databaseDelete a database and all its data. Irreversible; confirm with the user first.
Parameters not published.
delete-environmentDelete an environment
Parameters not published.
delete-folderDelete an empty folder (project).
Parameters not published.
deploy-applicationTrigger a new deployment. Without environment_id the production environment is rebuilt; with it, that environment is deployed instead.
Parameters not published.
deploy-environmentTrigger a new deployment for a specific environment
Parameters not published.
detect-frameworkAuto-detect framework and configuration from a GitHub repository
Parameters not published.
detect-local-frameworkDetect framework and configuration from a local project directory
Parameters not published.
detect-local-gitDetect Git repository information from a local project directory
Parameters not published.
dump-databaseDownload a compressed SQL dump of a database to a local file (gzip). Returns the path written.
Parameters not published.
get-agent-accessWhat this account lets agents (the CLI, MCP servers, VS Code) do — the switch under Settings → Security → Agents & CLI. Read-only here; it is changed in the console.
Parameters not published.
get-applicationGet details of a specific application
Parameters not published.
get-application-statusGet the current status of an application
Parameters not published.
get-billingPlan, card on file and usage pool for a workspace. Call before creating resources: it says whether a card or a plan change is needed.
Parameters not published.
get-billing-detailsThe billing address and tax ids on the workspace
Parameters not published.
get-build-logsThe build log of one deployment (the step that turns source into a running app). For runtime logs use get-environment-logs.
Parameters not published.
get-cloudrun-configGet Cloud Run configuration options
Parameters not published.
get-custom-domain-statusWhether an environment
Parameters not published.
get-databaseDetails and status of a database (provisioning state, engine, tier, host)
Parameters not published.
get-database-connection-stringThe connection string for a ready database. Treat it as a secret: put it in an environment variable (set-environment-variables), do not print it into files.
Parameters not published.
get-database-metricsConnections, CPU, memory, storage and query load for a database over a time range.
Parameters not published.
get-database-schemaSchemas, tables, columns and row counts of a database.
Parameters not published.
get-deploymentGet details of a specific deployment
Parameters not published.
get-environmentGet details of a specific environment
Parameters not published.
get-environment-activityWho changed what on an environment, newest first: deploys, settings, scaling, domains, password gate.
Parameters not published.
get-environment-logsGet runtime logs for a backend (container) environment, newest first
Parameters not published.
get-environment-metricsRequests, latency, errors, instances, CPU and memory for an environment over a time range.
Parameters not published.
get-environment-runtimeWhat is running right now for an environment: the live deployment, instances, region, size.
Parameters not published.
get-environment-variablesThe environment variable names set on an environment (values are shown masked).
Parameters not published.
get-formatted-listGet formatted list of all applications with markdown tables and emojis
Parameters not published.
get-formatted-statusGet application status with enhanced formatting (markdown tables, emojis)
Parameters not published.
get-github-install-urlGet the URL to install the Light Cloud GitHub App
Parameters not published.
get-github-installation-statusCheck whether the Light Cloud GitHub App is installed for a repository within an organization (and can read that repository)
Parameters not published.
get-invoiceOne invoice with its lines.
Parameters not published.
get-outstanding-invoicesUnpaid invoices across the workspaces you own — what is blocking a suspended workspace.
Parameters not published.
get-platform-configGet Light Cloud platform configuration
Parameters not published.
get-profileGet the current user profile and list of organizations
Parameters not published.
get-spending-limitThe workspace
Parameters not published.
get-usageUsage against the workspace
Parameters not published.
get-usage-historyUsage over previous billing cycles.
Parameters not published.
import-databaseLoad a SQL dump (.sql or .sql.gz) from a local file into a database. Existing data is not cleared first.
Parameters not published.
invite-memberInvite someone to a workspace by email with a role (see list-roles). They get an email; the seat is active once they sign in.
Parameters not published.
list-api-keysAPI keys of a workspace (name, role, prefix, created, last used). Secrets are never shown again after creation.
Parameters not published.
list-applicationsList all applications in an organization
Parameters not published.
list-branchesList branches in a GitHub repository
Parameters not published.
list-connected-devicesEvery signed-in session on the account: browsers, the CLI, MCP servers, VS Code.
Parameters not published.
list-databasesList the databases in a workspace
Parameters not published.
list-deploymentsList deployments for an environment
Parameters not published.
list-environmentsList all environments for an application
Parameters not published.
list-foldersFolders (projects) in a workspace, used to group apps and databases.
Parameters not published.
list-github-installationsList all GitHub App installations
Parameters not published.
list-invoicesInvoices for a workspace, newest first, with status and totals.
Parameters not published.
list-membersMembers of a workspace with their roles and status.
Parameters not published.
list-notificationsThe account
Parameters not published.
list-plansThe plans a workspace can be on, with prices and what each includes (sizes, always-on, database tiers).
Parameters not published.
list-provider-repositoriesRepositories a workspace can reach through its connected GitLab or Bitbucket account. GitHub uses list-repositories.
Parameters not published.
list-repo-directoriesFolders inside a repository branch, for picking a monorepo root before create-application.
Parameters not published.
list-repositoriesList GitHub repositories accessible to an organization
Parameters not published.
list-rolesRoles available in a workspace and what each may do.
Parameters not published.
loginSign in to Light Cloud through a browser on THIS machine (loopback callback). Prefer `connect` — it works without a local browser and also creates the account for a new email.
Parameters not published.
logoutSign out of Light Cloud
Parameters not published.
mark-notifications-readMark one notification read, or all of them when no id is given.
Parameters not published.
move-applicationMove an application into a folder (project), or to the workspace root with no folder.
Parameters not published.
package-sourcePackage a local project directory into a zip archive for upload
Parameters not published.
payment-method-statusWait for the card from add-payment-method to be saved (up to ~45 seconds per call; call again while it reports open).
Parameters not published.
pingHealth check - returns pong
Parameters not published.
query-databaseRun SQL against a database. Read-only unless allow_writes is true; results are capped by the platform. Never print secrets from the results into files.
Parameters not published.
read-project-configRead .lightcloud config file from a project directory
Parameters not published.
remove-custom-domainDetach an environment
Parameters not published.
remove-memberRemove a member from a workspace.
Parameters not published.
remove-payment-methodRemove the card on file. Refused while the workspace is on a paid plan or has unpaid invoices.
Parameters not published.
rename-applicationRename an application. The light-cloud.io URL keeps the original slug.
Parameters not published.
request-upload-urlRequest a signed URL to upload source code
Parameters not published.
retry-custom-domainRetry certificate issuance for an environment
Parameters not published.
retry-invoiceCharge the card on file again for a failed invoice.
Parameters not published.
revoke-api-keyRevoke an API key. Anything using it stops at once.
Parameters not published.
rollback-deploymentPut an earlier deployment back live, without rebuilding. Pick the deployment id from list-deployments.
Parameters not published.
rotate-database-passwordGenerate a new admin password for a database. Apps using the old one must get the new connection string (get-database-connection-string, then set-environment-variables).
Parameters not published.
set-billing-detailsSet the billing address and tax ids printed on invoices. Only the fields given change.
Parameters not published.
set-environment-variablesSet (merge) environment variables on an environment. Existing keys not mentioned are kept; pass an empty string to clear one.
Parameters not published.
set-member-roleChange a member
Parameters not published.
set-password-protectionGate a site behind a visitor password, rotate it, or make the site public again. Takes effect on the next request. Pass no password to remove the gate.
Parameters not published.
set-scalingInstance floor and ceiling for an environment. min_instances ≥ 1 keeps it always on (plan permitting — a refusal names the next step).
Parameters not published.
Ask AI
Ask AI about server
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
- !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.
4 checks have not been run yet.
README
MCP Server for Light Cloud Platform - Technical Guide
Overview
This document covers the implementation, distribution, and integration of an MCP (Model Context Protocol) server for the Light Cloud Platform.
What is MCP?
MCP (Model Context Protocol) is a protocol that allows AI assistants like Claude to communicate with external tools and services. An MCP server exposes "tools" that Claude can invoke to perform actions.
Project Structure
mcp-server/
├── package.json # Package config with npm publishing setup
├── tsconfig.json # TypeScript configuration
├── src/
│ └── index.ts # MCP server implementation
└── dist/
└── index.js # Compiled server (generated)
Implementation
Dependencies
| Package | Purpose |
|---|---|
@modelcontextprotocol/sdk |
Official MCP SDK |
zod |
Schema validation for tool parameters |
typescript |
TypeScript compiler |
tsx |
Development runner |
Basic Server (src/index.ts)
#!/usr/bin/env node
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({
name: "light-cloud",
version: "1.0.0",
});
// Simple tool (no parameters)
server.tool("ping", "Health check - returns pong", {}, async () => {
return {
content: [{ type: "text", text: "pong" }],
};
});
// Tool with parameters
server.tool(
"echo",
"Echo back the provided message",
{
message: z.string().describe("The message to echo back"),
},
async ({ message }) => {
return {
content: [{ type: "text", text: `Echo: ${message}` }],
};
}
);
async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
console.error("Light Cloud MCP server running on stdio");
}
main().catch((error) => {
console.error("Fatal error:", error);
process.exit(1);
});
Distribution Methods
1. npm Package (Recommended)
Advantages:
- Easy installation via
npx - Version management
- No manual setup for users
package.json for npm:
{
"name": "light-cloud-mcp-server",
"version": "1.0.0",
"bin": {
"light-cloud-mcp-server": "dist/index.js"
},
"files": ["dist"],
"scripts": {
"prepublishOnly": "npm run build"
}
}
Publishing:
npm login
npm publish
User installation:
# Claude Code
claude mcp add light-cloud -- npx light-cloud-mcp-server
# Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"light-cloud": {
"command": "npx",
"args": ["light-cloud-mcp-server"]
}
}
}
2. Remote HTTP Server
Advantages:
- Zero setup for users
- Centralized control
- Access to backend resources
User installation:
claude mcp add --transport http light-cloud https://your-server.com/mcp
3. Git Repository
Advantages:
- Full source access
- Custom modifications
User installation:
git clone <repo-url>
cd mcp-server
npm install && npm run build
claude mcp add light-cloud -- node /path/to/dist/index.js
MCP Registry
Official Registry
- URL: https://registry.modelcontextprotocol.io/
- GitHub: https://github.com/modelcontextprotocol/registry
Publishing to registry:
# Install CLI
brew install mcp-publisher
# Initialize
mcp-publisher init
# Create server.json
{
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-07-09/server.schema.json",
"name": "io.github.USERNAME/light-cloud",
"description": "MCP server for Light Cloud Platform",
"version": "1.0.0",
"packages": [{
"registry": "npm",
"name": "light-cloud-mcp-server"
}]
}
# Authenticate & publish
mcp-publisher login github
mcp-publisher publish
Claude Code Registry
Claude Code uses Anthropic's own registry at https://api.anthropic.com/mcp-registry/ as a reference, but does not auto-install servers. Users must manually add servers.
Integrating with Light Cloud API
Architecture
User (Claude) → MCP Server → Light Cloud API
↑ ↓ ↓
└──── response ←──── response ←┘
Example: API Integration
const LIGHT_CLOUD_API = "https://api.lightcloud.com";
server.tool(
"list-instances",
"List all compute instances",
{},
async () => {
const response = await fetch(`${LIGHT_CLOUD_API}/instances`, {
headers: {
"Authorization": `Bearer ${process.env.LIGHT_CLOUD_API_KEY}`,
},
});
const data = await response.json();
return {
content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
};
}
);
server.tool(
"create-instance",
"Create a new compute instance",
{
name: z.string().describe("Instance name"),
size: z.enum(["small", "medium", "large"]).describe("Instance size"),
},
async ({ name, size }) => {
const response = await fetch(`${LIGHT_CLOUD_API}/instances`, {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.LIGHT_CLOUD_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ name, size }),
});
const data = await response.json();
return {
content: [{ type: "text", text: `Created instance: ${data.id}` }],
};
}
);
Passing API Keys
Claude Code:
claude mcp add light-cloud -e LIGHT_CLOUD_API_KEY=sk-xxx -- npx light-cloud-mcp-server
Claude Desktop:
{
"mcpServers": {
"light-cloud": {
"command": "npx",
"args": ["light-cloud-mcp-server"],
"env": {
"LIGHT_CLOUD_API_KEY": "sk-xxx"
}
}
}
}
Client Configuration Paths
| Client | Config File Location |
|---|---|
| Claude Desktop (macOS) | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Claude Desktop (Windows) | %APPDATA%\Claude\claude_desktop_config.json |
| Claude Code (local) | .mcp.json (project directory) |
| Claude Code (user) | ~/.claude.json |
Testing
Manual Test via JSON-RPC
node -e "
const { spawn } = require('child_process');
const server = spawn('node', ['dist/index.js']);
server.stdout.on('data', d => console.log('OUT:', d.toString().trim()));
server.stderr.on('data', d => console.log('ERR:', d.toString().trim()));
const msgs = [
{jsonrpc:'2.0',id:1,method:'initialize',params:{protocolVersion:'2024-11-05',capabilities:{},clientInfo:{name:'test',version:'1.0.0'}}},
{jsonrpc:'2.0',method:'notifications/initialized'},
{jsonrpc:'2.0',id:2,method:'tools/call',params:{name:'ping',arguments:{}}}
];
let i = 0;
const send = () => {
if (i < msgs.length) { server.stdin.write(JSON.stringify(msgs[i++]) + '\n'); setTimeout(send, 100); }
else { setTimeout(() => server.kill(), 200); }
};
send();
"
Expected Output
ERR: Light Cloud MCP server running on stdio
OUT: {"result":{"protocolVersion":"2024-11-05","capabilities":{"tools":{"listChanged":true}},"serverInfo":{"name":"light-cloud","version":"1.0.0"}},"jsonrpc":"2.0","id":1}
OUT: {"result":{"content":[{"type":"text","text":"pong"}]},"jsonrpc":"2.0","id":2}
How Users Interact with Tools
After installing the MCP server, users don't need to know tool names or syntax. They just chat naturally with Claude.
Example Conversation
User: "ping the light cloud server"
Claude: I'll check the server.
[Calls ping tool]
The server responded with "pong" - it's healthy.
User: "show me my cloud instances"
Claude: [Calls list-instances tool]
You have 3 instances:
- web-server (running, medium)
- database (running, large)
- dev-box (stopped, small)
Natural Language Understanding
Claude understands intent, not keywords. Users can ask the same thing in different ways:
Same tool, different phrasings:
ping tool:
- "ping the server"
- "is the server up?"
- "check if light cloud is working"
- "health check"
- "is everything running?"
echo tool:
- "echo hello"
- "repeat back: hello"
- "say hello to me"
- "mirror this message: hello"
How Claude decides which tool to use:
- Reads the tool's
nameanddescription - Matches user intent to the best fitting tool
- Extracts parameters from the conversation
server.tool(
"ping", // ← tool name
"Health check - returns pong", // ← Claude reads this to understand purpose
{},
async () => { ... }
);
Writing better tool descriptions
Better descriptions = smarter matching:
// Vague - Claude might miss it
server.tool("list", "List things", ...)
// Clear - Claude understands when to use it
server.tool(
"list-instances",
"List all compute instances/VMs in the Light Cloud account, showing their status, size, and configuration",
...
)
Where Does Data Come From?
The npm package is just the delivery method (how users install it). The answers come from wherever your tools fetch data.
Data Flow
User question
↓
Claude (understands intent)
↓
MCP Server (your npm package)
↓
Your tool code decides where to get data:
├── Static response (hardcoded)
├── Light Cloud API (HTTP call)
├── Database query
└── Local file system
Data Source Examples
Static (no external call):
server.tool("ping", "Health check", {}, async () => {
return { content: [{ type: "text", text: "pong" }] }; // ← hardcoded
});
From Light Cloud API:
server.tool("list-instances", "List instances", {}, async () => {
const response = await fetch("https://api.lightcloud.com/instances", {
headers: { "Authorization": `Bearer ${process.env.API_KEY}` }
});
const data = await response.json(); // ← from Light Cloud API
return { content: [{ type: "text", text: JSON.stringify(data) }] };
});
From database:
server.tool("get-user", "Get user info", { id: z.string() }, async ({ id }) => {
const user = await db.query("SELECT * FROM users WHERE id = ?", [id]); // ← from DB
return { content: [{ type: "text", text: JSON.stringify(user) }] };
});
Summary: Data Sources by Question
| Question | Data Source |
|---|---|
| "Is server healthy?" | Static "pong" (local) |
| "List my instances" | Light Cloud API |
| "Create a VM" | Light Cloud API |
| "Show billing" | Light Cloud API |
The MCP server is the bridge between Claude and external services. The npm package just delivers that bridge to users.
npm Scripts
| Script | Command | Description |
|---|---|---|
build |
tsc |
Compile TypeScript |
start |
node dist/index.js |
Run compiled server |
dev |
tsx src/index.ts |
Run in development mode |
prepublishOnly |
npm run build |
Auto-build before publish |
References
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.