github Java re-analysis due unconfirmed MCP

OtterMind/Chat2DB

github

Chat2DB is a free, cross-platform, local-first database client and SQL workspace for developers, DBAs, analysts, and data teams. Connect to 40+ databases, manage data, edit and run SQL, and use your own AI model to generate, explain, and optimize queries. Available on desktop, web, Docker, and CLI, with MCP support.

maintainer
OtterMind
license
NOASSERTION
first seen
2026-08-14
last seen
2026-08-14
releases · 30d
4
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 0 tools
transport counts 0 tools · 0 res · 0 prompts permission surface via code analysis

No tools enumerated yet for this server.

skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit f8b8f98 · analyzer v32 · 1h ago

skills & prompt files 1

danger signals3

code evidence vv5.3.3 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 3569

filesystem 13

  • fs (weak) OtterMind-Chat2DB-f8b8f98/chat2db-community-client/scripts/modify-package-name.js :1 const fs = require('fs');
  • fs (weak) OtterMind-Chat2DB-f8b8f98/chat2db-community-client/scripts/validate-i18n.cjs :4 const fs = require('node:fs');
  • fs (weak) OtterMind-Chat2DB-f8b8f98/chat2db-community-client/scripts/verify-production-bundles.cjs :1 const fs = require('fs');
  • fs (weak) OtterMind-Chat2DB-f8b8f98/chat2db-community-client/src/blocks/RedisAllData/redisExplorer.test.ts :2 import { readFileSync } from 'node:fs';
  • fs (weak) OtterMind-Chat2DB-f8b8f98/chat2db-community-client/src/blocks/SearchResult/components/ResultSet/resultSetUi.test.ts :2 import { readFileSync } from 'node:fs';
  • fs (weak) OtterMind-Chat2DB-f8b8f98/chat2db-community-client/src/blocks/Setting/settingsLayout.test.ts :2 import { readFileSync } from 'node:fs';
  • fs (weak) OtterMind-Chat2DB-f8b8f98/chat2db-community-client/src/components/BaseTable/treeInteraction.test.ts :2 import { readFileSync } from 'node:fs';
  • fs (weak) OtterMind-Chat2DB-f8b8f98/chat2db-community-client/src/pages/main/navigationItems.test.ts :2 import { readFileSync } from 'node:fs';
  • fs (weak) OtterMind-Chat2DB-f8b8f98/chat2db-community-client/src/utils/editorCloseGuard.test.ts :2 import { readFileSync } from 'node:fs';
  • fs OtterMind-Chat2DB-f8b8f98/script/github/issue-claim.js :3 const fs = require('node:fs');
  • fs (weak) OtterMind-Chat2DB-f8b8f98/script/github/issue-claim.test.js :4 const fs = require('node:fs');
  • fs OtterMind-Chat2DB-f8b8f98/script/github/sync-community-project.js :3 const fs = require('node:fs');
  • fs (weak) OtterMind-Chat2DB-f8b8f98/script/github/sync-community-project.test.js :2 const fs = require('node:fs');

shell / exec 1

  • shell OtterMind-Chat2DB-f8b8f98/chat2db-community-client/dist.zip!/dist/npm.shikiji.async.js :2666 prepare|error(msg)?|exec(ute)?|field_(scale|num|name|type|precision|len)|foreignkeys|free_result|

