Matt Rubens 9 месяцев назад
Родитель
Сommit
ca8c6f69c3

+ 4 - 3
webview-ui/src/components/mcp/McpEnabledToggle.tsx

@@ -1,10 +1,12 @@
 import { VSCodeCheckbox } from "@vscode/webview-ui-toolkit/react"
 import { VSCodeCheckbox } from "@vscode/webview-ui-toolkit/react"
 import { FormEvent } from "react"
 import { FormEvent } from "react"
 import { useExtensionState } from "../../context/ExtensionStateContext"
 import { useExtensionState } from "../../context/ExtensionStateContext"
+import { useAppTranslation } from "../../i18n/TranslationContext"
 import { vscode } from "../../utils/vscode"
 import { vscode } from "../../utils/vscode"
 
 
 const McpEnabledToggle = () => {
 const McpEnabledToggle = () => {
 	const { mcpEnabled, setMcpEnabled } = useExtensionState()
 	const { mcpEnabled, setMcpEnabled } = useExtensionState()
+	const { t } = useAppTranslation()
 
 
 	const handleChange = (e: Event | FormEvent<HTMLElement>) => {
 	const handleChange = (e: Event | FormEvent<HTMLElement>) => {
 		const target = ("target" in e ? e.target : null) as HTMLInputElement | null
 		const target = ("target" in e ? e.target : null) as HTMLInputElement | null
@@ -16,7 +18,7 @@ const McpEnabledToggle = () => {
 	return (
 	return (
 		<div style={{ marginBottom: "20px" }}>
 		<div style={{ marginBottom: "20px" }}>
 			<VSCodeCheckbox checked={mcpEnabled} onChange={handleChange}>
 			<VSCodeCheckbox checked={mcpEnabled} onChange={handleChange}>
-				<span style={{ fontWeight: "500" }}>Enable MCP Servers</span>
+				<span style={{ fontWeight: "500" }}>{t("mcp:enableToggle.title")}</span>
 			</VSCodeCheckbox>
 			</VSCodeCheckbox>
 			<p
 			<p
 				style={{
 				style={{
@@ -24,8 +26,7 @@ const McpEnabledToggle = () => {
 					marginTop: "5px",
 					marginTop: "5px",
 					color: "var(--vscode-descriptionForeground)",
 					color: "var(--vscode-descriptionForeground)",
 				}}>
 				}}>
-				When enabled, Roo will be able to interact with MCP servers for advanced functionality. If you're not
-				using MCP, you can disable this to reduce Roo's token usage.
+				{t("mcp:enableToggle.description")}
 			</p>
 			</p>
 		</div>
 		</div>
 	)
 	)

+ 5 - 3
webview-ui/src/components/mcp/McpToolRow.tsx

@@ -1,5 +1,6 @@
 import { VSCodeCheckbox } from "@vscode/webview-ui-toolkit/react"
 import { VSCodeCheckbox } from "@vscode/webview-ui-toolkit/react"
 import { McpTool } from "../../../../src/shared/mcp"
 import { McpTool } from "../../../../src/shared/mcp"
+import { useAppTranslation } from "../../i18n/TranslationContext"
 import { vscode } from "../../utils/vscode"
 import { vscode } from "../../utils/vscode"
 
 
 type McpToolRowProps = {
 type McpToolRowProps = {
@@ -9,6 +10,7 @@ type McpToolRowProps = {
 }
 }
 
 
 const McpToolRow = ({ tool, serverName, alwaysAllowMcp }: McpToolRowProps) => {
 const McpToolRow = ({ tool, serverName, alwaysAllowMcp }: McpToolRowProps) => {
+	const { t } = useAppTranslation()
 	const handleAlwaysAllowChange = () => {
 	const handleAlwaysAllowChange = () => {
 		if (!serverName) return
 		if (!serverName) return
 
 
@@ -36,7 +38,7 @@ const McpToolRow = ({ tool, serverName, alwaysAllowMcp }: McpToolRowProps) => {
 				</div>
 				</div>
 				{serverName && alwaysAllowMcp && (
 				{serverName && alwaysAllowMcp && (
 					<VSCodeCheckbox checked={tool.alwaysAllow} onChange={handleAlwaysAllowChange} data-tool={tool.name}>
 					<VSCodeCheckbox checked={tool.alwaysAllow} onChange={handleAlwaysAllowChange} data-tool={tool.name}>
-						Always allow
+						{t("mcp:tool.alwaysAllow")}
 					</VSCodeCheckbox>
 					</VSCodeCheckbox>
 				)}
 				)}
 			</div>
 			</div>
@@ -64,7 +66,7 @@ const McpToolRow = ({ tool, serverName, alwaysAllowMcp }: McpToolRowProps) => {
 						}}>
 						}}>
 						<div
 						<div
 							style={{ marginBottom: "4px", opacity: 0.8, fontSize: "11px", textTransform: "uppercase" }}>
 							style={{ marginBottom: "4px", opacity: 0.8, fontSize: "11px", textTransform: "uppercase" }}>
-							Parameters
+							{t("mcp:tool.parameters")}
 						</div>
 						</div>
 						{Object.entries(tool.inputSchema.properties as Record<string, any>).map(
 						{Object.entries(tool.inputSchema.properties as Record<string, any>).map(
 							([paramName, schema]) => {
 							([paramName, schema]) => {
@@ -98,7 +100,7 @@ const McpToolRow = ({ tool, serverName, alwaysAllowMcp }: McpToolRowProps) => {
 												overflowWrap: "break-word",
 												overflowWrap: "break-word",
 												wordBreak: "break-word",
 												wordBreak: "break-word",
 											}}>
 											}}>
-											{schema.description || "No description"}
+											{schema.description || t("mcp:tool.noDescription")}
 										</span>
 										</span>
 									</div>
 									</div>
 								)
 								)

+ 42 - 38
webview-ui/src/components/mcp/McpView.tsx

@@ -14,6 +14,8 @@ import { vscode } from "@/utils/vscode"
 import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter } from "@/components/ui"
 import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter } from "@/components/ui"
 
 
 import { useExtensionState } from "../../context/ExtensionStateContext"
 import { useExtensionState } from "../../context/ExtensionStateContext"
+import { useAppTranslation } from "../../i18n/TranslationContext"
+import { Trans } from "react-i18next"
 import { Tab, TabContent, TabHeader } from "../common/Tab"
 import { Tab, TabContent, TabHeader } from "../common/Tab"
 import McpToolRow from "./McpToolRow"
 import McpToolRow from "./McpToolRow"
 import McpResourceRow from "./McpResourceRow"
 import McpResourceRow from "./McpResourceRow"
@@ -31,12 +33,13 @@ const McpView = ({ onDone }: McpViewProps) => {
 		enableMcpServerCreation,
 		enableMcpServerCreation,
 		setEnableMcpServerCreation,
 		setEnableMcpServerCreation,
 	} = useExtensionState()
 	} = useExtensionState()
+	const { t } = useAppTranslation()
 
 
 	return (
 	return (
 		<Tab>
 		<Tab>
 			<TabHeader className="flex justify-between items-center">
 			<TabHeader className="flex justify-between items-center">
-				<h3 className="text-vscode-foreground m-0">MCP Servers</h3>
-				<VSCodeButton onClick={onDone}>Done</VSCodeButton>
+				<h3 className="text-vscode-foreground m-0">{t("mcp:title")}</h3>
+				<VSCodeButton onClick={onDone}>{t("mcp:done")}</VSCodeButton>
 			</TabHeader>
 			</TabHeader>
 
 
 			<TabContent>
 			<TabContent>
@@ -47,17 +50,16 @@ const McpView = ({ onDone }: McpViewProps) => {
 						marginBottom: "10px",
 						marginBottom: "10px",
 						marginTop: "5px",
 						marginTop: "5px",
 					}}>
 					}}>
-					The{" "}
-					<VSCodeLink href="https://github.com/modelcontextprotocol" style={{ display: "inline" }}>
-						Model Context Protocol
-					</VSCodeLink>{" "}
-					enables communication with locally running MCP servers that provide additional tools and resources
-					to extend Roo's capabilities. You can use{" "}
-					<VSCodeLink href="https://github.com/modelcontextprotocol/servers" style={{ display: "inline" }}>
-						community-made servers
-					</VSCodeLink>{" "}
-					or ask Roo to create new tools specific to your workflow (e.g., "add a tool that gets the latest npm
-					docs").
+					<Trans i18nKey="mcp:description">
+						<VSCodeLink href="https://github.com/modelcontextprotocol" style={{ display: "inline" }}>
+							Model Context Protocol
+						</VSCodeLink>
+						<VSCodeLink
+							href="https://github.com/modelcontextprotocol/servers"
+							style={{ display: "inline" }}>
+							community-made servers
+						</VSCodeLink>
+					</Trans>
 				</div>
 				</div>
 
 
 				<McpEnabledToggle />
 				<McpEnabledToggle />
@@ -71,7 +73,7 @@ const McpView = ({ onDone }: McpViewProps) => {
 									setEnableMcpServerCreation(e.target.checked)
 									setEnableMcpServerCreation(e.target.checked)
 									vscode.postMessage({ type: "enableMcpServerCreation", bool: e.target.checked })
 									vscode.postMessage({ type: "enableMcpServerCreation", bool: e.target.checked })
 								}}>
 								}}>
-								<span style={{ fontWeight: "500" }}>Enable MCP Server Creation</span>
+								<span style={{ fontWeight: "500" }}>{t("mcp:enableServerCreation.title")}</span>
 							</VSCodeCheckbox>
 							</VSCodeCheckbox>
 							<p
 							<p
 								style={{
 								style={{
@@ -79,9 +81,7 @@ const McpView = ({ onDone }: McpViewProps) => {
 									marginTop: "5px",
 									marginTop: "5px",
 									color: "var(--vscode-descriptionForeground)",
 									color: "var(--vscode-descriptionForeground)",
 								}}>
 								}}>
-								When enabled, Roo can help you create new MCP servers via commands like "add a new tool
-								to...". If you don't need to create MCP servers you can disable this to reduce Roo's
-								token usage.
+								{t("mcp:enableServerCreation.description")}
 							</p>
 							</p>
 						</div>
 						</div>
 
 
@@ -103,7 +103,7 @@ const McpView = ({ onDone }: McpViewProps) => {
 									vscode.postMessage({ type: "openMcpSettings" })
 									vscode.postMessage({ type: "openMcpSettings" })
 								}}>
 								}}>
 								<span className="codicon codicon-edit" style={{ marginRight: "6px" }}></span>
 								<span className="codicon codicon-edit" style={{ marginRight: "6px" }}></span>
-								Edit MCP Settings
+								{t("mcp:editSettings")}
 							</VSCodeButton>
 							</VSCodeButton>
 						</div>
 						</div>
 					</>
 					</>
@@ -114,6 +114,7 @@ const McpView = ({ onDone }: McpViewProps) => {
 }
 }
 
 
 const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowMcp?: boolean }) => {
 const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowMcp?: boolean }) => {
+	const { t } = useAppTranslation()
 	const [isExpanded, setIsExpanded] = useState(false)
 	const [isExpanded, setIsExpanded] = useState(false)
 	const [showDeleteConfirm, setShowDeleteConfirm] = useState(false)
 	const [showDeleteConfirm, setShowDeleteConfirm] = useState(false)
 	const [timeoutValue, setTimeoutValue] = useState(() => {
 	const [timeoutValue, setTimeoutValue] = useState(() => {
@@ -122,14 +123,14 @@ const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowM
 	})
 	})
 
 
 	const timeoutOptions = [
 	const timeoutOptions = [
-		{ value: 15, label: "15 seconds" },
-		{ value: 30, label: "30 seconds" },
-		{ value: 60, label: "1 minute" },
-		{ value: 300, label: "5 minutes" },
-		{ value: 600, label: "10 minutes" },
-		{ value: 900, label: "15 minutes" },
-		{ value: 1800, label: "30 minutes" },
-		{ value: 3600, label: "60 minutes" },
+		{ value: 15, label: t("mcp:networkTimeout.options.15seconds") },
+		{ value: 30, label: t("mcp:networkTimeout.options.30seconds") },
+		{ value: 60, label: t("mcp:networkTimeout.options.1minute") },
+		{ value: 300, label: t("mcp:networkTimeout.options.5minutes") },
+		{ value: 600, label: t("mcp:networkTimeout.options.10minutes") },
+		{ value: 900, label: t("mcp:networkTimeout.options.15minutes") },
+		{ value: 1800, label: t("mcp:networkTimeout.options.30minutes") },
+		{ value: 3600, label: t("mcp:networkTimeout.options.60minutes") },
 	]
 	]
 
 
 	const getStatusColor = () => {
 	const getStatusColor = () => {
@@ -291,7 +292,9 @@ const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowM
 						onClick={handleRestart}
 						onClick={handleRestart}
 						disabled={server.status === "connecting"}
 						disabled={server.status === "connecting"}
 						style={{ width: "calc(100% - 20px)", margin: "0 10px 10px 10px" }}>
 						style={{ width: "calc(100% - 20px)", margin: "0 10px 10px 10px" }}>
-						{server.status === "connecting" ? "Retrying..." : "Retry Connection"}
+						{server.status === "connecting"
+							? t("mcp:serverStatus.retrying")
+							: t("mcp:serverStatus.retryConnection")}
 					</VSCodeButton>
 					</VSCodeButton>
 				</div>
 				</div>
 			) : (
 			) : (
@@ -304,9 +307,11 @@ const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowM
 							borderRadius: "0 0 4px 4px",
 							borderRadius: "0 0 4px 4px",
 						}}>
 						}}>
 						<VSCodePanels style={{ marginBottom: "10px" }}>
 						<VSCodePanels style={{ marginBottom: "10px" }}>
