latitudesh
v0.1.1
Published
> Model Context Protocol (MCP) server for the [Latitude.sh API](https://www.latitude.sh/docs/api-reference)
Readme
Latitude.sh MCP Server
Model Context Protocol (MCP) server for the Latitude.sh API
Overview
The Latitude.sh MCP Server exposes your Latitude.sh REST API as an AI-ready interface, allowing developer tools and assistants to list, create, and manage your infrastructure resources programmatically.
Use natural language to:
- 🔎 List and inspect servers, projects, and SSH keys
- ⚙️ Create or delete bare-metal instances
- 📡 Manage networking and automation directly from chat-based IDEs
Installation
🪶 Prerequisite: You’ll need a Latitude.sh API Key.
Install the MCP server as a Desktop Extension using the pre-built mcp-server.dxt file:
Simply drag and drop the mcp-server.dxt file onto Claude Desktop to install the extension.
The DXT package includes the MCP server and all necessary configuration. Once installed, the server will be available without additional setup.
[!NOTE] DXT (Desktop Extensions) provide a streamlined way to package and distribute MCP servers. Learn more about Desktop Extensions.
- Open Cursor Settings
- Select Tools and Integrations
- Select New MCP Server
- Paste the following JSON into the MCP Server Configuration:
{
"mcpServers": {
"Latitudesh": {
"command": "npx",
"args": [
"latitudesh",
"start",
"--bearer",
"<YOUR_API_KEY>"
]
}
}
}Note: Replace YOUR_LATITUDE_API_TOKEN with your actual Latitude.sh bearer token.
claude mcp add latitudesh npx latitudesh start -- --bearer YOUR_LATITUDE_API_TOKENNote: Replace YOUR_LATITUDE_API_TOKEN with your actual Latitude.sh bearer token.
Refer to Official Windsurf documentation for latest information
- Open Windsurf Settings
- Select Cascade on left side menu
- Click on
Manage MCPs. (To Manage MCPs you should be signed in with a Windsurf Account) - Click on
View raw configto open up the mcp configuration file. - If the configuration file is empty paste the full json
{
"mcpServers": {
"Latitudesh": {
"command": "npx",
"args": [
"latitudesh",
"start",
"--bearer",
"<YOUR_API_KEY>"
]
}
}
}Refer to Official VS Code documentation for latest information
- Open Command Palette
- Search and open
MCP: Open User Configuration. This should open mcp.json file - If the configuration file is empty paste the full json
{
"mcpServers": {
"Latitudesh": {
"command": "npx",
"args": [
"latitudesh",
"start",
"--bearer",
"<YOUR_API_KEY>"
]
}
}
}You need to do the following
- Open claude Desktop
- Open left hand side pane, then click on your Username
- Go to
Settings - Go to
Developertab (on the left hand side) - Click on
Edit ConfigPaste the following config in the configuration
{
"mcpServers": {
"Latitudesh": {
"command": "npx",
"args": [
"latitudesh",
"start",
"--bearer",
"<YOUR_API_KEY>"
]
}
}
}Note: Replace YOUR_LATITUDE_API_TOKEN with your actual Latitude.sh bearer token.
Refer to Official VS Code documentation for latest information
- Open Command Palette (
Cmd+Shift+P/Ctrl+Shift+P) - Search and open
MCP: Open User Configurationto open the mcp.json file - Add the configuration:
{
"servers": {
"Latitudesh": {
"type": "stdio",
"command": "npx",
"args": [
"latitudesh",
"start",
"--bearer",
"YOUR_LATITUDE_API_TOKEN"
]
}
}
}- Save the file and restart VS Code
- Open Copilot Chat (
Cmd+Alt+I/Ctrl+Alt+I) and enable Agent mode - The Latitudesh tools will be available automatically
Note: Replace YOUR_LATITUDE_API_TOKEN with your actual Latitude.sh bearer token.
Tips for using with VS Code:
- Be explicit in your prompts: "List my servers from Latitude.sh" instead of just "list servers"
- Mention "Latitude.sh" or "MCP" to avoid Copilot searching local files
- Open Claude Desktop
- Click on your Username in the left sidebar
- Go to
Settings→Developertab - Click
Edit Config - Add the configuration:
{
"mcpServers": {
"Latitudesh": {
"command": "npx",
"args": [
"latitudesh",
"start",
"--bearer",
"YOUR_LATITUDE_API_TOKEN"
]
}
}
}- Save and restart Claude Desktop
Note: Replace YOUR_LATITUDE_API_TOKEN with your actual Latitude.sh bearer token.
To start the MCP server directly:
npx latitudesh start --bearer YOUR_LATITUDE_API_TOKENOptional flags:
--server-index <0|1>- Select server (0=https://api.latitude.sh, 1=http://api.latitude.sh) [default: 0]--latitude-api-key <key>- API key for URL templating--log-level <level>- Log level (debug|warning|info|error) [default: info]
For a full list of server arguments:
npx latitudesh --helpDevelopment
Run locally without a published npm package:
- Clone this repository
- Run
npm install - Run
npm run build - Run
node ./bin/mcp-server.js start --bearer <YOUR_API_KEY>
To use this local version with MCP Clients, you'll need to add the following config:
{
"mcpServers": {
"Latitudesh": {
"command": "node",
"args": [
"/absolute/path/to/latitudesh-mcp/bin/mcp-server.js",
"start",
"--bearer",
"<YOUR_API_KEY>"
]
}
}
}Debug locally
Use the official MCP Inspector:
npx @modelcontextprotocol/inspector node ./bin/mcp-server.js start --bearer <YOUR_API_KEY>This opens an interactive UI at http://localhost:6274.
🤝 Contributions
While we welcome contributions, most of this code is auto-generated. Manual edits to generated files will be overwritten on regeneration.
If you'd like to suggest improvements:
- Open an Issue or PR with your proof of concept
- We'll review and include it in future releases when possible
Summary
Latitude.sh API: The Latitude.sh API is a RESTful API to manage your Latitude.sh account. It allows you to perform the same actions as the Latitude.sh dashboard.
Table of Contents
Installation
Install the MCP server as a Desktop Extension using the pre-built mcp-server.mcpb file:
Simply drag and drop the mcp-server.mcpb file onto Claude Desktop to install the extension.
The MCP bundle package includes the MCP server and all necessary configuration. Once installed, the server will be available without additional setup.
[!NOTE] MCP bundles provide a streamlined way to package and distribute MCP servers. Learn more about Desktop Extensions.
Or manually:
- Open Cursor Settings
- Select Tools and Integrations
- Select New MCP Server
- If the configuration file is empty paste the following JSON into the MCP Server Configuration:
{
"command": "npx",
"args": [
"latitudesh",
"start",
"--server-index",
"0",
"--latitude-api-key",
"<insert your api key here>",
"--bearer",
""
]
}claude mcp add Latitudesh -- npx -y latitudesh start --server-index 0 --latitude-api-key <insert your api key here> --bearer gemini mcp add Latitudesh -- npx -y latitudesh start --server-index 0 --latitude-api-key <insert your api key here> --bearer Refer to Official Windsurf documentation for latest information
- Open Windsurf Settings
- Select Cascade on left side menu
- Click on
Manage MCPs. (To Manage MCPs you should be signed in with a Windsurf Account) - Click on
View raw configto open up the mcp configuration file. - If the configuration file is empty paste the full json
{
"command": "npx",
"args": [
"latitudesh",
"start",
"--server-index",
"0",
"--latitude-api-key",
"<insert your api key here>",
"--bearer",
""
]
}Or manually:
Refer to Official VS Code documentation for latest information
- Open Command Palette
- Search and open
MCP: Open User Configuration. This should open mcp.json file - If the configuration file is empty paste the full json
{
"command": "npx",
"args": [
"latitudesh",
"start",
"--server-index",
"0",
"--latitude-api-key",
"<insert your api key here>",
"--bearer",
""
]
}npx latitudesh start --server-index 0 --latitude-api-key <insert your api key here> --bearer For a full list of server arguments, run:
npx latitudesh --helpProgressive Discovery
MCP servers with many tools can bloat LLM context windows, leading to increased token usage and tool confusion. Dynamic mode solves this by exposing only a small set of meta-tools that let agents progressively discover and invoke tools on demand.
To enable dynamic mode, pass the --mode dynamic flag when starting your server:
{
"mcpServers": {
"Latitudesh": {
"command": "npx",
"args": ["latitudesh", "start", "--mode", "dynamic"],
// ... other server arguments
}
}
}In dynamic mode, the server registers only the following meta-tools instead of every individual tool:
list_tools: Lists all available tools with their names and descriptions.describe_tool: Returns the input schema for one or more tools by name.execute_tool: Executes a tool by name with the provided input parameters.
This approach significantly reduces the number of tokens sent to the LLM on each request, which is especially useful for servers with a large number of tools.
