{"id":43958,"library":"sql-talk","title":"SQL Talk MCP Server","description":"SQL Talk is an MCP server (v0.1.43) that converts natural language to SQL with safety guards and SSH tunnel support. It integrates with Cursor editor for Japanese-language database operations. Key differentiators: read-only query enforcement, PII masking, query result limits, and audit logging. Supports MySQL 8.0+ and PostgreSQL 12+. Released under MIT License, active development with frequent updates.","status":"active","version":"0.1.43","language":"javascript","source_language":"en","source_url":null,"tags":["javascript","mcp","sql","natural-language","database","ai","model-context-protocol","ssh-tunnel","security","typescript"],"install":[{"cmd":"npm install sql-talk","lang":"bash","label":"npm"},{"cmd":"yarn add sql-talk","lang":"bash","label":"yarn"},{"cmd":"pnpm add sql-talk","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Requires Node.js >= 20.0.0","package":"node","optional":false}],"imports":[{"note":"Run via npx to always use latest version; global install may cause version conflicts.","wrong":"Installing globally with npm install -g sql-talk","symbol":"mcp server","correct":"Add to Cursor MCP config: { \"command\": \"npx\", \"args\": [\"sql-talk@latest\"] }"},{"note":"Config format is YAML; sample file is sql-talk.config.yml.sample.","wrong":"Using JSON config file or environment variables only","symbol":"configuration","correct":"Create sql-talk.config.yml in project root"},{"note":"SSH tunnel auto-starts if auto_start: true; ensure local_port is unique.","wrong":"Omitting local_port or remote_host/remote_port","symbol":"SSH tunnel","correct":"Define ssh_tunnels section in config YAML with ssh_private_key_path or ssh_password"}],"quickstart":{"code":"// sql-talk.config.yml\nengine: mysql\nconnections:\n  read_only:\n    host: localhost\n    port: 3306\n    user: user\n    password: pass\n    database: mydb\n  ddl_comment:\n    host: localhost\n    port: 3306\n    user: user\n    password: pass\n    database: mydb\nlimits:\n  default_limit: 100\n  max_limit: 1000\npii:\n  masking:\n    enabled: true\n    strategy: partial\n\n// In Cursor MCP config (~/.cursor/mcp.json):\n{\n  \"mcpServers\": {\n    \"sql-talk\": {\n      \"command\": \"npx\",\n      \"args\": [\"sql-talk@latest\"]\n    }\n  }\n}","lang":"yaml","description":"Configures SQL Talk MCP server with MySQL connection, read-only safety limits, and PII masking for use with Cursor editor."},"warnings":[{"fix":"Use 'password' (not 'pass' or 'pwd').","message":"Password field changed from 'password' to 'password' in connections - ensure correct key name.","severity":"breaking","affected_versions":">=0.1.0"},{"fix":"Update to nested format: masking: { enabled: true }.","message":"Deprecated config field 'masking_enabled' use 'masking.enabled' instead.","severity":"deprecated","affected_versions":">=0.1.20"},{"fix":"Set database host to localhost and port to the same local_port value defined in ssh_tunnels.","message":"When using SSH tunnels, local_port must match database host port in config.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Specify either 'database' (single) or 'databases' (list) under each connection.","message":"If both 'database' and 'databases' are omitted, connection fails.","severity":"gotcha","affected_versions":">=0.1.0"}],"env_vars":null,"search_vec":"'12':56 '8.0':53 'activ':61 'ai':73 'audit':49 'context':76 'convert':13 'cursor':28 'databas':34,72 'develop':62 'differenti':37 'editor':29 'enforc':42 'frequent':64 'guard':20 'integr':26 'japanes':32 'japanese-languag':31 'javascript':66 'key':36 'languag':15,33,71 'licens':60 'limit':47 'log':50 'mask':44 'mcp':3,9,67 'mit':59 'model':75 'model-context-protocol':74 'mysql':52 'natur':14,70 'natural-languag':69 'oper':35 'pii':43 'postgresql':55 'protocol':77 'queri':41,45 'read':39 'read-on':38 'releas':57 'result':46 'safeti':19 'secur':81 'server':4,10 'sql':1,5,17,68 'ssh':22,79 'ssh-tunnel':78 'support':24,51 'talk':2,6 'tunnel':23,80 'typescript':82 'updat':65 'v0.1.43':11","created_at":"2026-06-05T17:02:17.538022+00:00","updated_at":"2026-06-05T17:02:17.538022+00:00","problems":[{"fix":"Start database service or check host/port in sql-talk.config.yml.","cause":"MySQL/PostgreSQL not running or not accessible on localhost:3306","error":"Error: connect ECONNREFUSED ::1:3306"},{"fix":"Check ~/.cursor/mcp.json for correct JSON structure and restart Cursor.","cause":"Cursor MCP configuration missing or incorrect JSON syntax","error":"Error: MCP server 'sql-talk' not found in Cursor"},{"fix":"Ensure sql-talk.config.yml exists in the project root or set cwd appropriately.","cause":"Config file missing from project root or wrong working directory","error":"Error: sql-talk.config.yml not found"},{"fix":"Verify ssh_user, ssh_private_key_path or ssh_password in tunnel config.","cause":"Invalid SSH credentials or private key path","error":"Error: SSH tunnel failed: Error: All configured authentication methods failed"},{"fix":"Set pii.masking.strategy to 'partial', 'full', or 'none'.","cause":"Invalid or missing strategy in PII config","error":"Error: PII masking requires 'strategy' to be one of: partial, full, none"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":null,"github":null,"docs":null,"changelog":null,"pypi":null,"npm":"sql-talk","openapi_spec":null,"status_page":null,"smithery":null,"categories":["database"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-05","next_check":"2026-09-03","install_tag":null}}