diff --git a/pkg/api/server_settings.go b/pkg/api/server_settings.go index 4abb2094..ffc5b372 100644 --- a/pkg/api/server_settings.go +++ b/pkg/api/server_settings.go @@ -43,6 +43,10 @@ func (a *ServerSettingsApi) ServerSettingsJavascriptHandler(c *core.WebContext) a.appendBooleanSetting(builder, "e", config.EnableDataExport) a.appendBooleanSetting(builder, "i", config.EnableDataImport) + if config.EnableMCPServer { + a.appendBooleanSetting(builder, "mcp", config.EnableMCPServer) + } + if config.LoginPageTips.Enabled { a.appendMultiLanguageTipSetting(builder, "lpt", config.LoginPageTips) } diff --git a/pkg/api/tokens.go b/pkg/api/tokens.go index c0cbed5b..1b17bc48 100644 --- a/pkg/api/tokens.go +++ b/pkg/api/tokens.go @@ -83,6 +83,10 @@ func (a *TokensApi) TokenListHandler(c *core.WebContext) (any, *errs.Error) { // TokenGenerateMCPHandler generates a new MCP token for current user func (a *TokensApi) TokenGenerateMCPHandler(c *core.WebContext) (any, *errs.Error) { + if !a.CurrentConfig().EnableMCPServer { + return nil, errs.ErrMCPServerNotEnabled + } + var generateMCPTokenReq models.TokenGenerateMCPRequest err := c.ShouldBindJSON(&generateMCPTokenReq) diff --git a/pkg/cli/user_data.go b/pkg/cli/user_data.go index 0976da7f..267187ff 100644 --- a/pkg/cli/user_data.go +++ b/pkg/cli/user_data.go @@ -422,6 +422,10 @@ func (l *UserDataCli) CreateNewUserToken(c *core.CliContext, username string, to var tokenRecord *models.TokenRecord if tokenType == "mcp" { + if !l.CurrentConfig().EnableMCPServer { + return nil, "", errs.ErrMCPServerNotEnabled + } + if user.FeatureRestriction.Contains(core.USER_FEATURE_RESTRICTION_TYPE_MCP_ACCESS) { return nil, "", errs.ErrNotPermittedToPerformThisAction } diff --git a/pkg/errs/error.go b/pkg/errs/error.go index 560ef440..d0bb0f0e 100644 --- a/pkg/errs/error.go +++ b/pkg/errs/error.go @@ -39,6 +39,7 @@ const ( NormalSubcategoryPicture = 11 NormalSubcategoryConverter = 12 NormalSubcategoryUserCustomExchangeRate = 13 + NormalSubcategoryModelContextProtocol = 14 ) // Error represents the specific error returned to user diff --git a/pkg/errs/mcp.go b/pkg/errs/mcp.go new file mode 100644 index 00000000..ab52e0aa --- /dev/null +++ b/pkg/errs/mcp.go @@ -0,0 +1,8 @@ +package errs + +import "net/http" + +// Error codes related to model context protocol server +var ( + ErrMCPServerNotEnabled = NewNormalError(NormalSubcategoryModelContextProtocol, 0, http.StatusBadRequest, "mcp server is not enabled") +) diff --git a/src/lib/server_settings.ts b/src/lib/server_settings.ts index 559e1cb1..011c8a38 100644 --- a/src/lib/server_settings.ts +++ b/src/lib/server_settings.ts @@ -31,6 +31,10 @@ export function isDataImportingEnabled(): boolean { return getServerSetting('i') === 1; } +export function isMCPServerEnabled(): boolean { + return getServerSetting('mcp') === 1; +} + export function getLoginPageTips(): Record{ return getServerSetting('lpt') as Record; } diff --git a/src/locales/de.json b/src/locales/de.json index 823c78f7..754d7277 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -1188,6 +1188,7 @@ "user custom exchange rate data not found": "User custom exchange rate data is not found", "cannot update exchange rate data for base currency": "Cannot update exchange rate data for base currency", "cannot delete exchange rate data for base currency": "Cannot delete exchange rate data for base currency", + "mcp server is not enabled": "MCP Server is not enabled", "query items cannot be blank": "Abfrageelemente dürfen nicht leer sein", "query items too much": "Zu viele Abfrageelemente", "query items have invalid item": "Ungültiges Element in Abfrageelementen", diff --git a/src/locales/en.json b/src/locales/en.json index 58e38560..87836420 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1188,6 +1188,7 @@ "user custom exchange rate data not found": "User custom exchange rate data is not found", "cannot update exchange rate data for base currency": "Cannot update exchange rate data for base currency", "cannot delete exchange rate data for base currency": "Cannot delete exchange rate data for base currency", + "mcp server is not enabled": "MCP Server is not enabled", "query items cannot be blank": "There are no query items", "query items too much": "There are too many query items", "query items have invalid item": "There is invalid item in query items", diff --git a/src/locales/es.json b/src/locales/es.json index 547ebdd3..1f2511d7 100644 --- a/src/locales/es.json +++ b/src/locales/es.json @@ -1188,6 +1188,7 @@ "user custom exchange rate data not found": "User custom exchange rate data is not found", "cannot update exchange rate data for base currency": "Cannot update exchange rate data for base currency", "cannot delete exchange rate data for base currency": "Cannot delete exchange rate data for base currency", + "mcp server is not enabled": "MCP Server is not enabled", "query items cannot be blank": "--", "query items too much": "--", "query items have invalid item": "Hay un elemento no válido en los elementos de consulta", diff --git a/src/locales/it.json b/src/locales/it.json index 80bdabc6..f66b2f3c 100644 --- a/src/locales/it.json +++ b/src/locales/it.json @@ -1188,6 +1188,7 @@ "user custom exchange rate data not found": "User custom exchange rate data is not found", "cannot update exchange rate data for base currency": "Cannot update exchange rate data for base currency", "cannot delete exchange rate data for base currency": "Cannot delete exchange rate data for base currency", + "mcp server is not enabled": "MCP Server is not enabled", "query items cannot be blank": "Non ci sono elementi di query", "query items too much": "Ci sono troppi elementi di query", "query items have invalid item": "C'è un elemento non valido negli elementi di query", diff --git a/src/locales/ja.json b/src/locales/ja.json index f132d5af..cc972138 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -1188,6 +1188,7 @@ "user custom exchange rate data not found": "User custom exchange rate data is not found", "cannot update exchange rate data for base currency": "Cannot update exchange rate data for base currency", "cannot delete exchange rate data for base currency": "Cannot delete exchange rate data for base currency", + "mcp server is not enabled": "MCP Server is not enabled", "query items cannot be blank": "クエリ項目がありません", "query items too much": "クエリ項目が多すぎます", "query items have invalid item": "クエリ項目に無効な項目があります", diff --git a/src/locales/pt_BR.json b/src/locales/pt_BR.json index d5f09bb1..6132e758 100644 --- a/src/locales/pt_BR.json +++ b/src/locales/pt_BR.json @@ -1188,6 +1188,7 @@ "user custom exchange rate data not found": "Dados de taxa de câmbio personalizados do usuário não encontrados", "cannot update exchange rate data for base currency": "Não é possível atualizar dados de taxa de câmbio para a moeda base", "cannot delete exchange rate data for base currency": "Não é possível excluir dados de taxa de câmbio para a moeda base", + "mcp server is not enabled": "MCP Server is not enabled", "query items cannot be blank": "Não há itens de consulta", "query items too much": "Há muitos itens de consulta", "query items have invalid item": "Há item inválido nos itens de consulta", diff --git a/src/locales/ru.json b/src/locales/ru.json index 705be009..701f5a3c 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -1188,6 +1188,7 @@ "user custom exchange rate data not found": "User custom exchange rate data is not found", "cannot update exchange rate data for base currency": "Cannot update exchange rate data for base currency", "cannot delete exchange rate data for base currency": "Cannot delete exchange rate data for base currency", + "mcp server is not enabled": "MCP Server is not enabled", "query items cannot be blank": "Нет элементов запроса", "query items too much": "Слишком много элементов запроса", "query items have invalid item": "В элементах запроса присутствует недопустимый элемент", diff --git a/src/locales/uk.json b/src/locales/uk.json index 565f772c..039ef2b7 100644 --- a/src/locales/uk.json +++ b/src/locales/uk.json @@ -1188,6 +1188,7 @@ "user custom exchange rate data not found": "User custom exchange rate data is not found", "cannot update exchange rate data for base currency": "Cannot update exchange rate data for base currency", "cannot delete exchange rate data for base currency": "Cannot delete exchange rate data for base currency", + "mcp server is not enabled": "MCP Server is not enabled", "query items cannot be blank": "Елементи запиту не можуть бути порожніми", "query items too much": "Занадто багато елементів запиту", "query items have invalid item": "Запит містить недійсний елемент", diff --git a/src/locales/vi.json b/src/locales/vi.json index 8b89e8ec..a530d629 100644 --- a/src/locales/vi.json +++ b/src/locales/vi.json @@ -1188,6 +1188,7 @@ "user custom exchange rate data not found": "User custom exchange rate data is not found", "cannot update exchange rate data for base currency": "Cannot update exchange rate data for base currency", "cannot delete exchange rate data for base currency": "Cannot delete exchange rate data for base currency", + "mcp server is not enabled": "MCP Server is not enabled", "query items cannot be blank": "Không có mục truy vấn", "query items too much": "Có quá nhiều mục truy vấn", "query items have invalid item": "Có mục không hợp lệ trong các mục truy vấn", diff --git a/src/locales/zh_Hans.json b/src/locales/zh_Hans.json index f210a0d2..2261873b 100644 --- a/src/locales/zh_Hans.json +++ b/src/locales/zh_Hans.json @@ -1188,6 +1188,7 @@ "user custom exchange rate data not found": "用户自定义汇率数据不存在", "cannot update exchange rate data for base currency": "不能更新默认货币的汇率数据", "cannot delete exchange rate data for base currency": "不能删除默认货币的汇率数据", + "mcp server is not enabled": "MCP 服务器没有启用", "query items cannot be blank": "请求项目不能为空", "query items too much": "请求项目过多", "query items have invalid item": "请求项目中有非法项目", diff --git a/src/locales/zh_Hant.json b/src/locales/zh_Hant.json index 50ba36e6..e7d1657b 100644 --- a/src/locales/zh_Hant.json +++ b/src/locales/zh_Hant.json @@ -1188,6 +1188,7 @@ "user custom exchange rate data not found": "使用者自訂匯率資料不存在", "cannot update exchange rate data for base currency": "不能更新基準貨幣的匯率資料", "cannot delete exchange rate data for base currency": "不能刪除基準貨幣的匯率資料", + "mcp server is not enabled": "MCP 伺服器未啟用", "query items cannot be blank": "查詢項目不能為空", "query items too much": "查詢項目過多", "query items have invalid item": "查詢項目中有非法項目", diff --git a/src/views/desktop/user/settings/tabs/UserSecuritySettingTab.vue b/src/views/desktop/user/settings/tabs/UserSecuritySettingTab.vue index a82086c1..885c8f11 100644 --- a/src/views/desktop/user/settings/tabs/UserSecuritySettingTab.vue +++ b/src/views/desktop/user/settings/tabs/UserSecuritySettingTab.vue @@ -69,7 +69,7 @@
{{ tt('Device & Sessions') }} {{ tt('Generate MCP token') }} + @click="generateMCPToken" v-if="isMCPServerEnabled()">{{ tt('Generate MCP token') }}