diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a798dc28..e7a02aefc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,10 @@ - Allow supported AI model profiles to set a provider-specific reasoning effort. (#454) - Show unavailable or substituted document fonts with affected-layer selection and retry actions, and expose font fidelity through the Figma API and MCP tooling. (#503) +### Changed + +- Move MCP connections into their own Settings destination instead of presenting them as part of model configuration. + ### Performance - Defer JSX generation and syntax highlighting until the Code panel is active, keeping large canvas selections responsive. (#500) diff --git a/packages/docs/programmable/ai-chat.md b/packages/docs/programmable/ai-chat.md index 532afcc3e..6bb1427ca 100644 --- a/packages/docs/programmable/ai-chat.md +++ b/packages/docs/programmable/ai-chat.md @@ -33,7 +33,7 @@ No backend, no subscription — your key talks directly to the provider. Browser ### External MCP connections -Desktop ACP agents can also use trusted remote [Model Context Protocol](https://modelcontextprotocol.io/) servers. In **Settings → AI & agents → MCP connections**, add a named Streamable HTTP endpoint, optionally save a bearer token, and enable the connection. OpenPencil stores the token in the configured credential backend rather than ordinary settings and resolves it only when starting the ACP session. +Desktop ACP agents can also use trusted remote [Model Context Protocol](https://modelcontextprotocol.io/) servers. In **Settings → MCP connections**, add a named Streamable HTTP endpoint, optionally save a bearer token, and enable the connection. OpenPencil stores the token in the configured credential backend rather than ordinary settings and resolves it only when starting the ACP session. Remote servers must use HTTPS. Loopback HTTP endpoints are accepted for local development. Review and trust a server before enabling it: its tools may read external data or perform actions with the credentials you provide. OpenPencil's built-in design MCP server remains attached automatically and does not need to be added here. diff --git a/src/app/settings/dialog.ts b/src/app/settings/dialog.ts index a36863d20..f15ee51af 100644 --- a/src/app/settings/dialog.ts +++ b/src/app/settings/dialog.ts @@ -1,6 +1,6 @@ import { ref } from 'vue' -export type SettingsSection = 'ai' | 'media' | 'storage' +export type SettingsSection = 'ai' | 'mcp' | 'media' | 'storage' export const settingsDialogOpen = ref(false) export const settingsDialogSection = ref('ai') diff --git a/src/components/settings/SettingsDialog.vue b/src/components/settings/SettingsDialog.vue index f6571075d..4ab4d8317 100644 --- a/src/components/settings/SettingsDialog.vue +++ b/src/components/settings/SettingsDialog.vue @@ -7,6 +7,7 @@ import { IS_TAURI } from '@open-pencil/core/constants' import { useAIChat } from '@/app/ai/chat/use' import { appCredentialServices } from '@/app/settings/credentials/app' import { settingsDialogOpen, settingsDialogSection } from '@/app/settings/dialog' +import MCPConnectionsSection from '@/components/settings/mcp/MCPConnectionsSection.vue' import ModelsPanel from '@/components/settings/models/ModelsPanel.vue' import StockPhotoKeysSection from '@/components/settings/provider/StockPhotoKeysSection.vue' import StorageSettingsPanel from '@/components/settings/storage/StorageSettingsPanel.vue' @@ -67,6 +68,16 @@ const navigationClass = {{ dialogs.settingsAIAndAgents }} +