[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: '도구 호출 표시',