[codex] fix MCP management lifecycle (#1144)

* feat(mcp): add MCP server management UI

- Server CRUD: add/edit/remove with YAML/JSON Monaco editor
- raw_config passthrough: zero field loss on edit/toggle
- tool_details embedding: single-request card data (1+N → 1)
- Auto-retry exponential backoff (2s→32s, max 5 retries)
- Route safety guards (hasRoute) for dynamic sidebar
- i18n: 9 languages (de/en/es/fr/ja/ko/pt/zh/zh-TW)
- 19 unit tests + 8 UX browser tests
- 35 files, +2933 lines

* fix mcp management lifecycle

---------

Co-authored-by: Crafter-feng <succeed_happu@163.com>
This commit is contained in:
ekko
2026-05-30 11:06:08 +08:00
committed by GitHub
parent 675ddb8282
commit b015e70b9d
37 changed files with 2717 additions and 7 deletions
+56
View File
@@ -106,6 +106,60 @@ export default {
},
// サイドバー
// MCP 管理
mcp: {
title: 'MCP サーバー',
loadFailed: 'MCP サーバーの読み込みに失敗しました',
reloadAll: 'すべて再読み込み',
refresh: '更新',
total: '合計',
connected: '接続済み',
disconnected: '未接続',
tools: 'ツール',
tool: 'ツール',
searchPlaceholder: 'サーバーを検索...',
addServer: '+ サーバーを追加',
zeroTools: '0 個のツール',
loading: '読み込み中...',
empty: 'MCP サーバーが設定されていません',
reloaded: '{server} を再読み込みしました',
reloadedAll: 'すべての MCP サーバーを再読み込みしました',
reloadFailed: '再読み込みに失敗しました',
serverAdded: 'サーバー "{name}" を追加しました',
addFailed: 'サーバーの追加に失敗しました',
serverUpdated: 'サーバー "{name}" を更新しました',
updateFailed: 'サーバーの更新に失敗しました',
saveFailed: '保存に失敗しました',
serverRemoved: '"{name}" を削除しました',
enabled: "有効化: {name}",
disabled: "無効化: {name}",
connectedStatus: '接続済み',
disconnectedStatus: '未接続',
disabledStatus: '無効',
toolList: 'ツール一覧',
count: ' ',
more: '件',
removeFailed: 'サーバーの削除に失敗しました',
testOk: 'テスト成功 — {count} 個のツールが利用可能',
testEmpty: 'テスト結果にツールがありません',
testFailed: 'テストに失敗しました',
edit: '編集',
test: 'テスト',
reload: '再読み込み',
remove: '削除',
confirmRemove: 'サーバー "{name}" を削除しますか?',
cancel: 'キャンセル',
add: '追加',
save: '保存',
addTitle: 'MCP サーバーを追加',
editTitle: 'MCP サーバーを編集',
invalidJson: 'JSON形式エラー',
invalidYaml: 'YAML 形式が無効です',
invalidConfig: '設定形式が無効です',
invalidServerConfig: 'サーバー設定が無効です',
missingCommandOrUrl: 'command または url が必要です',
},
sidebar: {
chat: 'チャット',
search: '検索',
@@ -115,6 +169,7 @@ export default {
models: 'モデル',
profiles: 'プロファイル',
plugins: 'プラグイン',
mcp: 'MCP',
skills: 'スキル',
memory: 'メモリ',
logs: 'ログ',
@@ -235,6 +290,7 @@ export default {
compress: 'アイドル時にコンテキスト圧縮を実行',
steer: '実行中の Bridge に誘導テキストを送信',
destroy: 'このセッションの Bridge Agent を解放',
reloadMcp: 'MCP サーバーを再読み込み',
},
attachFiles: 'ファイルを添付',
showToolCalls: 'ツール呼び出しを表示',