delete_mcp_server
Permanently delete an MCP server from obot by providing its ID. This action is irreversible.
Instructions
Delete an MCP server from obot by id. Irreversible.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Implementation Reference
- src/index.ts:116-125 (schema)Schema definition for the 'delete_mcp_server' tool. Declares a single required 'id' string parameter and marks the operation as irreversible.
{ name: "delete_mcp_server", description: "Delete an MCP server from obot by id. Irreversible.", inputSchema: { type: "object", properties: { id: { type: "string" } }, required: ["id"], additionalProperties: false, }, }, - src/index.ts:229-232 (handler)Handler for delete_mcp_server. Sends a DELETE request to /api/mcp-servers/{id} via obotFetch and returns a confirmation message.
case "delete_mcp_server": { await obotFetch(`/api/mcp-servers/${encodeURIComponent(args.id)}`, { method: "DELETE" }); return { content: [{ type: "text", text: `deleted ${args.id}` }] }; } - src/index.ts:54-136 (registration)The tool is registered as part of the 'tools' array (line 54-136) and exposed via ListToolsRequestSchema handler (line 143).
const tools: Tool[] = [ { name: "list_mcp_servers", description: "List MCP servers currently registered in obot. Returns id, name, runtime, configured-state, and the connectURL you'd hand to claude.ai.", inputSchema: { type: "object", properties: {}, additionalProperties: false }, }, { name: "get_mcp_server", description: "Get full details of one MCP server by id (including manifest, env, missingRequiredEnvVars).", inputSchema: { type: "object", properties: { id: { type: "string", description: "MCP server id, e.g. ms1mwrmr" } }, required: ["id"], additionalProperties: false, }, }, { name: "add_npx_mcp", description: "Install a new MCP server in obot that runs as `npx <package>` (stdio). Use this for npm-published MCP servers.", inputSchema: { type: "object", properties: { name: { type: "string", description: "Display name shown in obot UI." }, package: { type: "string", description: "npm package name, e.g. n8n-mcp or @scope/foo." }, shortDescription: { type: "string" }, env: { type: "object", description: "Env vars passed to the MCP process. Keys go in manifest.env[]. Mark secrets via sensitiveKeys.", additionalProperties: { type: "string" }, }, sensitiveKeys: { type: "array", items: { type: "string" }, description: "Keys in `env` that should be marked sensitive (API keys, tokens).", }, alias: { type: "string", description: "Optional short alias used in URLs/logs.", }, }, required: ["name", "package"], additionalProperties: false, }, }, { name: "add_remote_mcp", description: "Register a remote MCP server URL so obot proxies it. Use for HTTP/SSE MCPs hosted elsewhere.", inputSchema: { type: "object", properties: { name: { type: "string" }, url: { type: "string", description: "Remote MCP endpoint URL." }, shortDescription: { type: "string" }, alias: { type: "string" }, }, required: ["name", "url"], additionalProperties: false, }, }, { name: "delete_mcp_server", description: "Delete an MCP server from obot by id. Irreversible.", inputSchema: { type: "object", properties: { id: { type: "string" } }, required: ["id"], additionalProperties: false, }, }, { name: "list_catalog_entries", description: "List MCP catalog entries available in obot's default catalog. Optional substring filter on name/id.", inputSchema: { type: "object", properties: { search: { type: "string" } }, additionalProperties: false, }, }, ]; - src/index.ts:18-40 (helper)The obotFetch helper function used by all tool handlers, including delete_mcp_server, to make authenticated HTTP requests to the obot API.
async function obotFetch(path: string, init: RequestInit = {}): Promise<any> { const res = await fetch(`${OBOT_URL}${path}`, { ...init, headers: { Authorization: `Bearer ${OBOT_TOKEN}`, "Content-Type": "application/json", Accept: "application/json", ...(init.headers as Record<string, string> | undefined), }, }); const text = await res.text(); let body: unknown = text; try { body = text ? JSON.parse(text) : null; } catch { // keep raw text } if (!res.ok) { const detail = typeof body === "string" ? body : JSON.stringify(body); throw new Error(`obot ${res.status} ${res.statusText} on ${path}: ${detail}`); } return body; }