import React from "react";
import { useTranslation } from "react-i18next";
import { MCPConfig, MCPSSEServer, MCPStdioServer } from "#/types/settings";
import { I18nKey } from "#/i18n/declaration";
interface MCPConfigViewerProps {
mcpConfig?: MCPConfig;
}
interface SSEServerDisplayProps {
server: string | MCPSSEServer;
}
function SSEServerDisplay({ server }: SSEServerDisplayProps) {
const { t } = useTranslation();
if (typeof server === "string") {
return (
{t(I18nKey.SETTINGS$MCP_URL)}:{" "}
{server}
);
}
return (
{t(I18nKey.SETTINGS$MCP_URL)}:{" "}
{server.url}
{server.api_key && (
{t(I18nKey.SETTINGS$MCP_API_KEY)}:
{" "}
{server.api_key ? "Set" : t(I18nKey.SETTINGS$MCP_API_KEY_NOT_SET)}
)}
);
}
interface StdioServerDisplayProps {
server: MCPStdioServer;
}
function StdioServerDisplay({ server }: StdioServerDisplayProps) {
const { t } = useTranslation();
return (
{t(I18nKey.SETTINGS$MCP_NAME)}:{" "}
{server.name}
{t(I18nKey.SETTINGS$MCP_COMMAND)}:{" "}
{server.command}
{server.args && server.args.length > 0 && (
{t(I18nKey.SETTINGS$MCP_ARGS)}:{" "}
{server.args.join(" ")}
)}
{server.env && Object.keys(server.env).length > 0 && (
{t(I18nKey.SETTINGS$MCP_ENV)}:{" "}
{Object.entries(server.env)
.map(([key, value]) => `${key}=${value}`)
.join(", ")}
)}
);
}
export function MCPConfigViewer({ mcpConfig }: MCPConfigViewerProps) {
const { t } = useTranslation();
if (
!mcpConfig ||
(mcpConfig.sse_servers.length === 0 && mcpConfig.stdio_servers.length === 0)
) {
return null;
}
return (
{mcpConfig.sse_servers.length > 0 && (
{t(I18nKey.SETTINGS$MCP_SSE_SERVERS)}{" "}
({mcpConfig.sse_servers.length})
{mcpConfig.sse_servers.map((server, index) => (
))}
)}
{mcpConfig.stdio_servers.length > 0 && (
{t(I18nKey.SETTINGS$MCP_STDIO_SERVERS)}{" "}
({mcpConfig.stdio_servers.length})
{mcpConfig.stdio_servers.map((server, index) => (
))}
)}
);
}