feat(mcp): centralize connection access policies

This commit is contained in:
二丫讲梵 authored and GitHub committed 2026-07-20 22:47:40 +08:00
1 parent 29f493f7da
commit d642d01eac
56 files changed
+6393 -617

No files matched your search

+2
View File
@@ -251,6 +251,8 @@ export const saveAiProviderConfig = forward("saveAiProviderConfig");
export const loadAiProviderConfigs = forward("loadAiProviderConfigs");
export const loadDesktopSettings = forward("loadDesktopSettings");
export const saveDesktopSettings = forward("saveDesktopSettings");
export const loadMcpGlobalPolicy = forward("loadMcpGlobalPolicy");
export const saveMcpGlobalPolicy = forward("saveMcpGlobalPolicy");
export const completeAppClose = forward("completeAppClose");
export const requestAppClose = forward("requestAppClose");
export const setDriverStoreDir = forward("setDriverStoreDir");
+14
View File
@@ -54,6 +54,7 @@ import type {
UpgradeAllAgentDriversResult,
AgentUpdateBlocker,
DesktopSettings,
McpGlobalPolicy,
SavedSqlSyncRequest,
DriverInstallProgress,
JavaRuntimeConfig,
@@ -1167,6 +1168,19 @@ export async function saveDesktopSettings(settings: DesktopSettings): Promise<vo
safeLocalStorageSet(DESKTOP_SETTINGS_STORAGE_KEY, JSON.stringify({ ...DEFAULT_DESKTOP_SETTINGS, ...settings }));
}
export async function loadMcpGlobalPolicy(): Promise<McpGlobalPolicy> {
return get("/api/app-settings/mcp-policy");
}
export async function saveMcpGlobalPolicy(policy: Omit<McpGlobalPolicy, "configured">): Promise<void> {
const res = await fetch(apiUrl("/api/app-settings/mcp-policy"), {
method: "PUT",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(policy),
});
if (!res.ok) throw new Error(await res.text());
}
export interface OpenTabsStatePayload {
tabs: unknown[];
activeTabId: string | null;
+15
View File
@@ -166,6 +166,13 @@ export interface DesktopSettings {
sidebar_table_page_size?: number | null;
}
export interface McpGlobalPolicy {
readOnly: boolean;
allowDangerousSql: boolean;
allowedConnectionIds: string[] | null;
configured: boolean;
}
export interface SavedSqlSyncEntry {
folderName?: string;
fileName: string;
@@ -448,6 +455,14 @@ export async function saveDesktopSettings(settings: DesktopSettings): Promise<vo
return invoke("save_desktop_settings", { settings });
}
export async function loadMcpGlobalPolicy(): Promise<McpGlobalPolicy> {
return invoke("load_mcp_global_policy");
}
export async function saveMcpGlobalPolicy(policy: Omit<McpGlobalPolicy, "configured">): Promise<void> {
return invoke("save_mcp_global_policy", { policy });
}
export interface OpenTabsStatePayload {
tabs: unknown[];
activeTabId: string | null;