-							<VSCodePanelTab id="tools">Tools ({server.tools?.length || 0})</VSCodePanelTab>
+							<VSCodePanelTab id="tools">
+								{t("mcp:tabs.tools")} ({server.tools?.length || 0})
+							</VSCodePanelTab>
 							<VSCodePanelTab id="resources">
 							<VSCodePanelTab id="resources">
-								Resources (
+								{t("mcp:tabs.resources")} (
 								{[...(server.resourceTemplates || []), ...(server.resources || [])].length || 0})
 								{[...(server.resourceTemplates || []), ...(server.resources || [])].length || 0})
 							</VSCodePanelTab>
 							</VSCodePanelTab>
 
 
@@ -325,7 +330,7 @@ const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowM
 									</div>
 									</div>
 								) : (
 								) : (
 									<div style={{ padding: "10px 0", color: "var(--vscode-descriptionForeground)" }}>
 									<div style={{ padding: "10px 0", color: "var(--vscode-descriptionForeground)" }}>
-										No tools found
+										{t("mcp:emptyState.noTools")}
 									</div>
 									</div>
 								)}
 								)}
 							</VSCodePanelView>
 							</VSCodePanelView>
@@ -346,7 +351,7 @@ const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowM
 									</div>
 									</div>
 								) : (
 								) : (
 									<div style={{ padding: "10px 0", color: "var(--vscode-descriptionForeground)" }}>
 									<div style={{ padding: "10px 0", color: "var(--vscode-descriptionForeground)" }}>
-										No resources found
+										{t("mcp:emptyState.noResources")}
 									</div>
 									</div>
 								)}
 								)}
 							</VSCodePanelView>
 							</VSCodePanelView>
@@ -361,7 +366,7 @@ const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowM
 									gap: "10px",
 									gap: "10px",
 									marginBottom: "8px",
 									marginBottom: "8px",
 								}}>
 								}}>
-								<span>Network Timeout</span>
+								<span>{t("mcp:networkTimeout.label")}</span>
 								<select
 								<select
 									value={timeoutValue}
 									value={timeoutValue}
 									onChange={handleTimeoutChange}
 									onChange={handleTimeoutChange}
@@ -388,7 +393,7 @@ const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowM
 									color: "var(--vscode-descriptionForeground)",
 									color: "var(--vscode-descriptionForeground)",
 									display: "block",
 									display: "block",
 								}}>
 								}}>
-								Maximum time to wait for server responses
+								{t("mcp:networkTimeout.description")}
 							</span>
 							</span>
 						</div>
 						</div>
 					</div>
 					</div>
@@ -399,18 +404,17 @@ const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowM
 			<Dialog open={showDeleteConfirm} onOpenChange={setShowDeleteConfirm}>
 			<Dialog open={showDeleteConfirm} onOpenChange={setShowDeleteConfirm}>
 				<DialogContent>
 				<DialogContent>
 					<DialogHeader>
 					<DialogHeader>
-						<DialogTitle>Delete MCP Server</DialogTitle>
+						<DialogTitle>{t("mcp:deleteDialog.title")}</DialogTitle>
 						<DialogDescription>
 						<DialogDescription>
-							Are you sure you want to delete the MCP server "{server.name}"? This action cannot be
-							undone.
+							{t("mcp:deleteDialog.description", { serverName: server.name })}
 						</DialogDescription>
 						</DialogDescription>
 					</DialogHeader>
 					</DialogHeader>
 					<DialogFooter>
 					<DialogFooter>
 						<VSCodeButton appearance="secondary" onClick={() => setShowDeleteConfirm(false)}>
 						<VSCodeButton appearance="secondary" onClick={() => setShowDeleteConfirm(false)}>
