{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.shibbirweb/mcp-db-read-only","description":"Read-only SQL, MongoDB, Redis and Elasticsearch access, switchable mid-conversation.","title":"Databases (read-only, switchable)","repository":{"url":"https://github.com/shibbirweb/mcp-db-read-only","source":"github"},"version":"1.1.0","websiteUrl":"https://github.com/shibbirweb/mcp-db-read-only#readme","packages":[{"registryType":"npm","identifier":"@shibbirweb/mcp-db-read-only","version":"1.1.0","transport":{"type":"stdio"},"environmentVariables":[{"description":"Connection URL to open at startup, e.g. postgres://user@host:5432/db, mongodb://user@host/db, redis://host:6379/0 or sqlite:///data/app.db","format":"string","name":"DB_URL"},{"description":"Password for DB_URL, so it need not be percent-encoded inside the URL","format":"string","isSecret":true,"name":"DB_PASSWORD"},{"description":"JSON object of named connections to switch between, each a URL or {\"url\", \"password\"}","format":"string","isSecret":true,"name":"DB_PROFILES"},{"description":"Which DB_PROFILES entry to start on","format":"string","name":"DB_DEFAULT_PROFILE"},{"description":"Connection timeout in milliseconds. Defaults to 10000","format":"number","name":"DB_CONNECT_TIMEOUT_MS"},{"description":"Server-side query timeout in milliseconds. Defaults to 30000","format":"number","name":"DB_QUERY_TIMEOUT_MS"},{"description":"true logs every tool call, its statements and full output to stderr. Off by default","format":"boolean","name":"DB_LOG"},{"description":"Log every tool call to this file instead. Implies DB_LOG","format":"filepath","name":"DB_LOG_FILE"},{"description":"Save every tool call as its own JSON file in this folder, permanently. Implies logging","format":"filepath","name":"DB_LOG_DIR"},{"description":"pretty (default) or json, one object per line","format":"string","name":"DB_LOG_FORMAT"},{"description":"Serve a live log viewer in the browser on this port. Needs DB_LOG_DIR, DB_LOG or DB_LOG_FILE. No access control","format":"number","name":"DB_LOG_PORT"},{"description":"Entries the viewer keeps in memory when DB_LOG_DIR is not set. Defaults to 500","format":"number","name":"DB_LOG_HISTORY"},{"description":"Legacy MySQL-only form, kept for drop-in compatibility. Prefer DB_URL","format":"string","name":"MYSQL_HOST"},{"description":"Legacy MySQL-only form. Prefer DB_URL","format":"string","name":"MYSQL_USER"},{"description":"Legacy MySQL-only form. Prefer DB_URL with DB_PASSWORD","format":"string","isSecret":true,"name":"MYSQL_PASSWORD"},{"description":"Legacy MySQL-only form. Prefer DB_URL","format":"string","name":"MYSQL_DATABASE"}]},{"registryType":"oci","identifier":"docker.io/shibbirweb/mcp-db-read-only:1.1.0","transport":{"type":"stdio"},"environmentVariables":[{"description":"Connection URL to open at startup, e.g. postgres://user@host:5432/db, mongodb://user@host/db, redis://host:6379/0 or sqlite:///data/app.db. Use host.docker.internal to reach the host","format":"string","name":"DB_URL"},{"description":"Password for DB_URL, so it need not be percent-encoded inside the URL","format":"string","isSecret":true,"name":"DB_PASSWORD"},{"description":"JSON object of named connections to switch between, each a URL or {\"url\", \"password\"}","format":"string","isSecret":true,"name":"DB_PROFILES"},{"description":"Which DB_PROFILES entry to start on","format":"string","name":"DB_DEFAULT_PROFILE"},{"description":"Connection timeout in milliseconds. Defaults to 10000","format":"number","name":"DB_CONNECT_TIMEOUT_MS"},{"description":"Server-side query timeout in milliseconds. Defaults to 30000","format":"number","name":"DB_QUERY_TIMEOUT_MS"},{"description":"true logs every tool call, its statements and full output to stderr. Off by default","format":"boolean","name":"DB_LOG"},{"description":"Log every tool call to this file instead, on a mounted volume. Implies DB_LOG","format":"filepath","name":"DB_LOG_FILE"},{"description":"Save every tool call as its own JSON file in this folder, on a mounted volume. Implies logging","format":"filepath","name":"DB_LOG_DIR"},{"description":"pretty (default) or json, one object per line","format":"string","name":"DB_LOG_FORMAT"},{"description":"Serve a live log viewer on this port (publish it with -p). Needs DB_LOG_DIR, DB_LOG or DB_LOG_FILE. No access control","format":"number","name":"DB_LOG_PORT"},{"description":"Entries the viewer keeps in memory when DB_LOG_DIR is not set. Defaults to 500","format":"number","name":"DB_LOG_HISTORY"},{"description":"Legacy MySQL-only form, kept for drop-in compatibility. Prefer DB_URL","format":"string","name":"MYSQL_HOST"},{"description":"Legacy MySQL-only form. Prefer DB_URL","format":"string","name":"MYSQL_USER"},{"description":"Legacy MySQL-only form. Prefer DB_URL with DB_PASSWORD","format":"string","isSecret":true,"name":"MYSQL_PASSWORD"},{"description":"Legacy MySQL-only form. Prefer DB_URL","format":"string","name":"MYSQL_DATABASE"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-09-24T20:40:20.107595Z","publishedAt":"2026-09-24T20:40:20.107595Z","updatedAt":"2026-09-24T20:40:20.107595Z","isLatest":true}}}
