mcp-db-read-only MCP
A read-only Model Context Protocol server that allows AI assistants to query multiple database engines including SQL, NoSQL, and search platforms. It enforces read-only access at both the application and database levels, supports runtime switching between different database connections, and provides optional live query logging.
Package and access
Local package with source-attributed installation metadata. Koskamo does not execute packages during review.
What you can do with it
- Ask plain language questions about database contents
- Switch between different database engines mid-conversation
- Monitor live query logs in a browser interface
Source and maintenance
- Last repository push
- Latest release
- v1.1.0
- Maintenance checked
Packages and installation
Source-provided package data. Koskamo has not executed or live-probed this package.
docker.io/shibbirweb/mcp-db-read-only:1.1.0
{
"transport": "stdio",
"identifier": "docker.io/shibbirweb/mcp-db-read-only:1.1.0",
"registryType": "oci",
"environmentVariables": [
{
"name": "DB_URL",
"format": "string",
"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"
},
{
"name": "DB_PASSWORD",
"format": "string",
"description": "Password for DB_URL, so it need not be percent-encoded inside the URL"
},
{
"name": "DB_PROFILES",
"format": "string",
"description": "JSON object of named connections to switch between, each a URL or {\"url\", \"password\"}"
},
{
"name": "DB_DEFAULT_PROFILE",
"format": "string",
"description": "Which DB_PROFILES entry to start on"
},
{
"name": "DB_CONNECT_TIMEOUT_MS",
"format": "number",
"description": "Connection timeout in milliseconds. Defaults to 10000"
},
{
"name": "DB_QUERY_TIMEOUT_MS",
"format": "number",
"description": "Server-side query timeout in milliseconds. Defaults to 30000"
},
{
"name": "DB_LOG",
"format": "boolean",
"description": "true logs every tool call, its statements and full output to stderr. Off by default"
},
{
"name": "DB_LOG_FILE",
"format": "filepath",
"description": "Log every tool call to this file instead, on a mounted volume. Implies DB_LOG"
},
{
"name": "DB_LOG_DIR",
"format": "filepath",
"description": "Save every tool call as its own JSON file in this folder, on a mounted volume. Implies logging"
},
{
"name": "DB_LOG_FORMAT",
"format": "string",
"description": "pretty (default) or json, one object per line"
},
{
"name": "DB_LOG_PORT",
"format": "number",
"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"
},
{
"name": "DB_LOG_HISTORY",
"format": "number",
"description": "Entries the viewer keeps in memory when DB_LOG_DIR is not set. Defaults to 500"
},
{
"name": "MYSQL_HOST",
"format": "string",
"description": "Legacy MySQL-only form, kept for drop-in compatibility. Prefer DB_URL"
},
{
"name": "MYSQL_USER",
"format": "string",
"description": "Legacy MySQL-only form. Prefer DB_URL"
},
{
"name": "MYSQL_PASSWORD",
"format": "string",
"description": "Legacy MySQL-only form. Prefer DB_URL with DB_PASSWORD"
},
{
"name": "MYSQL_DATABASE",
"format": "string",
"description": "Legacy MySQL-only form. Prefer DB_URL"
}
]
}Tools
Reported by the attributed source; not independently observed by Koskamo.
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · repository · passed · metadata changed · updated
- · backfill · recorded · Pre-expansion baseline; unobserved rich metadata remains unknown
Connect from your client
Each snippet configures the same source-provided package; replace placeholders before use.
Cursor
{
"mcpServers": {
"mcp-db-read-only-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"DB_URL=<YOUR_DB_URL>",
"-e",
"DB_PASSWORD=<YOUR_DB_PASSWORD>",
"-e",
"DB_PROFILES=<YOUR_DB_PROFILES>",
"-e",
"DB_DEFAULT_PROFILE=<YOUR_DB_DEFAULT_PROFILE>",
"-e",
"DB_CONNECT_TIMEOUT_MS=<YOUR_DB_CONNECT_TIMEOUT_MS>",
"-e",
"DB_QUERY_TIMEOUT_MS=<YOUR_DB_QUERY_TIMEOUT_MS>",
"-e",
"DB_LOG=<YOUR_DB_LOG>",
"-e",
"DB_LOG_FILE=<YOUR_DB_LOG_FILE>",
"-e",
"DB_LOG_DIR=<YOUR_DB_LOG_DIR>",
"-e",
"DB_LOG_FORMAT=<YOUR_DB_LOG_FORMAT>",
"-e",
"DB_LOG_PORT=<YOUR_DB_LOG_PORT>",
"-e",
"DB_LOG_HISTORY=<YOUR_DB_LOG_HISTORY>",
"-e",
"MYSQL_HOST=<YOUR_MYSQL_HOST>",
"-e",
"MYSQL_USER=<YOUR_MYSQL_USER>",
"-e",
"MYSQL_PASSWORD=<YOUR_MYSQL_PASSWORD>",
"-e",
"MYSQL_DATABASE=<YOUR_MYSQL_DATABASE>",
"docker.io/shibbirweb/mcp-db-read-only:1.1.0"
],
"env": {
"DB_URL": "<YOUR_DB_URL>",
"DB_PASSWORD": "<YOUR_DB_PASSWORD>",
"DB_PROFILES": "<YOUR_DB_PROFILES>",
"DB_DEFAULT_PROFILE": "<YOUR_DB_DEFAULT_PROFILE>",
"DB_CONNECT_TIMEOUT_MS": "<YOUR_DB_CONNECT_TIMEOUT_MS>",
"DB_QUERY_TIMEOUT_MS": "<YOUR_DB_QUERY_TIMEOUT_MS>",
"DB_LOG": "<YOUR_DB_LOG>",
"DB_LOG_FILE": "<YOUR_DB_LOG_FILE>",
"DB_LOG_DIR": "<YOUR_DB_LOG_DIR>",
"DB_LOG_FORMAT": "<YOUR_DB_LOG_FORMAT>",
"DB_LOG_PORT": "<YOUR_DB_LOG_PORT>",
"DB_LOG_HISTORY": "<YOUR_DB_LOG_HISTORY>",
"MYSQL_HOST": "<YOUR_MYSQL_HOST>",
"MYSQL_USER": "<YOUR_MYSQL_USER>",
"MYSQL_PASSWORD": "<YOUR_MYSQL_PASSWORD>",
"MYSQL_DATABASE": "<YOUR_MYSQL_DATABASE>"
}
}
}
}Cline
{
"mcpServers": {
"mcp-db-read-only-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"DB_URL=<YOUR_DB_URL>",
"-e",
"DB_PASSWORD=<YOUR_DB_PASSWORD>",
"-e",
"DB_PROFILES=<YOUR_DB_PROFILES>",
"-e",
"DB_DEFAULT_PROFILE=<YOUR_DB_DEFAULT_PROFILE>",
"-e",
"DB_CONNECT_TIMEOUT_MS=<YOUR_DB_CONNECT_TIMEOUT_MS>",
"-e",
"DB_QUERY_TIMEOUT_MS=<YOUR_DB_QUERY_TIMEOUT_MS>",
"-e",
"DB_LOG=<YOUR_DB_LOG>",
"-e",
"DB_LOG_FILE=<YOUR_DB_LOG_FILE>",
"-e",
"DB_LOG_DIR=<YOUR_DB_LOG_DIR>",
"-e",
"DB_LOG_FORMAT=<YOUR_DB_LOG_FORMAT>",
"-e",
"DB_LOG_PORT=<YOUR_DB_LOG_PORT>",
"-e",
"DB_LOG_HISTORY=<YOUR_DB_LOG_HISTORY>",
"-e",
"MYSQL_HOST=<YOUR_MYSQL_HOST>",
"-e",
"MYSQL_USER=<YOUR_MYSQL_USER>",
"-e",
"MYSQL_PASSWORD=<YOUR_MYSQL_PASSWORD>",
"-e",
"MYSQL_DATABASE=<YOUR_MYSQL_DATABASE>",
"docker.io/shibbirweb/mcp-db-read-only:1.1.0"
],
"env": {
"DB_URL": "<YOUR_DB_URL>",
"DB_PASSWORD": "<YOUR_DB_PASSWORD>",
"DB_PROFILES": "<YOUR_DB_PROFILES>",
"DB_DEFAULT_PROFILE": "<YOUR_DB_DEFAULT_PROFILE>",
"DB_CONNECT_TIMEOUT_MS": "<YOUR_DB_CONNECT_TIMEOUT_MS>",
"DB_QUERY_TIMEOUT_MS": "<YOUR_DB_QUERY_TIMEOUT_MS>",
"DB_LOG": "<YOUR_DB_LOG>",
"DB_LOG_FILE": "<YOUR_DB_LOG_FILE>",
"DB_LOG_DIR": "<YOUR_DB_LOG_DIR>",
"DB_LOG_FORMAT": "<YOUR_DB_LOG_FORMAT>",
"DB_LOG_PORT": "<YOUR_DB_LOG_PORT>",
"DB_LOG_HISTORY": "<YOUR_DB_LOG_HISTORY>",
"MYSQL_HOST": "<YOUR_MYSQL_HOST>",
"MYSQL_USER": "<YOUR_MYSQL_USER>",
"MYSQL_PASSWORD": "<YOUR_MYSQL_PASSWORD>",
"MYSQL_DATABASE": "<YOUR_MYSQL_DATABASE>"
}
}
}
}VS Code
{
"servers": {
"mcp-db-read-only-mcp": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"DB_URL=<YOUR_DB_URL>",
"-e",
"DB_PASSWORD=<YOUR_DB_PASSWORD>",
"-e",
"DB_PROFILES=<YOUR_DB_PROFILES>",
"-e",
"DB_DEFAULT_PROFILE=<YOUR_DB_DEFAULT_PROFILE>",
"-e",
"DB_CONNECT_TIMEOUT_MS=<YOUR_DB_CONNECT_TIMEOUT_MS>",
"-e",
"DB_QUERY_TIMEOUT_MS=<YOUR_DB_QUERY_TIMEOUT_MS>",
"-e",
"DB_LOG=<YOUR_DB_LOG>",
"-e",
"DB_LOG_FILE=<YOUR_DB_LOG_FILE>",
"-e",
"DB_LOG_DIR=<YOUR_DB_LOG_DIR>",
"-e",
"DB_LOG_FORMAT=<YOUR_DB_LOG_FORMAT>",
"-e",
"DB_LOG_PORT=<YOUR_DB_LOG_PORT>",
"-e",
"DB_LOG_HISTORY=<YOUR_DB_LOG_HISTORY>",
"-e",
"MYSQL_HOST=<YOUR_MYSQL_HOST>",
"-e",
"MYSQL_USER=<YOUR_MYSQL_USER>",
"-e",
"MYSQL_PASSWORD=<YOUR_MYSQL_PASSWORD>",
"-e",
"MYSQL_DATABASE=<YOUR_MYSQL_DATABASE>",
"docker.io/shibbirweb/mcp-db-read-only:1.1.0"
],
"env": {
"DB_URL": "<YOUR_DB_URL>",
"DB_PASSWORD": "<YOUR_DB_PASSWORD>",
"DB_PROFILES": "<YOUR_DB_PROFILES>",
"DB_DEFAULT_PROFILE": "<YOUR_DB_DEFAULT_PROFILE>",
"DB_CONNECT_TIMEOUT_MS": "<YOUR_DB_CONNECT_TIMEOUT_MS>",
"DB_QUERY_TIMEOUT_MS": "<YOUR_DB_QUERY_TIMEOUT_MS>",
"DB_LOG": "<YOUR_DB_LOG>",
"DB_LOG_FILE": "<YOUR_DB_LOG_FILE>",
"DB_LOG_DIR": "<YOUR_DB_LOG_DIR>",
"DB_LOG_FORMAT": "<YOUR_DB_LOG_FORMAT>",
"DB_LOG_PORT": "<YOUR_DB_LOG_PORT>",
"DB_LOG_HISTORY": "<YOUR_DB_LOG_HISTORY>",
"MYSQL_HOST": "<YOUR_MYSQL_HOST>",
"MYSQL_USER": "<YOUR_MYSQL_USER>",
"MYSQL_PASSWORD": "<YOUR_MYSQL_PASSWORD>",
"MYSQL_DATABASE": "<YOUR_MYSQL_DATABASE>"
}
}
}
}Claude Desktop
{
"mcpServers": {
"mcp-db-read-only-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"DB_URL=<YOUR_DB_URL>",
"-e",
"DB_PASSWORD=<YOUR_DB_PASSWORD>",
"-e",
"DB_PROFILES=<YOUR_DB_PROFILES>",
"-e",
"DB_DEFAULT_PROFILE=<YOUR_DB_DEFAULT_PROFILE>",
"-e",
"DB_CONNECT_TIMEOUT_MS=<YOUR_DB_CONNECT_TIMEOUT_MS>",
"-e",
"DB_QUERY_TIMEOUT_MS=<YOUR_DB_QUERY_TIMEOUT_MS>",
"-e",
"DB_LOG=<YOUR_DB_LOG>",
"-e",
"DB_LOG_FILE=<YOUR_DB_LOG_FILE>",
"-e",
"DB_LOG_DIR=<YOUR_DB_LOG_DIR>",
"-e",
"DB_LOG_FORMAT=<YOUR_DB_LOG_FORMAT>",
"-e",
"DB_LOG_PORT=<YOUR_DB_LOG_PORT>",
"-e",
"DB_LOG_HISTORY=<YOUR_DB_LOG_HISTORY>",
"-e",
"MYSQL_HOST=<YOUR_MYSQL_HOST>",
"-e",
"MYSQL_USER=<YOUR_MYSQL_USER>",
"-e",
"MYSQL_PASSWORD=<YOUR_MYSQL_PASSWORD>",
"-e",
"MYSQL_DATABASE=<YOUR_MYSQL_DATABASE>",
"docker.io/shibbirweb/mcp-db-read-only:1.1.0"
],
"env": {
"DB_URL": "<YOUR_DB_URL>",
"DB_PASSWORD": "<YOUR_DB_PASSWORD>",
"DB_PROFILES": "<YOUR_DB_PROFILES>",
"DB_DEFAULT_PROFILE": "<YOUR_DB_DEFAULT_PROFILE>",
"DB_CONNECT_TIMEOUT_MS": "<YOUR_DB_CONNECT_TIMEOUT_MS>",
"DB_QUERY_TIMEOUT_MS": "<YOUR_DB_QUERY_TIMEOUT_MS>",
"DB_LOG": "<YOUR_DB_LOG>",
"DB_LOG_FILE": "<YOUR_DB_LOG_FILE>",
"DB_LOG_DIR": "<YOUR_DB_LOG_DIR>",
"DB_LOG_FORMAT": "<YOUR_DB_LOG_FORMAT>",
"DB_LOG_PORT": "<YOUR_DB_LOG_PORT>",
"DB_LOG_HISTORY": "<YOUR_DB_LOG_HISTORY>",
"MYSQL_HOST": "<YOUR_MYSQL_HOST>",
"MYSQL_USER": "<YOUR_MYSQL_USER>",
"MYSQL_PASSWORD": "<YOUR_MYSQL_PASSWORD>",
"MYSQL_DATABASE": "<YOUR_MYSQL_DATABASE>"
}
}
}
}Let your agent find its tools
Find servers like mcp-db-read-only MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.