-							Cancel
+							{t("mcp:deleteDialog.cancel")}
 						</VSCodeButton>
 						</VSCodeButton>
 						<VSCodeButton appearance="primary" onClick={handleDelete}>
 						<VSCodeButton appearance="primary" onClick={handleDelete}>
-							Delete
+							{t("mcp:deleteDialog.delete")}
 						</VSCodeButton>
 						</VSCodeButton>
 					</DialogFooter>
 					</DialogFooter>
 				</DialogContent>
 				</DialogContent>

+ 14 - 0
webview-ui/src/components/mcp/__tests__/McpToolRow.test.tsx

@@ -3,6 +3,20 @@ import { render, fireEvent, screen } from "@testing-library/react"
 import McpToolRow from "../McpToolRow"
 import McpToolRow from "../McpToolRow"
 import { vscode } from "../../../utils/vscode"
 import { vscode } from "../../../utils/vscode"
 
 
+// Mock the translation hook
+jest.mock("../../../i18n/TranslationContext", () => ({
+	useAppTranslation: () => ({
+		t: (key: string) => {
+			const translations: Record<string, string> = {
+				"mcp:tool.alwaysAllow": "Always allow",
+				"mcp:tool.parameters": "Parameters",
+				"mcp:tool.noDescription": "No description",
+			}
+			return translations[key] || key
+		},
+	}),
+}))
+
 jest.mock("../../../utils/vscode", () => ({
 jest.mock("../../../utils/vscode", () => ({
 	vscode: {
 	vscode: {
 		postMessage: jest.fn(),
 		postMessage: jest.fn(),

+ 51 - 0
webview-ui/src/i18n/locales/ar/mcp.json

@@ -0,0 +1,51 @@
+{
+	"title": "خوادم MCP",
+	"done": "تم",
+	"description": "يتيح <0>بروتوكول سياق النموذج (Model Context Protocol)</0> الاتصال بخوادم MCP المحلية التي توفر أدوات وموارد إضافية لتوسيع قدرات Roo. يمكنك استخدام <1>الخوادم التي أنشأها المجتمع</1> أو مطالبة Roo بإنشاء أدوات جديدة مخصصة لسير عملك (مثل \"إضافة أداة تحصل على أحدث وثائق npm\").",
+	"enableToggle": {
+		"title": "تمكين خوادم MCP",
+		"description": "عند التمكين، سيتمكن Roo من التفاعل مع خوادم MCP للحصول على وظائف متقدمة. إذا كنت لا تستخدم MCP، يمكنك تعطيل هذا لتقليل استخدام token بواسطة Roo."
+	},
+	"enableServerCreation": {
+		"title": "تمكين إنشاء خادم MCP",
+		"description": "عند التمكين، يمكن لـ Roo مساعدتك في إنشاء خوادم MCP جديدة عبر أوامر مثل \"إضافة أداة جديدة إلى...\". إذا كنت لا تحتاج إلى إنشاء خوادم MCP، يمكنك تعطيل هذا لتقليل استخدام token بواسطة Roo."
+	},
+	"editSettings": "تعديل إعدادات MCP",
+	"tool": {
+		"alwaysAllow": "السماح دائمًا",
+		"parameters": "المعلمات",
+		"noDescription": "لا يوجد وصف"
+	},
+	"tabs": {
+		"tools": "الأدوات",
+		"resources": "الموارد"
+	},
+	"emptyState": {
+		"noTools": "لم يتم العثور على أدوات",
+		"noResources": "لم يتم العثور على موارد"
+	},
+	"networkTimeout": {
+		"label": "مهلة الشبكة",
+		"description": "الحد الأقصى لوقت الانتظار لاستجابات الخادم",
+		"options": {
+			"15seconds": "15 ثانية",
+			"30seconds": "30 ثانية",
+			"1minute": "1 دقيقة",
+			"5minutes": "5 دقائق",
+			"10minutes": "10 دقائق",
+			"15minutes": "15 دقيقة",
+			"30minutes": "30 دقيقة",
+			"60minutes": "60 دقيقة"
+		}
+	},
+	"deleteDialog": {
+		"title": "حذف خادم MCP",
+		"description": "هل أنت متأكد أنك تريد حذف خادم MCP \"{{serverName}}\"؟ لا يمكن التراجع عن هذا الإجراء.",
+		"cancel": "إلغاء",
+		"delete": "حذف"
+	},
+	"serverStatus": {
+		"retrying": "إعادة المحاولة...",
+		"retryConnection": "إعادة محاولة الاتصال"
+	}
+}

+ 51 - 0
webview-ui/src/i18n/locales/ca/mcp.json

@@ -0,0 +1,51 @@
+{
+	"title": "Servidors MCP",
+	"done": "Fet",
+	"description": "El <0>Model Context Protocol</0> permet la comunicació amb servidors MCP que s'executen localment i proporcionen eines i recursos addicionals per ampliar les capacitats de Roo. Pots utilitzar <1>servidors creats per la comunitat</1> o demanar a Roo que creï noves eines específiques per al teu flux de treball (per exemple, \"afegir una eina que obtingui la documentació més recent de npm\").",
+	"enableToggle": {
+		"title": "Habilitar servidors MCP",
+		"description": "Quan està habilitat, Roo podrà interactuar amb servidors MCP per a funcionalitats avançades. Si no utilitzes MCP, pots desactivar això per reduir l'ús de tokens de Roo."
+	},
+	"enableServerCreation": {
+		"title": "Habilitar creació de servidors MCP",
+		"description": "Quan està habilitat, Roo pot ajudar-te a crear nous servidors MCP mitjançant ordres com \"afegir una nova eina per a...\". Si no necessites crear servidors MCP, pots desactivar això per reduir l'ús de tokens de Roo."
+	},
+	"editSettings": "Editar configuració de MCP",
+	"tool": {
+		"alwaysAllow": "Permetre sempre",
+		"parameters": "Paràmetres",
+		"noDescription": "Sense descripció"
+	},
+	"tabs": {
+		"tools": "Eines",
+		"resources": "Recursos"
+	},
+	"emptyState": {
+		"noTools": "No s'han trobat eines",
+		"noResources": "No s'han trobat recursos"
+	},
+	"networkTimeout": {
+		"label": "Temps d'espera de xarxa",
+		"description": "Temps màxim d'espera per a respostes del servidor",
+		"options": {
+			"15seconds": "15 segons",
+			"30seconds": "30 segons",
+			"1minute": "1 minut",
+			"5minutes": "5 minuts",
+			"10minutes": "10 minuts",
+			"15minutes": "15 minuts",
+			"30minutes": "30 minuts",
+			"60minutes": "60 minuts"
+		}
+	},
+	"deleteDialog": {
+		"title": "Eliminar servidor MCP",
+		"description": "Estàs segur que vols eliminar el servidor MCP \"{{serverName}}\"? Aquesta acció no es pot desfer.",
+		"cancel": "Cancel·lar",
+		"delete": "Eliminar"
+	},
+	"serverStatus": {
+		"retrying": "Reintentant...",
+		"retryConnection": "Reintentar connexió"
+	}
+}

+ 51 - 0
webview-ui/src/i18n/locales/cs/mcp.json

@@ -0,0 +1,51 @@
+{
+	"title": "MCP Servery",
+	"done": "Hotovo",
+	"description": "<0>Model Context Protocol</0> umožňuje komunikaci s lokálně běžícími MCP servery, které poskytují další nástroje a zdroje k rozšíření schopností Roo. Můžete používat <1>servery vytvořené komunitou</1> nebo požádat Roo o vytvoření nových nástrojů specifických pro váš pracovní postup (např. \"přidat nástroj, který získává nejnovější npm dokumentaci\").",
+	"enableToggle": {
+		"title": "Povolit MCP servery",
+		"description": "Když je povoleno, Roo bude moci komunikovat s MCP servery pro pokročilé funkce. Pokud MCP nepoužíváte, můžete tuto funkci zakázat a snížit spotřebu tokenů Roo."
+	},
+	"enableServerCreation": {
+		"title": "Povolit vytváření MCP serverů",
+		"description": "Když je povoleno, Roo vám může pomoci vytvářet nové MCP servery pomocí příkazů jako \"přidat nový nástroj pro...\". Pokud nepotřebujete vytvářet MCP servery, můžete tuto funkci zakázat a snížit spotřebu tokenů Roo."
+	},
+	"editSettings": "Upravit nastavení MCP",
+	"tool": {
+		"alwaysAllow": "Vždy povolit",
+		"parameters": "Parametry",
+		"noDescription": "Bez popisu"
+	},
+	"tabs": {
+		"tools": "Nástroje",
+		"resources": "Zdroje"
+	},
+	"emptyState": {
+		"noTools": "Nebyly nalezeny žádné nástroje",
+		"noResources": "Nebyly nalezeny žádné zdroje"
+	},
+	"networkTimeout": {
+		"label": "Časový limit sítě",
+		"description": "Maximální doba čekání na odpovědi serveru",
+		"options": {
+			"15seconds": "15 sekund",
+			"30seconds": "30 sekund",
+			"1minute": "1 minuta",
+			"5minutes": "5 minut",
+			"10minutes": "10 minut",
+			"15minutes": "15 minut",
+			"30minutes": "30 minut",
+			"60minutes": "60 minut"
+		}
+	},
+	"deleteDialog": {
+		"title": "Smazat MCP server",
+		"description": "Opravdu chcete smazat MCP server \"{{serverName}}\"? Tuto akci nelze vrátit zpět.",
+		"cancel": "Zrušit",
+		"delete": "Smazat"
+	},
+	"serverStatus": {
+		"retrying": "Opakování...",
+		"retryConnection": "Zkusit připojení znovu"
+	}
+}

+ 51 - 0
webview-ui/src/i18n/locales/de/mcp.json

@@ -0,0 +1,51 @@
+{
+	"title": "MCP-Server",
+	"done": "Fertig",
+	"description": "Das <0>Model Context Protocol</0> ermöglicht die Kommunikation mit lokal laufenden MCP-Servern, die zusätzliche Tools und Ressourcen zur Erweiterung der Fähigkeiten von Roo bereitstellen. Sie können <1>von der Community erstellte Server</1> verwenden oder Roo bitten, neue Tools speziell für Ihren Workflow zu erstellen (z.B. \"ein Tool hinzufügen, das die neueste npm-Dokumentation abruft\").",
+	"enableToggle": {
+		"title": "MCP-Server aktivieren",
+		"description": "Wenn aktiviert, kann Roo mit MCP-Servern für erweiterte Funktionen interagieren. Wenn Sie MCP nicht verwenden, können Sie dies deaktivieren, um den Token-Verbrauch von Roo zu reduzieren."
+	},
+	"enableServerCreation": {
+		"title": "MCP-Server-Erstellung aktivieren",
+		"description": "Wenn aktiviert, kann Roo Ihnen helfen, neue MCP-Server über Befehle wie \"neues Tool hinzufügen zu...\" zu erstellen. Wenn Sie keine MCP-Server erstellen müssen, können Sie dies deaktivieren, um den Token-Verbrauch von Roo zu reduzieren."
+	},
+	"editSettings": "MCP-Einstellungen bearbeiten",
+	"tool": {
+		"alwaysAllow": "Immer erlauben",
+		"parameters": "Parameter",
+		"noDescription": "Keine Beschreibung"
+	},
+	"tabs": {
+		"tools": "Tools",
+		"resources": "Ressourcen"
+	},
+	"emptyState": {
+		"noTools": "Keine Tools gefunden",
+		"noResources": "Keine Ressourcen gefunden"
+	},
+	"networkTimeout": {
+		"label": "Netzwerk-Timeout",
+		"description": "Maximale Wartezeit für Serverantworten",
+		"options": {
+			"15seconds": "15 Sekunden",
+			"30seconds": "30 Sekunden",
+			"1minute": "1 Minute",
+			"5minutes": "5 Minuten",
+			"10minutes": "10 Minuten",
+			"15minutes": "15 Minuten",
+			"30minutes": "30 Minuten",
+			"60minutes": "60 Minuten"
+		}
+	},
+	"deleteDialog": {
+		"title": "MCP-Server löschen",
+		"description": "Sind Sie sicher, dass Sie den MCP-Server \"{{serverName}}\" löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.",
+		"cancel": "Abbrechen",
+		"delete": "Löschen"
+	},
+	"serverStatus": {
+		"retrying": "Wiederhole...",
+		"retryConnection": "Verbindung wiederherstellen"
+	}
+}

+ 51 - 0
webview-ui/src/i18n/locales/en/mcp.json

@@ -0,0 +1,51 @@
+{
+	"title": "MCP Servers",
+	"done": "Done",
+	"description": "The <0>Model Context Protocol</0> enables communication with locally running MCP servers that provide additional tools and resources to extend Roo's capabilities. You can use <1>community-made servers</1> or ask Roo to create new tools specific to your workflow (e.g., \"add a tool that gets the latest npm docs\").",
+	"enableToggle": {
+		"title": "Enable MCP Servers",
+		"description": "When enabled, Roo will be able to interact with MCP servers for advanced functionality. If you're not using MCP, you can disable this to reduce Roo's token usage."
+	},
+	"enableServerCreation": {
+		"title": "Enable MCP Server Creation",
+		"description": "When enabled, Roo can help you create new MCP servers via commands like \"add a new tool to...\". If you don't need to create MCP servers you can disable this to reduce Roo's token usage."
+	},
+	"editSettings": "Edit MCP Settings",
+	"tool": {
+		"alwaysAllow": "Always allow",
+		"parameters": "Parameters",
+		"noDescription": "No description"
+	},
+	"tabs": {
+		"tools": "Tools",
+		"resources": "Resources"
+	},
+	"emptyState": {
+		"noTools": "No tools found",
+		"noResources": "No resources found"
+	},
+	"networkTimeout": {
+		"label": "Network Timeout",
+		"description": "Maximum time to wait for server responses",
+		"options": {
+			"15seconds": "15 seconds",
+			"30seconds": "30 seconds",
+			"1minute": "1 minute",
+			"5minutes": "5 minutes",
+			"10minutes": "10 minutes",
+			"15minutes": "15 minutes",
+			"30minutes": "30 minutes",
+			"60minutes": "60 minutes"
+		}
+	},
+	"deleteDialog": {
+		"title": "Delete MCP Server",
+		"description": "Are you sure you want to delete the MCP server \"{{serverName}}\"? This action cannot be undone.",
+		"cancel": "Cancel",
+		"delete": "Delete"
+	},
+	"serverStatus": {
+		"retrying": "Retrying...",
+		"retryConnection": "Retry Connection"
+	}
+}

+ 51 - 0
webview-ui/src/i18n/locales/es/mcp.json

@@ -0,0 +1,51 @@
+{
+	"title": "Servidores MCP",
+	"done": "Listo",
+	"description": "El <0>Model Context Protocol</0> permite la comunicación con servidores MCP que se ejecutan localmente y proporcionan herramientas y recursos adicionales para extender las capacidades de Roo. Puedes usar <1>servidores creados por la comunidad</1> o pedir a Roo que cree nuevas herramientas específicas para tu flujo de trabajo (por ejemplo, \"añadir una herramienta que obtenga la documentación más reciente de npm\").",
+	"enableToggle": {
+		"title": "Habilitar servidores MCP",
+		"description": "Cuando está habilitado, Roo podrá interactuar con servidores MCP para obtener funcionalidades avanzadas. Si no usas MCP, puedes desactivarlo para reducir el uso de tokens de Roo."
+	},
+	"enableServerCreation": {
+		"title": "Habilitar creación de servidores MCP",
+		"description": "Cuando está habilitado, Roo puede ayudarte a crear nuevos servidores MCP mediante comandos como \"añadir una nueva herramienta para...\". Si no necesitas crear servidores MCP, puedes desactivar esto para reducir el uso de tokens de Roo."
+	},
+	"editSettings": "Editar configuración de MCP",
+	"tool": {
+		"alwaysAllow": "Permitir siempre",
+		"parameters": "Parámetros",
+		"noDescription": "Sin descripción"
+	},
+	"tabs": {
+		"tools": "Herramientas",
+		"resources": "Recursos"
+	},
+	"emptyState": {
+		"noTools": "No se encontraron herramientas",
+		"noResources": "No se encontraron recursos"
+	},
+	"networkTimeout": {
+		"label": "Tiempo de espera de red",
+		"description": "Tiempo máximo de espera para respuestas del servidor",
+		"options": {
+			"15seconds": "15 segundos",
+			"30seconds": "30 segundos",
+			"1minute": "1 minuto",
+			"5minutes": "5 minutos",
+			"10minutes": "10 minutos",
+			"15minutes": "15 minutos",
+			"30minutes": "30 minutos",
+			"60minutes": "60 minutos"
+		}
+	},
+	"deleteDialog": {
+		"title": "Eliminar servidor MCP",
+		"description": "¿Estás seguro de que deseas eliminar el servidor MCP \"{{serverName}}\"? Esta acción no se puede deshacer.",
+		"cancel": "Cancelar",
+		"delete": "Eliminar"
+	},
+	"serverStatus": {
+		"retrying": "Reintentando...",
+		"retryConnection": "Reintentar conexión"
+	}
+}

+ 51 - 0
webview-ui/src/i18n/locales/fr/mcp.json

@@ -0,0 +1,51 @@
+{
+	"title": "Serveurs MCP",
+	"done": "Terminé",
+	"description": "Le <0>Model Context Protocol</0> permet la communication avec des serveurs MCP exécutés localement qui fournissent des outils et des ressources supplémentaires pour étendre les capacités de Roo. Vous pouvez utiliser <1>des serveurs créés par la communauté</1> ou demander à Roo de créer de nouveaux outils spécifiques à votre flux de travail (par exemple, \"ajouter un outil qui récupère la dernière documentation npm\").",
+	"enableToggle": {
+		"title": "Activer les serveurs MCP",
+		"description": "Lorsqu'activé, Roo pourra interagir avec les serveurs MCP pour des fonctionnalités avancées. Si vous n'utilisez pas MCP, vous pouvez désactiver cette option pour réduire l'utilisation de tokens par Roo."
+	},
+	"enableServerCreation": {
+		"title": "Activer la création de serveurs MCP",
+		"description": "Lorsqu'activé, Roo peut vous aider à créer de nouveaux serveurs MCP via des commandes comme \"ajouter un nouvel outil pour...\". Si vous n'avez pas besoin de créer des serveurs MCP, vous pouvez désactiver cette option pour réduire l'utilisation de tokens par Roo."
+	},
+	"editSettings": "Modifier les paramètres MCP",
+	"tool": {
+		"alwaysAllow": "Toujours autoriser",
+		"parameters": "Paramètres",
+		"noDescription": "Aucune description"
+	},
+	"tabs": {
+		"tools": "Outils",
+		"resources": "Ressources"
+	},
+	"emptyState": {
+		"noTools": "Aucun outil trouvé",
+		"noResources": "Aucune ressource trouvée"
+	},
+	"networkTimeout": {
+		"label": "Délai d'attente réseau",
+		"description": "Temps maximal d'attente pour les réponses du serveur",
+		"options": {
+			"15seconds": "15 secondes",
+			"30seconds": "30 secondes",
+			"1minute": "1 minute",
+			"5minutes": "5 minutes",
+			"10minutes": "10 minutes",
+			"15minutes": "15 minutes",
+			"30minutes": "30 minutes",
+			"60minutes": "60 minutes"
+		}
+	},
+	"deleteDialog": {
+		"title": "Supprimer le serveur MCP",
+		"description": "Êtes-vous sûr de vouloir supprimer le serveur MCP \"{{serverName}}\" ? Cette action ne peut pas être annulée.",
+		"cancel": "Annuler",
+		"delete": "Supprimer"
+	},
+	"serverStatus": {
+		"retrying": "Nouvelle tentative...",
+		"retryConnection": "Réessayer la connexion"
+	}
+}

+ 51 - 0
webview-ui/src/i18n/locales/hi/mcp.json

@@ -0,0 +1,51 @@
+{
+	"title": "MCP सर्वर",
+	"done": "हो गया",
+	"description": "<0>मॉडल कॉन्टेक्स्ट प्रोटोकॉल</0> स्थानीय रूप से चल रहे MCP सर्वरों के साथ संचार को सक्षम बनाता है जो Roo की क्षमताओं का विस्तार करने के लिए अतिरिक्त उपकरण और संसाधन प्रदान करते हैं। आप <1>समुदाय द्वारा बनाए गए सर्वरों</1> का उपयोग कर सकते हैं या Roo से अपने कार्यप्रवाह के लिए विशिष्ट नए उपकरण बनाने के लिए कह सकते हैं (जैसे, \"नवीनतम npm दस्तावेज़ प्राप्त करने वाला उपकरण जोड़ें\")।",
+	"enableToggle": {
+		"title": "MCP सर्वर सक्षम करें",
+		"description": "जब सक्षम होता है, तो Roo उन्नत कार्यक्षमता के लिए MCP सर्वरों के साथ बातचीत कर सकेगा। यदि आप MCP का उपयोग नहीं कर रहे हैं, तो आप Roo के token उपयोग को कम करने के लिए इसे अक्षम कर सकते हैं।"
+	},
+	"enableServerCreation": {
+		"title": "MCP सर्वर निर्माण सक्षम करें",
+		"description": "जब सक्षम होता है, तो Roo आपको \"में नया उपकरण जोड़ें...\" जैसे कमांड के माध्यम से नए MCP सर्वर बनाने में मदद कर सकता है। यदि आपको MCP सर्वर बनाने की आवश्यकता नहीं है, तो आप Roo के token उपयोग को कम करने के लिए इसे अक्षम कर सकते हैं।"
+	},
+	"editSettings": "MCP सेटिंग्स संपादित करें",
+	"tool": {
+		"alwaysAllow": "हमेशा अनुमति दें",
+		"parameters": "पैरामीटर",
+		"noDescription": "कोई विवरण नहीं"
+	},
+	"tabs": {
+		"tools": "उपकरण",
+		"resources": "संसाधन"
+	},
+	"emptyState": {
+		"noTools": "कोई उपकरण नहीं मिला",
+		"noResources": "कोई संसाधन नहीं मिला"
+	},
+	"networkTimeout": {
+		"label": "नेटवर्क टाइमआउट",
+		"description": "सर्वर प्रतिक्रियाओं के लिए प्रतीक्षा करने का अधिकतम समय",
+		"options": {
+			"15seconds": "15 सेकंड",
+			"30seconds": "30 सेकंड",
+			"1minute": "1 मिनट",
+			"5minutes": "5 मिनट",
+			"10minutes": "10 मिनट",
+			"15minutes": "15 मिनट",
+			"30minutes": "30 मिनट",
+			"60minutes": "60 मिनट"
+		}
+	},
+	"deleteDialog": {
+		"title": "MCP सर्वर हटाएं",
+		"description": "क्या आप वाकई MCP सर्वर \"{{serverName}}\" को हटाना चाहते हैं? यह क्रिया पूर्ववत नहीं की जा सकती।",
+		"cancel": "रद्द करें",
+		"delete": "हटाएं"
+	},
+	"serverStatus": {
+		"retrying": "पुनः प्रयास कर रहे हैं...",
+		"retryConnection": "कनेक्शन पुनः प्रयास करें"
+	}
+}

+ 51 - 0
webview-ui/src/i18n/locales/hu/mcp.json

@@ -0,0 +1,51 @@
+{
+	"title": "MCP szerverek",
+	"done": "Kész",
+	"description": "A <0>Model Context Protocol</0> lehetővé teszi a kommunikációt a helyileg futó MCP szerverekkel, amelyek további eszközöket és erőforrásokat biztosítanak a Roo képességeinek kiterjesztéséhez. Használhatsz <1>közösség által készített szervereket</1>, vagy megkérheted a Roo-t, hogy hozzon létre új, a munkafolyamatodhoz specifikus eszközöket (pl. \"adj hozzá egy eszközt, amely lekéri a legfrissebb npm dokumentációt\").",
+	"enableToggle": {
+		"title": "MCP szerverek engedélyezése",
+		"description": "Ha engedélyezve van, a Roo képes lesz kommunikálni az MCP szerverekkel a speciális funkciók érdekében. Ha nem használsz MCP-t, kikapcsolhatod ezt, hogy csökkentsd a Roo token használatát."
+	},
+	"enableServerCreation": {
+		"title": "MCP szerver létrehozás engedélyezése",
+		"description": "Ha engedélyezve van, a Roo segíthet új MCP szerverek létrehozásában olyan parancsokkal, mint \"új eszköz hozzáadása...\". Ha nincs szükséged MCP szerverek létrehozására, kikapcsolhatod ezt, hogy csökkentsd a Roo token használatát."
+	},
+	"editSettings": "MCP beállítások szerkesztése",
+	"tool": {
+		"alwaysAllow": "Mindig engedélyez",
+		"parameters": "Paraméterek",
+		"noDescription": "Nincs leírás"
+	},
+	"tabs": {
+		"tools": "Eszközök",
+		"resources": "Erőforrások"
+	},
+	"emptyState": {
+		"noTools": "Nem található eszköz",
+		"noResources": "Nem található erőforrás"
+	},
+	"networkTimeout": {
+		"label": "Hálózati időtúllépés",
+		"description": "Maximális várakozási idő a szerver válaszaira",
+		"options": {
+			"15seconds": "15 másodperc",
+			"30seconds": "30 másodperc",
+			"1minute": "1 perc",
+			"5minutes": "5 perc",
+			"10minutes": "10 perc",
+			"15minutes": "15 perc",
+			"30minutes": "30 perc",
+			"60minutes": "60 perc"
+		}
+	},
+	"deleteDialog": {
+		"title": "MCP szerver törlése",
+		"description": "Biztosan törölni szeretnéd a(z) \"{{serverName}}\" MCP szervert? Ez a művelet nem vonható vissza.",
+		"cancel": "Mégse",
+		"delete": "Törlés"
+	},
+	"serverStatus": {
+		"retrying": "Újrapróbálás...",
+		"retryConnection": "Kapcsolat újrapróbálása"
+	}
+}

+ 51 - 0
webview-ui/src/i18n/locales/it/mcp.json

@@ -0,0 +1,51 @@
+{
+	"title": "Server MCP",
+	"done": "Fatto",
+	"description": "Il <0>Model Context Protocol</0> permette la comunicazione con server MCP in esecuzione locale che forniscono strumenti e risorse aggiuntive per estendere le capacità di Roo. Puoi utilizzare <1>server creati dalla comunità</1> o chiedere a Roo di creare nuovi strumenti specifici per il tuo flusso di lavoro (ad esempio, \"aggiungi uno strumento che ottiene la documentazione npm più recente\").",
+	"enableToggle": {
+		"title": "Abilita server MCP",
+		"description": "Quando abilitato, Roo sarà in grado di interagire con i server MCP per funzionalità avanzate. Se non stai utilizzando MCP, puoi disabilitare questa opzione per ridurre l'utilizzo di token da parte di Roo."
+	},
+	"enableServerCreation": {
+		"title": "Abilita creazione server MCP",
+		"description": "Quando abilitato, Roo può aiutarti a creare nuovi server MCP tramite comandi come \"aggiungi un nuovo strumento per...\". Se non hai bisogno di creare server MCP, puoi disabilitare questa opzione per ridurre l'utilizzo di token da parte di Roo."
+	},
+	"editSettings": "Modifica impostazioni MCP",
+	"tool": {
+		"alwaysAllow": "Consenti sempre",
+		"parameters": "Parametri",
+		"noDescription": "Nessuna descrizione"
+	},
+	"tabs": {
+		"tools": "Strumenti",
+		"resources": "Risorse"
+	},
+	"emptyState": {
+		"noTools": "Nessuno strumento trovato",
+		"noResources": "Nessuna risorsa trovata"
+	},
+	"networkTimeout": {
+		"label": "Timeout di rete",
+		"description": "Tempo massimo di attesa per le risposte del server",
+		"options": {
+			"15seconds": "15 secondi",
+			"30seconds": "30 secondi",
+			"1minute": "1 minuto",
+			"5minutes": "5 minuti",
+			"10minutes": "10 minuti",
+			"15minutes": "15 minuti",
+			"30minutes": "30 minuti",
+			"60minutes": "60 minuti"
+		}
+	},
+	"deleteDialog": {
+		"title": "Elimina server MCP",
+		"description": "Sei sicuro di voler eliminare il server MCP \"{{serverName}}\"? Questa azione non può essere annullata.",
+		"cancel": "Annulla",
+		"delete": "Elimina"
+	},
+	"serverStatus": {
+		"retrying": "Nuovo tentativo...",
+		"retryConnection": "Riprova connessione"
+	}
+}

+ 51 - 0
webview-ui/src/i18n/locales/ja/mcp.json

@@ -0,0 +1,51 @@
+{
+	"title": "MCPサーバー",
+	"done": "完了",
+	"description": "<0>Model Context Protocol</0>は、ローカルで実行されているMCPサーバーとの通信を可能にし、Rooの機能を拡張するための追加ツールやリソースを提供します。<1>コミュニティによって作成されたサーバー</1>を使用したり、Rooにワークフロー専用の新しいツールを作成するよう依頼したりできます(例:「最新のnpmドキュメントを取得するツールを追加する」)。",
+	"enableToggle": {
+		"title": "MCPサーバーを有効にする",
+		"description": "有効にすると、Rooは高度な機能のためにMCPサーバーと対話できるようになります。MCPを使用していない場合は、これを無効にしてRooのtoken使用量を減らすことができます。"
+	},
+	"enableServerCreation": {
+		"title": "MCPサーバー作成を有効にする",
+		"description": "有効にすると、Rooは「新しいツールを追加する...」などのコマンドを通じて新しいMCPサーバーの作成を支援できます。MCPサーバーを作成する必要がない場合は、これを無効にしてRooのtoken使用量を減らすことができます。"
+	},
+	"editSettings": "MCP設定を編集",
+	"tool": {
+		"alwaysAllow": "常に許可",
+		"parameters": "パラメータ",
+		"noDescription": "説明なし"
+	},
+	"tabs": {
+		"tools": "ツール",
+		"resources": "リソース"
+	},
+	"emptyState": {
+		"noTools": "ツールが見つかりません",
+		"noResources": "リソースが見つかりません"
+	},
+	"networkTimeout": {
+		"label": "ネットワークタイムアウト",
+		"description": "サーバー応答を待つ最大時間",
+		"options": {
+			"15seconds": "15秒",
+			"30seconds": "30秒",
+			"1minute": "1分",
+			"5minutes": "5分",
+			"10minutes": "10分",
+			"15minutes": "15分",
+			"30minutes": "30分",
+			"60minutes": "60分"
+		}
+	},
+	"deleteDialog": {
+		"title": "MCPサーバーを削除",
+		"description": "MCPサーバー「{{serverName}}」を削除してもよろしいですか?この操作は元に戻せません。",
+		"cancel": "キャンセル",
+		"delete": "削除"
+	},
+	"serverStatus": {
+		"retrying": "再試行中...",
+		"retryConnection": "接続を再試行"
+	}
+}

+ 51 - 0
webview-ui/src/i18n/locales/ko/mcp.json

@@ -0,0 +1,51 @@
+{
+	"title": "MCP 서버",
+	"done": "완료",
+	"description": "<0>Model Context Protocol</0>은 로컬에서 실행되는 MCP 서버와 통신하여 Roo의 기능을 확장하는 추가 도구 및 리소스를 제공합니다. <1>커뮤니티에서 만든 서버</1>를 사용하거나 Roo에게 작업 흐름에 맞는 새로운 도구를 만들도록 요청할 수 있습니다 (예: \"최신 npm 문서를 가져오는 도구 추가\").",
+	"enableToggle": {
+		"title": "MCP 서버 활성화",
+		"description": "활성화하면 Roo가 고급 기능을 위해 MCP 서버와 상호 작용할 수 있습니다. MCP를 사용하지 않는 경우 비활성화하여 Roo의 token 사용량을 줄일 수 있습니다."
+	},
+	"enableServerCreation": {
+		"title": "MCP 서버 생성 활성화",
+		"description": "활성화하면 Roo가 \"새 도구 추가...\"와 같은 명령을 통해 새 MCP 서버를 만드는 데 도움을 줄 수 있습니다. MCP 서버를 만들 필요가 없다면 이 기능을 비활성화하여 Roo의 token 사용량을 줄일 수 있습니다."
+	},
+	"editSettings": "MCP 설정 편집",
+	"tool": {
+		"alwaysAllow": "항상 허용",
+		"parameters": "매개변수",
+		"noDescription": "설명 없음"
+	},
+	"tabs": {
+		"tools": "도구",
+		"resources": "리소스"
+	},
+	"emptyState": {
+		"noTools": "도구를 찾을 수 없음",
+		"noResources": "리소스를 찾을 수 없음"
+	},
+	"networkTimeout": {
+		"label": "네트워크 타임아웃",
+		"description": "서버 응답을 기다리는 최대 시간",
+		"options": {
+			"15seconds": "15초",
+			"30seconds": "30초",
+			"1minute": "1분",
+			"5minutes": "5분",
+			"10minutes": "10분",
+			"15minutes": "15분",
+			"30minutes": "30분",
+			"60minutes": "60분"
+		}
+	},
+	"deleteDialog": {
+		"title": "MCP 서버 삭제",
+		"description": "MCP 서버 \"{{serverName}}\"을(를) 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.",
+		"cancel": "취소",
+		"delete": "삭제"
+	},
+	"serverStatus": {
+		"retrying": "재시도 중...",
+		"retryConnection": "연결 재시도"
+	}
+}

+ 51 - 0
webview-ui/src/i18n/locales/pl/mcp.json

@@ -0,0 +1,51 @@
+{
+	"title": "Serwery MCP",
+	"done": "Gotowe",
+	"description": "<0>Model Context Protocol</0> umożliwia komunikację z lokalnie uruchomionymi serwerami MCP, które zapewniają dodatkowe narzędzia i zasoby rozszerzające możliwości Roo. Możesz korzystać z <1>serwerów stworzonych przez społeczność</1> lub poprosić Roo o utworzenie nowych narzędzi specyficznych dla twojego przepływu pracy (np. \"dodaj narzędzie, które pobiera najnowszą dokumentację npm\").",
+	"enableToggle": {
+		"title": "Włącz serwery MCP",
+		"description": "Po włączeniu, Roo będzie mógł komunikować się z serwerami MCP w celu uzyskania zaawansowanych funkcji. Jeśli nie korzystasz z MCP, możesz to wyłączyć, aby zmniejszyć zużycie tokenów przez Roo."
+	},
+	"enableServerCreation": {
+		"title": "Włącz tworzenie serwerów MCP",
+		"description": "Po włączeniu, Roo może pomóc w tworzeniu nowych serwerów MCP za pomocą poleceń takich jak \"dodaj nowe narzędzie do...\". Jeśli nie potrzebujesz tworzyć serwerów MCP, możesz to wyłączyć, aby zmniejszyć zużycie tokenów przez Roo."
+	},
+	"editSettings": "Edytuj ustawienia MCP",
+	"tool": {
+		"alwaysAllow": "Zawsze zezwalaj",
+		"parameters": "Parametry",
+		"noDescription": "Brak opisu"
+	},
+	"tabs": {
+		"tools": "Narzędzia",
+		"resources": "Zasoby"
+	},
+	"emptyState": {
+		"noTools": "Nie znaleziono narzędzi",
+		"noResources": "Nie znaleziono zasobów"
+	},
+	"networkTimeout": {
+		"label": "Limit czasu sieci",
+		"description": "Maksymalny czas oczekiwania na odpowiedzi serwera",
+		"options": {
+			"15seconds": "15 sekund",
+			"30seconds": "30 sekund",
+			"1minute": "1 minuta",
+			"5minutes": "5 minut",
+			"10minutes": "10 minut",
+			"15minutes": "15 minut",
+			"30minutes": "30 minut",
+			"60minutes": "60 minut"
+		}
+	},
+	"deleteDialog": {
+		"title": "Usuń serwer MCP",
+		"description": "Czy na pewno chcesz usunąć serwer MCP \"{{serverName}}\"? Tej operacji nie można cofnąć.",
+		"cancel": "Anuluj",
+		"delete": "Usuń"
+	},
+	"serverStatus": {
+		"retrying": "Ponowna próba...",
+		"retryConnection": "Ponów połączenie"
+	}
+}

+ 51 - 0
webview-ui/src/i18n/locales/pt-BR/mcp.json

@@ -0,0 +1,51 @@
+{
+	"title": "Servidores MCP",
+	"done": "Concluído",
+	"description": "O <0>Model Context Protocol</0> permite a comunicação com servidores MCP em execução localmente que fornecem ferramentas e recursos adicionais para estender as capacidades do Roo. Você pode usar <1>servidores criados pela comunidade</1> ou pedir ao Roo para criar novas ferramentas específicas para seu fluxo de trabalho (por exemplo, \"adicionar uma ferramenta que obtém a documentação mais recente do npm\").",
+	"enableToggle": {
+		"title": "Ativar servidores MCP",
+		"description": "Quando ativado, o Roo poderá interagir com servidores MCP para funcionalidades avançadas. Se você não estiver usando MCP, pode desativar isso para reduzir o uso de tokens do Roo."
+	},
+	"enableServerCreation": {
+		"title": "Ativar criação de servidores MCP",
+		"description": "Quando ativado, o Roo pode ajudar você a criar novos servidores MCP por meio de comandos como \"adicionar uma nova ferramenta para...\". Se você não precisar criar servidores MCP, pode desativar isso para reduzir o uso de tokens do Roo."
+	},
+	"editSettings": "Editar configurações do MCP",
+	"tool": {
+		"alwaysAllow": "Sempre permitir",
+		"parameters": "Parâmetros",
+		"noDescription": "Sem descrição"
+	},
+	"tabs": {
+		"tools": "Ferramentas",
+		"resources": "Recursos"
+	},
+	"emptyState": {
+		"noTools": "Nenhuma ferramenta encontrada",
+		"noResources": "Nenhum recurso encontrado"
+	},
+	"networkTimeout": {
+		"label": "Tempo limite de rede",
+		"description": "Tempo máximo de espera para respostas do servidor",
+		"options": {
+			"15seconds": "15 segundos",
+			"30seconds": "30 segundos",
+			"1minute": "1 minuto",
+			"5minutes": "5 minutos",
+			"10minutes": "10 minutos",
+			"15minutes": "15 minutos",
+			"30minutes": "30 minutos",
+			"60minutes": "60 minutos"
+		}
+	},
+	"deleteDialog": {
+		"title": "Excluir servidor MCP",
+		"description": "Tem certeza de que deseja excluir o servidor MCP \"{{serverName}}\"? Esta ação não pode ser desfeita.",
+		"cancel": "Cancelar",
+		"delete": "Excluir"
+	},
+	"serverStatus": {
+		"retrying": "Tentando novamente...",
+		"retryConnection": "Tentar conexão novamente"
+	}
+}

+ 51 - 0
webview-ui/src/i18n/locales/pt/mcp.json

@@ -0,0 +1,51 @@
+{
+	"title": "Servidores MCP",
+	"done": "Concluído",
+	"description": "O <0>Model Context Protocol</0> permite a comunicação com servidores MCP em execução localmente que fornecem ferramentas e recursos adicionais para estender as capacidades do Roo. Você pode usar <1>servidores criados pela comunidade</1> ou pedir ao Roo para criar novas ferramentas específicas para seu fluxo de trabalho (por exemplo, \"adicionar uma ferramenta que obtém a documentação mais recente do npm\").",
+	"enableToggle": {
+		"title": "Ativar servidores MCP",
+		"description": "Quando ativado, o Roo poderá interagir com servidores MCP para funcionalidades avançadas. Se você não estiver usando MCP, pode desativar isso para reduzir o uso de tokens do Roo."
+	},
+	"enableServerCreation": {
+		"title": "Ativar criação de servidores MCP",
+		"description": "Quando ativado, o Roo pode ajudar você a criar novos servidores MCP por meio de comandos como \"adicionar uma nova ferramenta para...\". Se você não precisar criar servidores MCP, pode desativar isso para reduzir o uso de tokens do Roo."
+	},
+	"editSettings": "Editar configurações do MCP",
+	"tool": {
+		"alwaysAllow": "Sempre permitir",
+		"parameters": "Parâmetros",
+		"noDescription": "Sem descrição"
+	},
+	"tabs": {
+		"tools": "Ferramentas",
+		"resources": "Recursos"
+	},
+	"emptyState": {
+		"noTools": "Nenhuma ferramenta encontrada",
+		"noResources": "Nenhum recurso encontrado"
+	},
+	"networkTimeout": {
+		"label": "Tempo limite de rede",
+		"description": "Tempo máximo de espera para respostas do servidor",
+		"options": {
+			"15seconds": "15 segundos",
+			"30seconds": "30 segundos",
+			"1minute": "1 minuto",
+			"5minutes": "5 minutos",
+			"10minutes": "10 minutos",
+			"15minutes": "15 minutos",
+			"30minutes": "30 minutos",
+			"60minutes": "60 minutos"
+		}
+	},
+	"deleteDialog": {
+		"title": "Excluir servidor MCP",
+		"description": "Tem certeza de que deseja excluir o servidor MCP \"{{serverName}}\"? Esta ação não pode ser desfeita.",
+		"cancel": "Cancelar",
+		"delete": "Excluir"
+	},
+	"serverStatus": {
+		"retrying": "Tentando novamente...",
+		"retryConnection": "Tentar conexão novamente"
+	}
+}

+ 51 - 0
webview-ui/src/i18n/locales/ru/mcp.json

@@ -0,0 +1,51 @@
+{
+	"title": "Серверы MCP",
+	"done": "Готово",
+	"description": "<0>Model Context Protocol</0> позволяет взаимодействовать с локально запущенными серверами MCP, которые предоставляют дополнительные инструменты и ресурсы для расширения возможностей Roo. Вы можете использовать <1>серверы, созданные сообществом</1>, или попросить Roo создать новые инструменты, специфичные для вашего рабочего процесса (например, \"добавить инструмент, который получает последнюю документацию npm\").",
+	"enableToggle": {
+		"title": "Включить серверы MCP",
+		"description": "Когда включено, Roo сможет взаимодействовать с серверами MCP для расширенных функций. Если вы не используете MCP, вы можете отключить это, чтобы снизить использование token Roo."
+	},
+	"enableServerCreation": {
+		"title": "Включить создание серверов MCP",
+		"description": "Когда включено, Roo может помочь вам создать новые серверы MCP с помощью команд типа \"добавить новый инструмент для...\". Если вам не нужно создавать серверы MCP, вы можете отключить это, чтобы снизить использование token Roo."
+	},
+	"editSettings": "Редактировать настройки MCP",
+	"tool": {
+		"alwaysAllow": "Всегда разрешать",
+		"parameters": "Параметры",
+		"noDescription": "Нет описания"
+	},
+	"tabs": {
+		"tools": "Инструменты",
+		"resources": "Ресурсы"
+	},
+	"emptyState": {
+		"noTools": "Инструменты не найдены",
+		"noResources": "Ресурсы не найдены"
+	},
+	"networkTimeout": {
+		"label": "Тайм-аут сети",
+		"description": "Максимальное время ожидания ответа сервера",
+		"options": {
+			"15seconds": "15 секунд",
+			"30seconds": "30 секунд",
+			"1minute": "1 минута",
+			"5minutes": "5 минут",
+			"10minutes": "10 минут",
+			"15minutes": "15 минут",
+			"30minutes": "30 минут",
+			"60minutes": "60 минут"
+		}
+	},
+	"deleteDialog": {
+		"title": "Удалить сервер MCP",
+		"description": "Вы уверены, что хотите удалить сервер MCP \"{{serverName}}\"? Это действие нельзя отменить.",
+		"cancel": "Отмена",
+		"delete": "Удалить"
+	},
+	"serverStatus": {
+		"retrying": "Повторная попытка...",
+		"retryConnection": "Повторить подключение"
+	}
+}

+ 51 - 0
webview-ui/src/i18n/locales/tr/mcp.json

@@ -0,0 +1,51 @@
+{
+	"title": "MCP Sunucuları",
+	"done": "Tamam",
+	"description": "<0>Model Context Protocol</0>, Roo'nun yeteneklerini genişletmek için ek araçlar ve kaynaklar sağlayan yerel olarak çalışan MCP sunucularıyla iletişim kurmanızı sağlar. <1>Topluluk tarafından oluşturulan sunucuları</1> kullanabilir veya Roo'dan iş akışınıza özel yeni araçlar oluşturmasını isteyebilirsiniz (örneğin, \"en son npm belgelerini alan bir araç ekle\").",
+	"enableToggle": {
+		"title": "MCP Sunucularını Etkinleştir",
+		"description": "Etkinleştirildiğinde, Roo gelişmiş işlevler için MCP sunucularıyla etkileşim kurabilecektir. MCP kullanmıyorsanız, Roo'nun token kullanımını azaltmak için bunu devre dışı bırakabilirsiniz."
+	},
+	"enableServerCreation": {
+		"title": "MCP Sunucu Oluşturmayı Etkinleştir",
+		"description": "Etkinleştirildiğinde, Roo \"için yeni bir araç ekle...\" gibi komutlar aracılığıyla yeni MCP sunucuları oluşturmanıza yardımcı olabilir. MCP sunucuları oluşturmanız gerekmiyorsa, Roo'nun token kullanımını azaltmak için bunu devre dışı bırakabilirsiniz."
+	},
+	"editSettings": "MCP Ayarlarını Düzenle",
+	"tool": {
+		"alwaysAllow": "Her zaman izin ver",
+		"parameters": "Parametreler",
+		"noDescription": "Açıklama yok"
+	},
+	"tabs": {
+		"tools": "Araçlar",
+		"resources": "Kaynaklar"
+	},
+	"emptyState": {
+		"noTools": "Araç bulunamadı",
+		"noResources": "Kaynak bulunamadı"
+	},
+	"networkTimeout": {
+		"label": "Ağ Zaman Aşımı",
+		"description": "Sunucu yanıtları için beklenecek maksimum süre",
+		"options": {
+			"15seconds": "15 saniye",
+			"30seconds": "30 saniye",
+			"1minute": "1 dakika",
+			"5minutes": "5 dakika",
+			"10minutes": "10 dakika",
+			"15minutes": "15 dakika",
+			"30minutes": "30 dakika",
+			"60minutes": "60 dakika"
+		}
+	},
+	"deleteDialog": {
+		"title": "MCP Sunucusunu Sil",
+		"description": "\"{{serverName}}\" MCP sunucusunu silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.",
+		"cancel": "İptal",
+		"delete": "Sil"
+	},
+	"serverStatus": {
+		"retrying": "Yeniden deneniyor...",
+		"retryConnection": "Bağlantıyı Yeniden Dene"
+	}
+}

+ 51 - 0
webview-ui/src/i18n/locales/zh-CN/mcp.json

@@ -0,0 +1,51 @@
+{
+	"title": "MCP 服务器",
+	"done": "完成",
+	"description": "<0>Model Context Protocol</0> 可以与本地运行的 MCP 服务器进行通信,提供额外的工具和资源来扩展 Roo 的功能。您可以使用<1>社区开发的服务器</1>,或者要求 Roo 创建特定于您的工作流程的新工具(例如,\"添加一个获取最新 npm 文档的工具\")。",
+	"enableToggle": {
+		"title": "启用 MCP 服务器",
+		"description": "启用后,Roo 将能够与 MCP 服务器交互以获取高级功能。如果您不使用 MCP,可以禁用此功能以减少 Roo 的 token 使用量。"
+	},
+	"enableServerCreation": {
+		"title": "启用 MCP 服务器创建",
+		"description": "启用后,Roo 可以通过诸如\"添加新工具到...\"之类的命令帮助您创建新的 MCP 服务器。如果您不需要创建 MCP 服务器,可以禁用此功能以减少 Roo 的 token 使用量。"
+	},
+	"editSettings": "编辑 MCP 设置",
+	"tool": {
+		"alwaysAllow": "始终允许",
+		"parameters": "参数",
+		"noDescription": "无描述"
+	},
+	"tabs": {
+		"tools": "工具",
+		"resources": "资源"
+	},
+	"emptyState": {
+		"noTools": "未找到工具",
+		"noResources": "未找到资源"
+	},
+	"networkTimeout": {
+		"label": "网络超时",
+		"description": "等待服务器响应的最长时间",
+		"options": {
+			"15seconds": "15 秒",
+			"30seconds": "30 秒",
+			"1minute": "1 分钟",
+			"5minutes": "5 分钟",
+			"10minutes": "10 分钟",
+			"15minutes": "15 分钟",
+			"30minutes": "30 分钟",
+			"60minutes": "60 分钟"
+		}
+	},
+	"deleteDialog": {
+		"title": "删除 MCP 服务器",
+		"description": "您确定要删除 MCP 服务器 \"{{serverName}}\" 吗?此操作无法撤消。",
+		"cancel": "取消",
+		"delete": "删除"
+	},
+	"serverStatus": {
+		"retrying": "重试中...",
+		"retryConnection": "重试连接"
+	}
+}

+ 51 - 0
webview-ui/src/i18n/locales/zh-TW/mcp.json

@@ -0,0 +1,51 @@
+{
+	"title": "MCP 伺服器",
+	"done": "完成",
+	"description": "<0>Model Context Protocol</0> 能夠與本地運行的 MCP 伺服器進行通訊,提供額外的工具和資源來擴展 Roo 的功能。您可以使用<1>社群開發的伺服器</1>,或者要求 Roo 創建特定於您工作流程的新工具(例如,\"新增一個獲取最新 npm 文檔的工具\")。",
+	"enableToggle": {
+		"title": "啟用 MCP 伺服器",
+		"description": "啟用後,Roo 將能夠與 MCP 伺服器互動以獲取進階功能。如果您不使用 MCP,可以停用此功能以減少 Roo 的 token 使用量。"
+	},
+	"enableServerCreation": {
+		"title": "啟用 MCP 伺服器創建",
+		"description": "啟用後,Roo 可以通過如\"新增工具到...\"之類的命令幫助您創建新的 MCP 伺服器。如果您不需要創建 MCP 伺服器,可以停用此功能以減少 Roo 的 token 使用量。"
+	},
+	"editSettings": "編輯 MCP 設定",
+	"tool": {
+		"alwaysAllow": "始終允許",
+		"parameters": "參數",
+		"noDescription": "無說明"
+	},
+	"tabs": {
+		"tools": "工具",
+		"resources": "資源"
+	},
+	"emptyState": {
+		"noTools": "未找到工具",
+		"noResources": "未找到資源"
+	},
+	"networkTimeout": {
+		"label": "網路逾時",
+		"description": "等待伺服器回應的最長時間",
+		"options": {
+			"15seconds": "15 秒",
+			"30seconds": "30 秒",
+			"1minute": "1 分鐘",
+			"5minutes": "5 分鐘",
+			"10minutes": "10 分鐘",
+			"15minutes": "15 分鐘",
+			"30minutes": "30 分鐘",
+			"60minutes": "60 分鐘"
+		}
+	},
+	"deleteDialog": {
+		"title": "刪除 MCP 伺服器",
+		"description": "您確定要刪除 MCP 伺服器 \"{{serverName}}\" 嗎?此操作無法撤銷。",
+		"cancel": "取消",
+		"delete": "刪除"
+	},
+	"serverStatus": {
+		"retrying": "重試中...",
+		"retryConnection": "重試連接"
+	}
+}