feat: add mcp tab

This commit is contained in:
d-kimsuon
2025-09-03 20:03:47 +09:00
parent 7800037455
commit 155afeaf70
4 changed files with 168 additions and 3 deletions

View File

@@ -0,0 +1,45 @@
import { execSync } from "node:child_process";
export interface McpServer {
name: string;
command: string;
}
export const getMcpList = async (): Promise<{ servers: McpServer[] }> => {
try {
const output = execSync("claude mcp list", {
encoding: "utf8",
timeout: 10000,
});
const servers: McpServer[] = [];
const lines = output.trim().split("\n");
for (const line of lines) {
// Skip header lines and status indicators
if (line.includes("Checking MCP server health") || line.trim() === "") {
continue;
}
// Parse lines like "context7: npx -y @upstash/context7-mcp@latest - ✓ Connected"
const colonIndex = line.indexOf(":");
if (colonIndex > 0) {
const name = line.substring(0, colonIndex).trim();
const rest = line.substring(colonIndex + 1).trim();
// Remove status indicators (✓ Connected, ✗ Failed, etc.)
const command = rest.replace(/\s*-\s*[✓✗].*$/, "").trim();
if (name && command) {
servers.push({ name, command });
}
}
}
return { servers };
} catch (error) {
console.error("Failed to get MCP list:", error);
// Return empty list if command fails
return { servers: [] };
}
};