mirror of
https://github.com/t8y2/dbx.git
synced 2026-10-21 06:00:39 +00:00
feat(mcp): add WorkBuddy client config template
This commit is contained in:
@@ -181,7 +181,20 @@ import { currentExecutableStatementRange, type SqlTextRange } from "@/lib/sql/sq
|
||||
import { executableStatementRangeCacheForDoc, executableStatementRangeStartingAt, type ExecutableStatementRangeCache } from "@/lib/sql/executableStatementRangeCache";
|
||||
import { EMPTY_TABLE_COLUMN_TEMPLATE_DATA_TYPE, parseTableColumnTemplateFields, TABLE_COLUMN_TEMPLATE_DATABASE_TYPES, tableColumnTemplateRowsToSettings } from "@/lib/table/tableColumnTemplates";
|
||||
import { DEFAULT_SQL_VARIABLE_SYNTAX_TOGGLES, normalizeSqlVariableSyntaxOverrides, SQL_VARIABLE_SYNTAX_DATABASE_TYPES, SQL_VARIABLE_SYNTAX_KEYS, SQL_VARIABLE_SYNTAX_TOKENS, type SqlVariableSyntaxOverrides, type SqlVariableSyntaxToggles } from "@/lib/sql/sqlVariableSyntax";
|
||||
import { buildMcpCherryStudioConfig, buildMcpCodexConfig, buildMcpDeepSeekHarnessConfig, buildMcpJsonConfig, buildMcpOpenCodeConfig, buildMcpPiConfig, buildMcpQoderConfig, buildMcpTraeConfig, buildMcpVsCodeConfig, mcpWebBackendUrl, type McpLaunchConfig } from "@/lib/mcp/mcpConfigTemplates";
|
||||
import {
|
||||
buildMcpCherryStudioConfig,
|
||||
buildMcpCodexConfig,
|
||||
buildMcpDeepSeekHarnessConfig,
|
||||
buildMcpJsonConfig,
|
||||
buildMcpOpenCodeConfig,
|
||||
buildMcpPiConfig,
|
||||
buildMcpQoderConfig,
|
||||
buildMcpTraeConfig,
|
||||
buildMcpVsCodeConfig,
|
||||
buildMcpWorkBuddyConfig,
|
||||
mcpWebBackendUrl,
|
||||
type McpLaunchConfig,
|
||||
} from "@/lib/mcp/mcpConfigTemplates";
|
||||
import { beginMcpStatusRequest, mcpUpdateAvailability } from "@/lib/mcp/mcpUpdateStatus";
|
||||
import { isMcpPolicyMutationBlocked, MCP_CAPABILITY_ROWS, MCP_EXECUTION_MODE_COLUMNS, MCP_TOOL_OPTIONS, mcpExecutionModeFromPolicy, mcpPolicyFieldsForExecutionMode, toggleMcpAllowedToolName, type McpExecutionMode } from "@/lib/mcp/mcpPolicySelection";
|
||||
import { isMacOS, isWindows } from "@/lib/backend/platform";
|
||||
@@ -2630,7 +2643,7 @@ async function exportDebugLogs() {
|
||||
}
|
||||
|
||||
// ---------- MCP Server ----------
|
||||
type McpConfigTab = "claude" | "cursor" | "codebuddy" | "zcode" | "trae" | "vscode" | "windsurf" | "codex" | "deepseek-harness" | "opencode" | "pi" | "cherry-studio" | "qoder";
|
||||
type McpConfigTab = "claude" | "cursor" | "codebuddy" | "zcode" | "trae" | "vscode" | "windsurf" | "codex" | "deepseek-harness" | "opencode" | "pi" | "cherry-studio" | "qoder" | "workbuddy";
|
||||
type McpCopyKind = "install" | "uninstall" | "http-endpoint" | "http-token" | "http-config" | `${McpConfigTab}-config`;
|
||||
type McpTransportTab = "stdio" | "http";
|
||||
type McpManagementTab = "access" | "permissions";
|
||||
@@ -3214,6 +3227,7 @@ const mcpDeepSeekHarnessRecommendedConfig = computed(() => buildMcpDeepSeekHarne
|
||||
|
||||
const mcpOpenCodeRecommendedConfig = computed(() => buildMcpOpenCodeConfig(mcpLaunchConfig.value));
|
||||
const mcpPiRecommendedConfig = computed(() => buildMcpPiConfig(mcpLaunchConfig.value));
|
||||
const mcpWorkBuddyRecommendedConfig = computed(() => buildMcpWorkBuddyConfig(mcpLaunchConfig.value));
|
||||
|
||||
const mcpStatusTone = computed<"ok" | "warning" | "muted">(() => {
|
||||
if (!mcpStatus.value) return "muted";
|
||||
@@ -9107,6 +9121,7 @@ LIMIT 100;</pre
|
||||
<TabsTrigger value="pi" class="settings-mcp-config-tab h-7 flex-none shrink-0 px-2.5">Pi</TabsTrigger>
|
||||
<TabsTrigger value="cherry-studio" class="settings-mcp-config-tab h-7 flex-none shrink-0 px-2.5">Cherry Studio</TabsTrigger>
|
||||
<TabsTrigger value="qoder" class="settings-mcp-config-tab h-7 flex-none shrink-0 px-2.5">Qoder</TabsTrigger>
|
||||
<TabsTrigger value="workbuddy" class="settings-mcp-config-tab h-7 flex-none shrink-0 px-2.5">WorkBuddy</TabsTrigger>
|
||||
</TabsList>
|
||||
|
||||
<TabsContent value="claude" class="m-0">
|
||||
@@ -9298,6 +9313,21 @@ LIMIT 100;</pre
|
||||
</div>
|
||||
</div>
|
||||
</TabsContent>
|
||||
|
||||
<TabsContent value="workbuddy" class="m-0">
|
||||
<div class="space-y-2">
|
||||
<div class="rounded-md border bg-muted/20 px-3 py-2 text-xs text-muted-foreground">
|
||||
{{ t("settings.mcpWorkBuddyConfigPath") }}
|
||||
</div>
|
||||
<div class="relative rounded-md border bg-background p-3">
|
||||
<pre class="overflow-x-auto whitespace-pre text-xs leading-relaxed"><code>{{ mcpWorkBuddyRecommendedConfig }}</code></pre>
|
||||
<Button type="button" variant="outline" size="icon" class="absolute right-2 top-2 h-7 w-7" :title="t('common.copy')" @click="copyMcpText('workbuddy-config', mcpWorkBuddyRecommendedConfig)">
|
||||
<CheckCircle2 v-if="mcpCopied === 'workbuddy-config'" class="h-3.5 w-3.5 text-green-500" />
|
||||
<Copy v-else class="h-3.5 w-3.5" />
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
</TabsContent>
|
||||
</Tabs>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -7537,6 +7537,7 @@ export default withEnglishFallback({
|
||||
mcpZCodeConfigPath: "ZCode: Parametrlər > MCP serverləri > Yeni MCP serveri > Tam konfiqurasiya; İstifadəçi və ya İş sahəsi əhatəsini seçin, sonra JSON konfiqurasiyasını yerləşdirin.",
|
||||
mcpTraeConfigPath: "TRAE: Parametrlər > MCP > Əlavə et > Əl ilə əlavə et, sonra JSON konfiqurasiyasını yerləşdirin.",
|
||||
mcpQoderConfigPath: "Qoder: Parametrlər > MCP > Əl ilə əlavə et, sonra JSON konfiqurasiyasını yerləşdirin.",
|
||||
mcpWorkBuddyConfigPath: "WorkBuddy: yan paneldə Qoşmaları açın, MCP Servers (yuxarı sağ) > MCP-ni Konfiqurasiya et ilə JSON-u yerləşdirin; ya da ~/.workbuddy/mcp.json (qlobal) və ya layihədəki .workbuddy/mcp.json faylına saxlayın.",
|
||||
mcpCherryStudioConfigPath: "Cherry Studio: Parametrlər > MCP serverləri > Server əlavə et > JSON idxal et, sonra konfiqurasiyanı yerləşdirin.",
|
||||
mcpVsCodeConfigPath: "VS Code/Copilot iş sahəsində .vscode/mcp.json və ya istifadəçi profilində mcp.json faylından istifadə edə bilər.",
|
||||
mcpWindsurfConfigPath: "Windsurf ~/.codeium/windsurf/mcp_config.json faylından istifadə edə bilər.",
|
||||
|
||||
@@ -7722,6 +7722,7 @@ export default {
|
||||
mcpZCodeConfigPath: "ZCode: Settings > MCP Servers > New MCP Server > Full configuration; choose the User or Workspace scope, then paste the JSON configuration.",
|
||||
mcpTraeConfigPath: "TRAE: Settings > MCP > Add > Add Manually, then paste the JSON configuration.",
|
||||
mcpQoderConfigPath: "Qoder: Settings > MCP > Add Manually, then paste the JSON configuration.",
|
||||
mcpWorkBuddyConfigPath: "WorkBuddy: open Plugins in the sidebar, click MCP Servers (top right) > Configure MCP and paste the JSON; or save it to ~/.workbuddy/mcp.json (global) or .workbuddy/mcp.json in your project.",
|
||||
mcpCherryStudioConfigPath: "Cherry Studio: Settings > MCP Servers > Add Server > Import JSON, then paste the configuration.",
|
||||
mcpVsCodeConfigPath: "VS Code/Copilot can use .vscode/mcp.json in the workspace or mcp.json in the user profile.",
|
||||
mcpWindsurfConfigPath: "Windsurf can use ~/.codeium/windsurf/mcp_config.json.",
|
||||
|
||||
@@ -7231,6 +7231,7 @@ export default withEnglishFallback({
|
||||
mcpZCodeConfigPath: "ZCode: Configuración > Servidores MCP > Nuevo servidor MCP > Configuración completa; elige el ámbito Usuario o Espacio de trabajo y pega la configuración JSON.",
|
||||
mcpTraeConfigPath: "TRAE: Configuración > MCP > Agregar > Agregar manualmente; luego pega la configuración JSON.",
|
||||
mcpQoderConfigPath: "Qoder: Configuración > MCP > Agregar manualmente; luego pega la configuración JSON.",
|
||||
mcpWorkBuddyConfigPath: "WorkBuddy: abre Plugins en la barra lateral, haz clic en MCP Servers (arriba a la derecha) > Configurar MCP y pega el JSON; o guárdalo en ~/.workbuddy/mcp.json (global) o en .workbuddy/mcp.json del proyecto.",
|
||||
mcpCherryStudioConfigPath: "Cherry Studio: Configuración > Servidores MCP > Agregar servidor > Importar JSON; luego pega la configuración.",
|
||||
mcpVsCodeConfigPath: "VS Code/Copilot puede usar .vscode/mcp.json en el espacio de trabajo o mcp.json en el perfil de usuario.",
|
||||
mcpWindsurfConfigPath: "Windsurf puede usar ~/.codeium/windsurf/mcp_config.json.",
|
||||
|
||||
@@ -7231,6 +7231,7 @@ export default withEnglishFallback({
|
||||
mcpZCodeConfigPath: "ZCode: Impostazioni > Server MCP > Nuovo server MCP > Configurazione completa; scegli l'ambito Utente o Area di lavoro, quindi incolla la configurazione JSON.",
|
||||
mcpTraeConfigPath: "TRAE: Impostazioni > MCP > Aggiungi > Aggiungi manualmente, poi incolla la configurazione JSON.",
|
||||
mcpQoderConfigPath: "Qoder: Impostazioni > MCP > Aggiungi manualmente, poi incolla la configurazione JSON.",
|
||||
mcpWorkBuddyConfigPath: "WorkBuddy: apri Plugin nella barra laterale, clicca MCP Servers (in alto a destra) > Configura MCP e incolla il JSON; oppure salvalo in ~/.workbuddy/mcp.json (globale) o in .workbuddy/mcp.json del progetto.",
|
||||
mcpCherryStudioConfigPath: "Cherry Studio: Impostazioni > Server MCP > Aggiungi server > Importa JSON, quindi incolla la configurazione.",
|
||||
mcpVsCodeConfigPath: "VS Code/Copilot può usare .vscode/mcp.json nell'area di lavoro o mcp.json nel profilo utente.",
|
||||
mcpWindsurfConfigPath: "Windsurf può usare ~/.codeium/windsurf/mcp_config.json.",
|
||||
|
||||
@@ -7236,6 +7236,7 @@ export default withEnglishFallback({
|
||||
mcpZCodeConfigPath: "ZCode:設定 > MCP サーバー > 新しい MCP サーバー > 完全な設定を開き、ユーザーまたはワークスペースのスコープを選択して JSON 設定を貼り付けます。",
|
||||
mcpTraeConfigPath: "TRAE: 設定 > MCP > 追加 > 手動で追加 からJSON設定を貼り付けます。",
|
||||
mcpQoderConfigPath: "Qoder: 設定 > MCP > 手動で追加 からJSON設定を貼り付けます。",
|
||||
mcpWorkBuddyConfigPath: "WorkBuddy: サイドバーのプラグイン → 右上の MCP サーバー → MCP を設定 に JSON を貼り付けて保存します。または ~/.workbuddy/mcp.json(グローバル)またはプロジェクト内の .workbuddy/mcp.json に保存してください。",
|
||||
mcpCherryStudioConfigPath: "Cherry Studio: 設定 > MCPサーバー > サーバーを追加 > JSONをインポート から設定を貼り付けます。",
|
||||
mcpVsCodeConfigPath: "VS Code/Copilotはワークスペースの .vscode/mcp.json またはユーザープロファイルの mcp.json を使用できます。",
|
||||
mcpWindsurfConfigPath: "Windsurfは ~/.codeium/windsurf/mcp_config.json を使用できます。",
|
||||
|
||||
@@ -7001,6 +7001,7 @@ export default withEnglishFallback({
|
||||
mcpZCodeConfigPath: "ZCode: 설정 > MCP 서버 > 새 MCP 서버 > 전체 구성에서 사용자 또는 작업 영역 범위를 선택한 다음 JSON 구성을 붙여넣으세요.",
|
||||
mcpTraeConfigPath: "TRAE: 설정 > MCP > 추가 > 수동 추가 후 JSON 설정을 붙여넣으세요.",
|
||||
mcpQoderConfigPath: "Qoder: 설정 > MCP > 수동 추가 후 JSON 설정을 붙여넣으세요.",
|
||||
mcpWorkBuddyConfigPath: "WorkBuddy: 사이드바의 플러그인 → 오른쪽 위 MCP 서버 > MCP 구성에 JSON을 붙여넣어 저장하세요. 또는 ~/.workbuddy/mcp.json(전역) 또는 프로젝트의 .workbuddy/mcp.json에 저장하세요.",
|
||||
mcpCherryStudioConfigPath: "Cherry Studio: 설정 > MCP 서버 > 서버 추가 > JSON 가져오기 후 설정을 붙여넣으세요.",
|
||||
mcpVsCodeConfigPath: "VS Code/Copilot은 작업 영역의 .vscode/mcp.json 또는 사용자 프로필의 mcp.json을 사용할 수 있습니다.",
|
||||
mcpWindsurfConfigPath: "Windsurf는 ~/.codeium/windsurf/mcp_config.json을 사용할 수 있습니다.",
|
||||
|
||||
@@ -7233,6 +7233,7 @@ export default withEnglishFallback({
|
||||
mcpZCodeConfigPath: "ZCode: Configurações > Servidores MCP > Novo servidor MCP > Configuração completa; escolha o escopo Usuário ou Espaço de trabalho e cole a configuração JSON.",
|
||||
mcpTraeConfigPath: "TRAE: Configurações > MCP > Adicionar > Adicionar manualmente; depois cole a configuração JSON.",
|
||||
mcpQoderConfigPath: "Qoder: Configurações > MCP > Adicionar manualmente; depois cole a configuração JSON.",
|
||||
mcpWorkBuddyConfigPath: "WorkBuddy: abra Plugins na barra lateral, clique em MCP Servers (canto superior direito) > Configurar MCP e cole o JSON; ou salve em ~/.workbuddy/mcp.json (global) ou em .workbuddy/mcp.json do projeto.",
|
||||
mcpCherryStudioConfigPath: "Cherry Studio: Configurações > Servidores MCP > Adicionar servidor > Importar JSON; depois cole a configuração.",
|
||||
mcpVsCodeConfigPath: "O VS Code/Copilot pode usar .vscode/mcp.json no workspace ou mcp.json no perfil do usuário.",
|
||||
mcpWindsurfConfigPath: "O Windsurf pode usar ~/.codeium/windsurf/mcp_config.json.",
|
||||
|
||||
@@ -7418,6 +7418,7 @@ export default withEnglishFallback({
|
||||
mcpZCodeConfigPath: "ZCode: Ayarlar > MCP Sunucuları > Yeni MCP Sunucusu > Tam yapılandırma; Kullanıcı ya da Çalışma Alanı kapsamını seçip JSON yapılandırmasını yapıştırın.",
|
||||
mcpTraeConfigPath: "TRAE: Ayarlar > MCP > Ekle > Elle Ekle, ardından JSON yapılandırmasını yapıştırın.",
|
||||
mcpQoderConfigPath: "Qoder: Ayarlar > MCP > Elle Ekle, ardından JSON yapılandırmasını yapıştırın.",
|
||||
mcpWorkBuddyConfigPath: "WorkBuddy: kenar çubuğunda Eklentiler'i açın, MCP Servers (sağ üst) > MCP'yi Yapılandır ile JSON'u yapıştırın; ya da ~/.workbuddy/mcp.json (genel) veya proje içindeki .workbuddy/mcp.json dosyasına kaydedin.",
|
||||
mcpCherryStudioConfigPath: "Cherry Studio: Ayarlar > MCP Sunucuları > Sunucu Ekle > JSON İçe Aktar, ardından yapılandırmayı yapıştırın.",
|
||||
mcpVsCodeConfigPath: "VS Code/Copilot, çalışma alanında .vscode/mcp.json ya da kullanıcı profilinde mcp.json kullanabilir.",
|
||||
mcpWindsurfConfigPath: "Windsurf, ~/.codeium/windsurf/mcp_config.json kullanabilir.",
|
||||
|
||||
@@ -7698,6 +7698,7 @@ export default withEnglishFallback({
|
||||
mcpZCodeConfigPath: "ZCode:设置 > MCP 服务器 > 新建 MCP 服务器 > 完整配置,选择用户或工作区作用域后粘贴 JSON 配置。",
|
||||
mcpTraeConfigPath: "TRAE:设置 > MCP > 添加 > 手动添加,然后粘贴 JSON 配置。",
|
||||
mcpQoderConfigPath: "Qoder:设置 > MCP > 手动添加,然后粘贴 JSON 配置。",
|
||||
mcpWorkBuddyConfigPath: "WorkBuddy:侧边栏 插件 → 右上角 MCP 服务器 → 配置 MCP,粘贴 JSON 保存;或写入 ~/.workbuddy/mcp.json(全局)或项目目录 .workbuddy/mcp.json。",
|
||||
mcpCherryStudioConfigPath: "Cherry Studio:设置 > MCP 服务器 > 添加服务器 > 导入 JSON,然后粘贴配置。",
|
||||
mcpVsCodeConfigPath: "VS Code/Copilot 可放在工作区 .vscode/mcp.json 或用户配置文件 mcp.json。",
|
||||
mcpWindsurfConfigPath: "Windsurf 可放在 ~/.codeium/windsurf/mcp_config.json。",
|
||||
|
||||
@@ -6590,6 +6590,7 @@ export default withEnglishFallback({
|
||||
mcpZCodeConfigPath: "ZCode:設定 > MCP 伺服器 > 新增 MCP 伺服器 > 完整設定,選擇使用者或工作區範圍後貼上 JSON 設定。",
|
||||
mcpTraeConfigPath: "TRAE:設定 > MCP > 新增 > 手動新增,然後貼上 JSON 設定。",
|
||||
mcpQoderConfigPath: "Qoder:設定 > MCP > 手動新增,然後貼上 JSON 設定。",
|
||||
mcpWorkBuddyConfigPath: "WorkBuddy:側邊欄 插件 → 右上角 MCP 伺服器 → 設定 MCP,貼上 JSON 儲存;或寫入 ~/.workbuddy/mcp.json(全域)或專案目錄 .workbuddy/mcp.json。",
|
||||
mcpCherryStudioConfigPath: "Cherry Studio:設定 > MCP 伺服器 > 新增伺服器 > 匯入 JSON,然後貼上設定。",
|
||||
mcpVsCodeConfigPath: "VS Code/Copilot 可放在工作區 .vscode/mcp.json 或使用者設定檔 mcp.json。",
|
||||
mcpWindsurfConfigPath: "Windsurf 可放在 ~/.codeium/windsurf/mcp_config.json。",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { buildMcpCherryStudioConfig, buildMcpCodexConfig, buildMcpDeepSeekHarnessConfig, buildMcpJsonConfig, buildMcpOpenCodeConfig, buildMcpPiConfig, buildMcpQoderConfig, buildMcpTraeConfig, buildMcpVsCodeConfig, mcpWebBackendUrl } from "@/lib/mcp/mcpConfigTemplates";
|
||||
import { buildMcpCherryStudioConfig, buildMcpCodexConfig, buildMcpDeepSeekHarnessConfig, buildMcpJsonConfig, buildMcpOpenCodeConfig, buildMcpPiConfig, buildMcpQoderConfig, buildMcpTraeConfig, buildMcpVsCodeConfig, buildMcpWorkBuddyConfig, mcpWebBackendUrl } from "@/lib/mcp/mcpConfigTemplates";
|
||||
|
||||
describe("MCP config templates", () => {
|
||||
it("builds the standard mcpServers JSON used by Claude, Cursor, TRAE, and Windsurf", () => {
|
||||
@@ -37,6 +37,16 @@ describe("MCP config templates", () => {
|
||||
expect(buildMcpPiConfig({ command: "npx", args: ["-y", "@dbx-app/mcp-server"] })).toContain('"npx"');
|
||||
});
|
||||
|
||||
it("builds the standard mcpServers JSON used by WorkBuddy", () => {
|
||||
const launch = { command: "dbx-mcp-server", env: { DBX_DATA_DIR: "D:\\DBX Data" } };
|
||||
|
||||
expect(JSON.parse(buildMcpWorkBuddyConfig(launch))).toEqual({
|
||||
mcpServers: {
|
||||
dbx: launch,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it("builds standard JSON configs with a direct node launch command", () => {
|
||||
const config = JSON.parse(buildMcpJsonConfig({ command: "C:\\Program Files\\nodejs\\node.exe", args: ["C:\\Users\\zhiyo\\AppData\\Roaming\\npm\\node_modules\\@dbx-app\\mcp-server\\dist\\index.js"] }));
|
||||
|
||||
|
||||
@@ -165,11 +165,12 @@ describe("MCP policy settings state", () => {
|
||||
expect(tabsSource).toContain("overscroll-x-contain");
|
||||
expect(tabsSource).not.toContain("flex-wrap");
|
||||
expect(tabsSource).not.toContain("grid-cols-");
|
||||
expect(tabsSource.match(/flex-none shrink-0/g)).toHaveLength(13);
|
||||
expect(tabsSource.match(/flex-none shrink-0/g)).toHaveLength(14);
|
||||
expect(tabsSource).toContain('<TabsTrigger value="deepseek-harness"');
|
||||
expect(tabsSource).toContain('<TabsTrigger value="codebuddy"');
|
||||
expect(tabsSource).toContain('<TabsTrigger value="zcode"');
|
||||
expect(tabsSource).toContain('<TabsTrigger value="qoder"');
|
||||
expect(tabsSource).toContain('<TabsTrigger value="workbuddy"');
|
||||
expect(tabsSource).not.toContain("min-w-0 px-");
|
||||
|
||||
const codeBuddyStart = settingsDialogSource.indexOf('<TabsContent value="codebuddy"', tabsEnd);
|
||||
|
||||
@@ -123,3 +123,7 @@ export function buildMcpOpenCodeConfig(config?: McpLaunchConfig): string {
|
||||
export function buildMcpPiConfig(config?: McpLaunchConfig): string {
|
||||
return buildMcpJsonConfig(config);
|
||||
}
|
||||
|
||||
export function buildMcpWorkBuddyConfig(config?: McpLaunchConfig): string {
|
||||
return buildMcpJsonConfig(config);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user