feat(mcp): support read-only Kafka message browsing

This commit is contained in:
C.J.S authored and GitHub committed 2026-09-10 18:04:16 +08:00
1 parent a9b4470944
commit 5c95f2c00a
19 files changed
+551 -7

No files matched your search

+1
View File
@@ -7576,6 +7576,7 @@ export default withEnglishFallback({
mcpToolOpenSession: "Sorğu sessiyasını aç",
mcpToolCloseSession: "Sorğu sessiyasını bağla",
mcpToolExecuteRedisCommand: "Redis əmrini icra et",
mcpToolPeekMessages: "Kafka mesajlarını oxu",
mcpToolSendMessage: "Mesaj növbəsinə mesaj göndər",
mcpToolAddConnection: "Əlaqə əlavə et",
mcpToolDuplicateConnection: "Əlaqənin surətini yarat",
+1
View File
@@ -7573,6 +7573,7 @@ export default {
mcpToolOpenSession: "Open query session",
mcpToolCloseSession: "Close query session",
mcpToolExecuteRedisCommand: "Execute Redis command",
mcpToolPeekMessages: "Read Kafka messages",
mcpToolSendMessage: "Send message queue message",
mcpToolAddConnection: "Add connection",
mcpToolDuplicateConnection: "Duplicate connection",
+1
View File
@@ -7088,6 +7088,7 @@ export default withEnglishFallback({
mcpToolOpenSession: "Abrir sesión de consulta",
mcpToolCloseSession: "Cerrar sesión de consulta",
mcpToolExecuteRedisCommand: "Ejecutar comando Redis",
mcpToolPeekMessages: "Leer mensajes de Kafka",
mcpToolSendMessage: "Enviar mensaje de cola de mensajes",
mcpToolAddConnection: "Añadir conexión",
mcpToolDuplicateConnection: "Duplicar conexión",
+1
View File
@@ -7088,6 +7088,7 @@ export default withEnglishFallback({
mcpToolOpenSession: "Apri sessione di query",
mcpToolCloseSession: "Chiudi sessione di query",
mcpToolExecuteRedisCommand: "Esegui comando Redis",
mcpToolPeekMessages: "Leggi messaggi Kafka",
mcpToolSendMessage: "Invia messaggio in coda",
mcpToolAddConnection: "Aggiungi connessione",
mcpToolDuplicateConnection: "Duplica connessione",
+1
View File
@@ -7095,6 +7095,7 @@ export default withEnglishFallback({
mcpToolOpenSession: "クエリセッションを開く",
mcpToolCloseSession: "クエリセッションを閉じる",
mcpToolExecuteRedisCommand: "Redis コマンドを実行",
mcpToolPeekMessages: "Kafka メッセージを読み取る",
mcpToolSendMessage: "メッセージキューのメッセージを送信",
mcpToolAddConnection: "接続を追加",
mcpToolDuplicateConnection: "接続を複製",
+1
View File
@@ -6849,6 +6849,7 @@ export default withEnglishFallback({
mcpToolOpenSession: "쿼리 세션 열기",
mcpToolCloseSession: "쿼리 세션 닫기",
mcpToolExecuteRedisCommand: "Redis 명령 실행",
mcpToolPeekMessages: "Kafka 메시지 읽기",
mcpToolSendMessage: "메시지 큐 메시지 전송",
mcpToolAddConnection: "연결 추가",
mcpToolDuplicateConnection: "연결 복제",
+1
View File
@@ -7090,6 +7090,7 @@ export default withEnglishFallback({
mcpToolOpenSession: "Abrir sessão de consulta",
mcpToolCloseSession: "Fechar sessão de consulta",
mcpToolExecuteRedisCommand: "Executar comando Redis",
mcpToolPeekMessages: "Ler mensagens Kafka",
mcpToolSendMessage: "Enviar mensagem da fila",
mcpToolAddConnection: "Adicionar conexão",
mcpToolDuplicateConnection: "Duplicar conexão",
+1
View File
@@ -7456,6 +7456,7 @@ export default withEnglishFallback({
mcpToolOpenSession: "Sorgu oturumu aç",
mcpToolCloseSession: "Sorgu oturumunu kapat",
mcpToolExecuteRedisCommand: "Redis komutunu çalıştır",
mcpToolPeekMessages: "Kafka mesajlarını oku",
mcpToolSendMessage: "Mesaj kuyruğu mesajı gönder",
mcpToolAddConnection: "Bağlantı ekle",
mcpToolDuplicateConnection: "Bağlantıyı çoğalt",
+1
View File
@@ -7558,6 +7558,7 @@ export default withEnglishFallback({
mcpToolOpenSession: "打开查询会话",
mcpToolCloseSession: "关闭查询会话",
mcpToolExecuteRedisCommand: "执行 Redis 命令",
mcpToolPeekMessages: "读取 Kafka 消息",
mcpToolSendMessage: "发送消息队列消息",
mcpToolAddConnection: "新增连接",
mcpToolDuplicateConnection: "复制连接",
+1
View File
@@ -6449,6 +6449,7 @@ export default withEnglishFallback({
mcpToolOpenSession: "開啟查詢工作階段",
mcpToolCloseSession: "關閉查詢工作階段",
mcpToolExecuteRedisCommand: "執行 Redis 命令",
mcpToolPeekMessages: "讀取 Kafka 訊息",
mcpToolSendMessage: "傳送訊息佇列訊息",
mcpToolAddConnection: "新增連線",
mcpToolDuplicateConnection: "複製連線",
@@ -97,6 +97,13 @@ describe("MCP tool permission selection", () => {
expect(next).not.toContain("dbx_send_message");
});
it("keeps Kafka reading independent from message sending", () => {
const next = toggleMcpAllowedToolName(null, "dbx_send_message", false);
expect(next).toContain("dbx_peek_messages");
expect(toggleMcpAllowedToolName(next, "dbx_peek_messages", false)).not.toContain("dbx_peek_messages");
expect(toggleMcpAllowedToolName([], "dbx_peek_messages", true)).toEqual(["dbx_peek_messages"]);
});
it("lets batch execution be enabled and disabled independently", () => {
expect(toggleMcpAllowedToolName(["dbx_execute_query"], "dbx_execute_batch", true)).toEqual(["dbx_execute_query", "dbx_execute_batch"]);
expect(toggleMcpAllowedToolName(["dbx_execute_query", "dbx_execute_batch"], "dbx_execute_batch", false)).toEqual(["dbx_execute_query"]);
@@ -34,6 +34,7 @@ export const MCP_TOOL_OPTIONS = [
{ name: "dbx_open_session", labelKey: "settings.mcpToolOpenSession" },
{ name: "dbx_close_session", labelKey: "settings.mcpToolCloseSession" },
{ name: "dbx_execute_redis_command", labelKey: "settings.mcpToolExecuteRedisCommand" },
{ name: "dbx_peek_messages", labelKey: "settings.mcpToolPeekMessages" },
{ name: "dbx_send_message", labelKey: "settings.mcpToolSendMessage" },
{ name: "dbx_add_connection", labelKey: "settings.mcpToolAddConnection" },
{ name: "dbx_duplicate_connection", labelKey: "settings.mcpToolDuplicateConnection" },