[codex] add MCP tools visibility management (#1170)
* feat(mcp): add tools visibility management ## Features - Tools visibility modal with 3 modes: All, Include, Exclude - 'Manage Tools' button on McpServerCard (enabled only when connected) - 'Fetch Tools List' button to refresh available tools (raw mode) - Responsive design for mobile (480px), tablet (768px), desktop (1280px) - i18n translations for 9 languages (zh/en/zh-TW/ja/ko/de/es/fr/pt) ## Technical Details - Add raw parameter to fetchMcpTools API for unfiltered tools - Pass raw parameter through controller → bridgeMcpAction → client - Backend _mcp_tools_list supports raw_mode to skip include/exclude filter - 28 MCP unit tests pass (23 controller + 5 bridge action) ## Files Changed - McpManagerView.vue: Tools visibility modal with mode selector - McpServerCard.vue: Add manage tools button - mcp.ts (client): Add raw parameter to fetchMcpTools - mcp.ts (controller): Pass raw parameter to bridge - mcp.ts (services): Pass raw parameter to client.mcpTools - client.ts: Add raw parameter to mcpTools - hermes_bridge.py: Support raw_mode in _mcp_tools_list - 9 locale files: Add 14 translation keys each - mcp-controller.test.ts: Add 3 new test cases - bridge-mcp-action.test.ts: New test file for parameter passing * Delete projects directory chore: remove accidentally committed projects/ directory * fix MCP tools visibility edge cases * remove MCP docs screenshots --------- Co-authored-by: Crafter-feng <succeed_happu@163.com> Co-authored-by: Crafter-feng <37255449+Crafter-feng@users.noreply.github.com>
This commit is contained in:
@@ -157,6 +157,24 @@ export default {
|
||||
invalidConfig: 'Ungültige Konfiguration',
|
||||
invalidServerConfig: 'Ungültige Serverkonfiguration',
|
||||
missingCommandOrUrl: 'Muss command oder url enthalten',
|
||||
manageTools: 'Tools verwalten',
|
||||
toolsVisibilityTitle: 'Tools-Sichtbarkeit verwalten',
|
||||
fetchTools: 'Tools-Liste abrufen',
|
||||
fetchToolsFailed: 'Tools-Liste konnte nicht abgerufen werden',
|
||||
toolsMode: 'Modus:',
|
||||
toolsModeAll: 'Alle',
|
||||
toolsModeInclude: 'Einschließen',
|
||||
toolsModeExclude: 'Ausschließen',
|
||||
toolsListHeader: 'Tool-Name',
|
||||
toolsEmpty: 'Keine Tools verfügbar, bitte zuerst die Tools-Liste abrufen',
|
||||
toolsSummaryAll: '{count} Tools insgesamt, alle aktiviert',
|
||||
toolsSummaryInclude: '{total} Tools insgesamt, {count} ausgewählt',
|
||||
toolsSummaryExclude: '{total} Tools insgesamt, {count} ausgeschlossen',
|
||||
toolsVisibilitySaved: 'Tools-Sichtbarkeit gespeichert',
|
||||
toolsSelectAll: 'Alle auswählen',
|
||||
toolsClearSelection: 'Auswahl löschen',
|
||||
toolsExcludeAll: 'Alle ausschließen',
|
||||
toolsClearExcluded: 'Ausschlüsse löschen',
|
||||
},
|
||||
|
||||
// Sidebar
|
||||
|
||||
@@ -157,6 +157,24 @@ export default {
|
||||
invalidConfig: 'Invalid configuration',
|
||||
invalidServerConfig: 'Invalid server configuration',
|
||||
missingCommandOrUrl: 'Must have command or url',
|
||||
manageTools: 'Manage Tools',
|
||||
toolsVisibilityTitle: 'Tools Visibility Management',
|
||||
fetchTools: 'Fetch Tools List',
|
||||
fetchToolsFailed: 'Failed to fetch tools list',
|
||||
toolsMode: 'Mode:',
|
||||
toolsModeAll: 'All',
|
||||
toolsModeInclude: 'Include',
|
||||
toolsModeExclude: 'Exclude',
|
||||
toolsListHeader: 'Tool Name',
|
||||
toolsEmpty: 'No tools available, please fetch tools list first',
|
||||
toolsSummaryAll: '{count} tools total, all enabled',
|
||||
toolsSummaryInclude: '{total} tools total, {count} selected',
|
||||
toolsSummaryExclude: '{total} tools total, {count} excluded',
|
||||
toolsVisibilitySaved: 'Tools visibility saved',
|
||||
toolsSelectAll: 'Select all',
|
||||
toolsClearSelection: 'Clear selection',
|
||||
toolsExcludeAll: 'Exclude all',
|
||||
toolsClearExcluded: 'Clear excluded',
|
||||
},
|
||||
|
||||
// Sidebar
|
||||
|
||||
@@ -157,6 +157,24 @@ export default {
|
||||
invalidConfig: 'Configuración no válida',
|
||||
invalidServerConfig: 'Configuración del servidor no válida',
|
||||
missingCommandOrUrl: 'Debe incluir command o url',
|
||||
manageTools: 'Gestionar herramientas',
|
||||
toolsVisibilityTitle: 'Gestión de visibilidad de herramientas',
|
||||
fetchTools: 'Obtener lista de herramientas',
|
||||
fetchToolsFailed: 'Error al obtener la lista de herramientas',
|
||||
toolsMode: 'Modo:',
|
||||
toolsModeAll: 'Todas',
|
||||
toolsModeInclude: 'Incluir',
|
||||
toolsModeExclude: 'Excluir',
|
||||
toolsListHeader: 'Nombre de herramienta',
|
||||
toolsEmpty: 'No hay herramientas disponibles, primero obtenga la lista de herramientas',
|
||||
toolsSummaryAll: '{count} herramientas en total, todas habilitadas',
|
||||
toolsSummaryInclude: '{total} herramientas en total, {count} seleccionadas',
|
||||
toolsSummaryExclude: '{total} herramientas en total, {count} excluidas',
|
||||
toolsVisibilitySaved: 'Visibilidad de herramientas guardada',
|
||||
toolsSelectAll: 'Seleccionar todo',
|
||||
toolsClearSelection: 'Borrar selección',
|
||||
toolsExcludeAll: 'Excluir todo',
|
||||
toolsClearExcluded: 'Borrar exclusiones',
|
||||
},
|
||||
|
||||
// Sidebar
|
||||
|
||||
@@ -157,6 +157,24 @@ export default {
|
||||
invalidConfig: 'Configuration invalide',
|
||||
invalidServerConfig: 'Configuration du serveur invalide',
|
||||
missingCommandOrUrl: 'Doit contenir command ou url',
|
||||
manageTools: 'Gérer les outils',
|
||||
toolsVisibilityTitle: 'Gestion de la visibilité des outils',
|
||||
fetchTools: 'Récupérer la liste des outils',
|
||||
fetchToolsFailed: 'Échec de la récupération de la liste des outils',
|
||||
toolsMode: 'Mode :',
|
||||
toolsModeAll: 'Tous',
|
||||
toolsModeInclude: 'Inclure',
|
||||
toolsModeExclude: 'Exclure',
|
||||
toolsListHeader: 'Nom de l\'outil',
|
||||
toolsEmpty: 'Aucun outil disponible, veuillez d\'abord récupérer la liste des outils',
|
||||
toolsSummaryAll: '{count} outils au total, tous activés',
|
||||
toolsSummaryInclude: '{total} outils au total, {count} sélectionnés',
|
||||
toolsSummaryExclude: '{total} outils au total, {count} exclus',
|
||||
toolsVisibilitySaved: 'Visibilité des outils enregistrée',
|
||||
toolsSelectAll: 'Tout sélectionner',
|
||||
toolsClearSelection: 'Effacer la sélection',
|
||||
toolsExcludeAll: 'Tout exclure',
|
||||
toolsClearExcluded: 'Effacer les exclusions',
|
||||
},
|
||||
|
||||
// Sidebar
|
||||
|
||||
@@ -158,6 +158,24 @@ export default {
|
||||
invalidConfig: '設定形式が無効です',
|
||||
invalidServerConfig: 'サーバー設定が無効です',
|
||||
missingCommandOrUrl: 'command または url が必要です',
|
||||
manageTools: 'ツール管理',
|
||||
toolsVisibilityTitle: 'ツール可視性管理',
|
||||
fetchTools: 'ツールリスト取得',
|
||||
fetchToolsFailed: 'ツールリストの取得に失敗しました',
|
||||
toolsMode: 'モード:',
|
||||
toolsModeAll: 'すべて',
|
||||
toolsModeInclude: '含める',
|
||||
toolsModeExclude: '除外',
|
||||
toolsListHeader: 'ツール名',
|
||||
toolsEmpty: 'ツールがありません。まずツールリストを取得してください',
|
||||
toolsSummaryAll: '合計 {count} ツール、すべて有効',
|
||||
toolsSummaryInclude: '合計 {total} ツール、{count} 選択済み',
|
||||
toolsSummaryExclude: '合計 {total} ツール、{count} 除外済み',
|
||||
toolsVisibilitySaved: 'ツール可視性が保存されました',
|
||||
toolsSelectAll: 'すべて選択',
|
||||
toolsClearSelection: '選択をクリア',
|
||||
toolsExcludeAll: 'すべて除外',
|
||||
toolsClearExcluded: '除外をクリア',
|
||||
},
|
||||
|
||||
sidebar: {
|
||||
|
||||
@@ -158,6 +158,24 @@ export default {
|
||||
invalidConfig: '올바르지 않은 설정',
|
||||
invalidServerConfig: '서버 설정이 올바르지 않습니다',
|
||||
missingCommandOrUrl: 'command 또는 url이 필요합니다',
|
||||
manageTools: '도구 관리',
|
||||
toolsVisibilityTitle: '도구 가시성 관리',
|
||||
fetchTools: '도구 목록 가져오기',
|
||||
fetchToolsFailed: '도구 목록을 가져오지 못했습니다',
|
||||
toolsMode: '모드:',
|
||||
toolsModeAll: '전체',
|
||||
toolsModeInclude: '포함',
|
||||
toolsModeExclude: '제외',
|
||||
toolsListHeader: '도구 이름',
|
||||
toolsEmpty: '도구가 없습니다. 먼저 도구 목록을 가져오세요',
|
||||
toolsSummaryAll: '총 {count}개 도구, 모두 활성화',
|
||||
toolsSummaryInclude: '총 {total}개 도구, {count}개 선택됨',
|
||||
toolsSummaryExclude: '총 {total}개 도구, {count}개 제외됨',
|
||||
toolsVisibilitySaved: '도구 가시성이 저장되었습니다',
|
||||
toolsSelectAll: '모두 선택',
|
||||
toolsClearSelection: '선택 지우기',
|
||||
toolsExcludeAll: '모두 제외',
|
||||
toolsClearExcluded: '제외 항목 지우기',
|
||||
},
|
||||
|
||||
sidebar: {
|
||||
|
||||
@@ -157,6 +157,24 @@ export default {
|
||||
invalidConfig: 'Configuração inválida',
|
||||
invalidServerConfig: 'Configuração do servidor inválida',
|
||||
missingCommandOrUrl: 'Deve conter command ou url',
|
||||
manageTools: 'Gerenciar ferramentas',
|
||||
toolsVisibilityTitle: 'Gerenciamento de visibilidade de ferramentas',
|
||||
fetchTools: 'Obter lista de ferramentas',
|
||||
fetchToolsFailed: 'Falha ao obter lista de ferramentas',
|
||||
toolsMode: 'Modo:',
|
||||
toolsModeAll: 'Todas',
|
||||
toolsModeInclude: 'Incluir',
|
||||
toolsModeExclude: 'Excluir',
|
||||
toolsListHeader: 'Nome da ferramenta',
|
||||
toolsEmpty: 'Nenhuma ferramenta disponível, obtenha a lista de ferramentas primeiro',
|
||||
toolsSummaryAll: '{count} ferramentas no total, todas habilitadas',
|
||||
toolsSummaryInclude: '{total} ferramentas no total, {count} selecionadas',
|
||||
toolsSummaryExclude: '{total} ferramentas no total, {count} excluídas',
|
||||
toolsVisibilitySaved: 'Visibilidade das ferramentas salva',
|
||||
toolsSelectAll: 'Selecionar tudo',
|
||||
toolsClearSelection: 'Limpar seleção',
|
||||
toolsExcludeAll: 'Excluir tudo',
|
||||
toolsClearExcluded: 'Limpar exclusões',
|
||||
},
|
||||
|
||||
// Sidebar
|
||||
|
||||
@@ -158,6 +158,24 @@ export default {
|
||||
invalidConfig: '配置格式錯誤',
|
||||
invalidServerConfig: '伺服器配置無效',
|
||||
missingCommandOrUrl: '必須包含 command 或 url',
|
||||
manageTools: '管理工具',
|
||||
toolsVisibilityTitle: '工具可見性管理',
|
||||
fetchTools: '獲取工具列表',
|
||||
fetchToolsFailed: '獲取工具列表失敗',
|
||||
toolsMode: '模式:',
|
||||
toolsModeAll: '全部',
|
||||
toolsModeInclude: '包含',
|
||||
toolsModeExclude: '排除',
|
||||
toolsListHeader: '工具名稱',
|
||||
toolsEmpty: '暫無工具,請先獲取工具列表',
|
||||
toolsSummaryAll: '共 {count} 個工具,全部啟用',
|
||||
toolsSummaryInclude: '共 {total} 個工具,已選 {count} 個',
|
||||
toolsSummaryExclude: '共 {total} 個工具,已排除 {count} 個',
|
||||
toolsVisibilitySaved: '工具可見性已儲存',
|
||||
toolsSelectAll: '全選',
|
||||
toolsClearSelection: '取消全選',
|
||||
toolsExcludeAll: '全部排除',
|
||||
toolsClearExcluded: '清空排除',
|
||||
},
|
||||
|
||||
sidebar: {
|
||||
|
||||
@@ -158,6 +158,24 @@ export default {
|
||||
invalidConfig: '配置格式错误',
|
||||
invalidServerConfig: '服务器配置无效',
|
||||
missingCommandOrUrl: '必须包含 command 或 url',
|
||||
manageTools: '管理工具',
|
||||
toolsVisibilityTitle: '工具可见性管理',
|
||||
fetchTools: '获取工具列表',
|
||||
fetchToolsFailed: '获取工具列表失败',
|
||||
toolsMode: '模式:',
|
||||
toolsModeAll: '全部',
|
||||
toolsModeInclude: '包含',
|
||||
toolsModeExclude: '排除',
|
||||
toolsListHeader: '工具名称',
|
||||
toolsEmpty: '暂无工具,请先获取工具列表',
|
||||
toolsSummaryAll: '共 {count} 个工具,全部启用',
|
||||
toolsSummaryInclude: '共 {total} 个工具,已选 {count} 个',
|
||||
toolsSummaryExclude: '共 {total} 个工具,已排除 {count} 个',
|
||||
toolsVisibilitySaved: '工具可见性已保存',
|
||||
toolsSelectAll: '全选',
|
||||
toolsClearSelection: '取消全选',
|
||||
toolsExcludeAll: '全部排除',
|
||||
toolsClearExcluded: '清空排除',
|
||||
},
|
||||
|
||||
sidebar: {
|
||||
|
||||
Reference in New Issue
Block a user