get_mcp_server
Retrieve complete details of a single MCP server by its ID, including manifest, environment variables, and missing required environment variables.
Instructions
Get full details of one MCP server by id (including manifest, env, missingRequiredEnvVars).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | MCP server id, e.g. ms1mwrmr |
Implementation Reference
- src/index.ts:62-69 (schema)Tool schema definition for get_mcp_server: input schema requires a string 'id' property.
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, }, - src/index.ts:164-167 (handler)Handler for get_mcp_server: fetches full details of an MCP server by ID from the obot API and returns the JSON response.
case "get_mcp_server": { const data = await obotFetch(`/api/mcp-servers/${encodeURIComponent(args.id)}`); return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] }; } - src/index.ts:54-136 (registration)Registration of get_mcp_server in the tools array, which is exposed via ListToolsRequestSchema handler.
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)Helper utility function obotFetch used by the handler to make authenticated API calls to the obot backend.
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; }