network 13

  • net OtterMind-Chat2DB-f8b8f98/chat2db-community-client/dist.zip!/dist/6931.async.js :1 re(this,null,function*(){const k=yield fetch(e,i);if(k.status===404)throw new Error(`Resource "${k.url}" not found`);const G=yield k.blob();return new Promise((V,wt)=>{const St=new FileReader;St.oner
  • net OtterMind-Chat2DB-f8b8f98/chat2db-community-client/dist.zip!/dist/json.worker.js :89 ch!="undefined"&&(pr=function(r){return fetch(r).then(l=>l.text())});var $i=class{constructor(r,l){this._ctx=r,this._languageSettings=l.languageSettings,this._languageId=l.languageI
  • net OtterMind-Chat2DB-f8b8f98/chat2db-community-client/dist.zip!/dist/npm._at_antv.async.js :17 void 0,void 0,function*(){const u=yield fetch(n);if(r==="csv"){const f=yield u.text();return(0,Ng.Z)(e).parse(f,o?jg.Z:ee.yR)}else if(r==="json")return yield u.json();throw new Error(`
  • net OtterMind-Chat2DB-f8b8f98/chat2db-community-client/dist.zip!/dist/npm._at_visactor.async.js :86 eturn document.body}loadJson(i){const t=fetch(i).then(e=>e.json());return t.then(e=>({data:e,state:"success"})).catch(()=>({data:null,state:"fail"})),t}loadArrayBuffer(i){return fetch(i).then(t=>t.arr
  • net OtterMind-Chat2DB-f8b8f98/chat2db-community-client/dist.zip!/dist/npm.ali-oss.async.js :67 ontroller.abort()},v.requestTimeout))}t.fetch(c._opts.url,{method:c._opts.method,headers:S,body:T||void 0,mode:"cors",credentials:v.withCredentials?"include":"same-origin",signal:b}).then(function(k){
  • net OtterMind-Chat2DB-f8b8f98/chat2db-community-client/dist.zip!/dist/npm.shikiji.async.js :2596 fetch(_(object|fields|field(_direct)?|assoc|all|array|row))?|rpl_(parse_enabled|probe|query_type)|
  • net OtterMind-Chat2DB-f8b8f98/chat2db-community-client/dist.zip!/dist/umi.js :18 rPath||q),"__serverLoader?").concat(ve);fetch(pe,{credentials:"include"}).then(function(me){return me.json()}).then(J).catch(console.error)}function Oi(){var $=arguments.length>0&&arguments[0]!==void
  • net (weak) OtterMind-Chat2DB-f8b8f98/chat2db-community-client/scripts/bind-dev-server-loopback.cjs :1 const http = require('node:http');
  • net OtterMind-Chat2DB-f8b8f98/chat2db-community-client/src/blocks/AI/components/AIButton/APNGPlayer/index.tsx :20 const response = await fetch(apngUrl);
  • net OtterMind-Chat2DB-f8b8f98/chat2db-community-client/src/utils/file.ts :23 fetch(url, {
  • net OtterMind-Chat2DB-f8b8f98/chat2db-community-client/src/utils/network.ts :5 const response = await fetch(`${appConfig.gatewayUrl}/api/version/get_latest_a`, {
  • net OtterMind-Chat2DB-f8b8f98/script/github/issue-claim.js :303 const response = await fetch(requestUrl, {
  • net OtterMind-Chat2DB-f8b8f98/script/github/sync-community-project.js :51 const response = await fetch(`${this.apiUrl}${endpoint}`, {

secrets 2

  • secrets OtterMind-Chat2DB-f8b8f98/script/github/issue-claim.js :707 token: process.env.GITHUB_TOKEN,
  • secrets OtterMind-Chat2DB-f8b8f98/script/github/sync-community-project.js :246 token: process.env.GH_PROJECT_TOKEN,

install hooks 1

  • postinstall OtterMind-Chat2DB-f8b8f98/chat2db-community-client/package.json :27 umi setup

declared dependencies 97

  • @chat2db/ui@^1.45.3
  • @dnd-kit/core@^6.1.0
  • @dnd-kit/modifiers@^6.0.1
  • @dnd-kit/sortable@^8.0.0
  • @radix-ui/react-dropdown-menu@^2.0.6
  • @radix-ui/react-popover@^1.1.1
  • @visactor/vtable@^1.14.1
  • @visactor/vtable-editors@^1.10.1
  • @visactor/vtable-search@^1.13.0
  • @xyflow/react@^12.4.2
  • @xterm/addon-fit@^0.11.0
  • @xterm/addon-serialize@^0.14.0
  • @xterm/xterm@^6.0.0
  • ahooks@^3.7.8
  • ali-oss@^6.20.0
  • ali-react-table@^2.6.1
  • antd@~5.24.1
  • antd-style@^3.6.1
  • apng-js@^1.1.5
  • babel-plugin-antd-style@^1.0.4
  • big.js@^5.2.2
  • copy-to-clipboard@^3.3.3
  • dayjs@^1.11.11
  • dexie@^4.0.11
  • echarts@^5.5.1
  • echarts-wordcloud@^2.1.0
  • elkjs@^0.9.3
  • event-source-polyfill@^1.0.31
  • html-to-image@1.11.11
  • html2canvas@^1.4.1
  • idb-keyval@^6.2.1
  • is-online@^11.0.0
  • katex@^0.16.21
  • localforage@^1.10.0
  • lodash@^4.17.21
  • lottie-react@^2.4.0
  • lucide-react@^1.29.0
  • mermaid@^11.12.0
  • monaco-editor@^0.52.0
  • node-schedule@^2.1.1
  • pako@^2.1.0
  • qrcode@^1.5.3
  • query-string@^9.0.0
  • react-grid-layout@^1.4.4
  • react-infinite-scroll-component@^6.1.0
  • react-mentions@^4.4.10
  • react-resizable@^3.0.5
  • react-markdown@^9.0.3
  • react-sortablejs@^6.1.4
  • react-split-pane@^0.1.92
  • rehype-katex@^7.0.1
  • remark-gfm@^4.0.1
  • remark-math@^6.0.0
  • umi@^4.0.87
  • umi-request@^1.4.0
  • url-parse@^1.5.10
  • utility-types@^3.11.0
  • uuid@^9.0.0
  • zod@^3.24.2
  • zustand@^4.4.4
  • @types/event-source-polyfill@^1.0.1
  • @types/lodash@^4.14.195
  • @types/react@^18.0.33
  • @types/react-dom@^18.2.23
  • @types/react-mentions@^4.4.1
  • @types/uuid@^9.0.1
  • @typescript-eslint/eslint-plugin@^6.7.2
  • @typescript-eslint/parser@^6.7.2
  • @umijs/plugins@^4.0.55
  • concurrently@^8.1.0
  • cross-env@^7.0.3
  • eslint@^8.49.0
  • eslint-config-airbnb-base@^15.0.0
  • eslint-config-prettier@^9.0.0
  • eslint-import-resolver-webpack@^0.13.7
  • eslint-plugin-babel@^5.3.1
  • eslint-plugin-import@^2.28.1
  • eslint-plugin-prettier@^5.0.0
  • eslint-plugin-react@^7.33.2
  • eslint-plugin-react-hooks@^4.6.0
  • eslint-plugin-unused-imports@3.2.0
  • monaco-editor-webpack-plugin@^7.1.0
  • postcss-less@6.0.0
  • prettier@^2
  • prettier-plugin-organize-imports@^2
  • prettier-plugin-packagejson@^2
  • stylelint@16.26.1
  • stylelint-config-standard@38.0.0
  • stylelint-config-standard-less@3.0.1
  • tailwindcss@^3
  • typescript@^5.4.3
  • react@^16.8.0
  • react-dom@^16.8.0
  • org.projectlombok:lombok@*
  • org.projectlombok:lombok-mapstruct-binding@*
  • org.mongodb:bson@*
  • org.jetbrains:annotations@*

clipboard 1

  • navigator.clipboard OtterMind-Chat2DB-f8b8f98/chat2db-community-client/src/utils/clipboard.ts :9 return navigator.clipboard.readText();

perm:untrusted 5

  • untrusted OtterMind-Chat2DB-f8b8f98/chat2db-community-client/dist.zip!/dist/6931.async.js :1 if(i!=null)return i;const k=yield(yield fetch(e)).text();return i={url:e,cssText:k},Ct[e]=i,i})}function Gt(e,i){return re(this,null,function*(){let R=e.cssText;const k=/url\(["']?([^"')]+)["']?\)/g,V
  • untrusted OtterMind-Chat2DB-f8b8f98/chat2db-community-client/dist.zip!/dist/json.worker.js :89 ch!="undefined"&&(pr=function(r){return fetch(r).then(l=>l.text())});var $i=class{constructor(r,l){this._ctx=r,this._languageSettings=l.languageSettings,this._languageId=l.languageI
  • untrusted OtterMind-Chat2DB-f8b8f98/chat2db-community-client/dist.zip!/dist/npm._at_visactor.async.js :86 eturn document.body}loadJson(i){const t=fetch(i).then(e=>e.json());return t.then(e=>({data:e,state:"success"})).catch(()=>({data:null,state:"fail"})),t}loadArrayBuffer(i){return fetch(i).then(t=>t.arr
  • untrusted OtterMind-Chat2DB-f8b8f98/chat2db-community-client/dist.zip!/dist/npm.ali-oss.async.js :67 ontroller.abort()},v.requestTimeout))}t.fetch(c._opts.url,{method:c._opts.method,headers:S,body:T||void 0,mode:"cors",credentials:v.withCredentials?"include":"same-origin",signal:b}).then(function(k){
  • untrusted OtterMind-Chat2DB-f8b8f98/chat2db-community-client/dist.zip!/dist/umi.js :18 rPath||q),"__serverLoader?").concat(ve);fetch(pe,{credentials:"include"}).then(function(me){return me.json()}).then(J).catch(console.error)}function Oi(){var $=arguments.length>0&&arguments[0]!==void