← Back to search

io.github.daedalus/mcp-sqlite3

daedalus Scanned 23d ago

MCP server exposing sqlite3 library functionality

C
72.6 / 100

Versions

0.1.3latest
first seen May 19, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 37

get_sqlite_version
annotations: none low

Get the SQLite library version. Returns: The SQLite library version string. Example: >>> get_sqlite_version() "3.44.0"

get_sqlite3_version
annotations: none low

Get the sqlite3 module version. Returns: The sqlite3 module version string. Example: >>> get_sqlite3_version() "3.44.0"

complete_sql_statement
annotations: none low

Check if a SQL statement is syntactically complete. Args: sql: The SQL statement to check. Returns: True if the statement is complete, False otherwise. Example: >>> complete_sql_statement("SELECT * FROM users;") True >>> complete_sql_statement("SELECT * FROM") False

sql str
connect_database
annotations: none low

Open a database connection. Args: database: Path to the database file or ':memory:' for in-memory database. timeout: Connection timeout in seconds. detect_types: Parse types for columns (PARSE_DECLTYPES, PARSE_COLNAMES). isolation_level: Transaction isolation level or None for autocommit. check_same_thread: Ensure thread safety. cached_statements: Number of cached statements. uri: Interpret database as URI. Returns: Connection result with conn_id or error. Example: >>> connect_database(":memory:") {"success": true, "conn_id": "abc-123"} >>> connect_database("/path/to/db.sqlite") {"success": true, "conn_id": "def-456"}

uri bool timeout float database str detect_types int isolation_level string cached_statements int check_same_thread bool
close_connection
annotations: none low

Close a database connection. Args: conn_id: The connection ID to close. Returns: Success status. Example: >>> close_connection("abc-123") {"success": true}

conn_id str
commit
annotations: none low

Commit any pending transaction to the database. Args: conn_id: The connection ID. Returns: Success status. Example: >>> commit("abc-123") {"success": true}

conn_id str
rollback
annotations: none low

Rollback any pending transaction. Args: conn_id: The connection ID. Returns: Success status. Example: >>> rollback("abc-123") {"success": true}

conn_id str
execute_query
annotations: none low

Execute a SQL query and return results. Args: conn_id: The connection ID. sql: The SQL query to execute. params: Query parameters for parameterized queries. Returns: Query results with rows, columns, and metadata. Example: >>> execute_query("abc-123", "SELECT * FROM users WHERE id = ?", [1]) {"success": true, "data": [{"id": 1, "name": "John"}], "columns": ["id", "name"]}

sql str params string conn_id str
execute_many
annotations: none low

Execute a SQL statement with multiple parameter sets. Args: conn_id: The connection ID. sql: The SQL statement to execute. params_list: List of parameter sets. Returns: Execution result with total rows affected. Example: >>> execute_many("abc-123", "INSERT INTO users (name) VALUES (?)", [["Alice"], ["Bob"]]) {"success": true, "rowcount": 2}

sql str conn_id str params_list string
execute_script
annotations: none low

Execute a SQL script with multiple statements. Args: conn_id: The connection ID. sql_script: The SQL script containing multiple statements. Returns: Execution result. Example: >>> execute_script("abc-123", "CREATE TABLE t (x); INSERT INTO t VALUES (1); SELECT * FROM t;") {"success": true, "rowcount": -1}

conn_id str sql_script str
fetch_results
annotations: none low

Fetch results from a cursor. Args: conn_id: The connection ID. cursor_id: The cursor ID from a previous execute_query call. fetch_size: Number of rows to fetch (None for all remaining). Returns: Fetched rows. Example: >>> fetch_results("abc-123", "cursor-xyz", 10) {"success": true, "data": [{"x": 1}, {"x": 2}]}

conn_id str cursor_id str fetch_size string
list_tables
annotations: none low

List all tables in the database. Args: conn_id: The connection ID. Returns: List of table names. Example: >>> list_tables("abc-123") {"success": true, "data": ["users", "products", "orders"]}

conn_id str
get_table_info
annotations: none low

Get detailed information about a table. Args: conn_id: The connection ID. table_name: The name of the table. Returns: Table schema information including columns, types, defaults, and nullability. Example: >>> get_table_info("abc-123", "users") {"success": true, "data": [{"cid": 0, "name": "id", "type": "INTEGER", "notnull": 1, "dflt_value": null, "pk": 1}]}

conn_id str table_name str
get_columns
annotations: none low

Get column information for a table. Args: conn_id: The connection ID. table_name: The name of the table. Returns: List of column definitions. Example: >>> get_columns("abc-123", "users") {"success": true, "data": [{"name": "id", "type": "INTEGER"}, {"name": "name", "type": "TEXT"}]}

conn_id str table_name str
get_indexes
annotations: none low

Get index information for a table or all indexes. Args: conn_id: The connection ID. table_name: Optional table name to filter indexes. Returns: List of index information. Example: >>> get_indexes("abc-123", "users") {"success": true, "data": [{"name": "idx_name", "table": "users", "unique": 0}]}

conn_id str table_name string
get_primary_keys
annotations: none low

Get primary key columns for a table. Args: conn_id: The connection ID. table_name: The name of the table. Returns: List of primary key column names. Example: >>> get_primary_keys("abc-123", "users") {"success": true, "data": ["id"]}

conn_id str table_name str
get_foreign_keys
annotations: none low

Get foreign key information for a table. Args: conn_id: The connection ID. table_name: The name of the table. Returns: List of foreign key definitions. Example: >>> get_foreign_keys("abc-123", "orders") {"success": true, "data": [{"from": "user_id", "to": "users.id", "table": "users"}]}

conn_id str table_name str
create_table
annotations: none low

Create a new table. Args: conn_id: The connection ID. table_name: The name of the table to create. columns: List of column definitions with 'name' and 'type' (and optional 'pk', 'notnull', 'default'). if_not_exists: Add IF NOT EXISTS clause. Returns: Success status. Example: >>> create_table("abc-123", "users", [{"name": "id", "type": "INTEGER", "pk": True}, {"name": "name", "type": "TEXT"}]) {"success": true}

columns string conn_id str table_name str if_not_exists bool
drop_table
annotations: none low

Drop a table. Args: conn_id: The connection ID. table_name: The name of the table to drop. if_exists: Add IF EXISTS clause. Returns: Success status. Example: >>> drop_table("abc-123", "users") {"success": true}

conn_id str if_exists bool table_name str
rename_table
annotations: none low

Rename a table. Args: conn_id: The connection ID. old_name: Current table name. new_name: New table name. Returns: Success status. Example: >>> rename_table("abc-123", "users", "accounts") {"success": true}

conn_id str new_name str old_name str
alter_table_add_column
annotations: none low

Add a column to a table. Args: conn_id: The connection ID. table_name: The name of the table. column_def: Column definition (e.g., 'email TEXT'). Returns: Success status. Example: >>> alter_table_add_column("abc-123", "users", "email TEXT NOT NULL") {"success": true}

conn_id str column_def str table_name str
vacuum
annotations: none low

Vacuum the database to reclaim space and optimize. Args: conn_id: The connection ID. Returns: Success status. Example: >>> vacuum("abc-123") {"success": true}

conn_id str
insert_row
annotations: none low

Insert a row into a table. Args: conn_id: The connection ID. table_name: The name of the table. data: Dictionary of column names to values. Returns: Success status with lastrowid. Example: >>> insert_row("abc-123", "users", {"name": "John", "email": "john@example.com"}) {"success": true, "lastrowid": 1}

data string conn_id str table_name str
update_rows
annotations: none low

Update rows in a table. Args: conn_id: The connection ID. table_name: The name of the table. data: Dictionary of column names to new values. where: WHERE clause condition. where_params: Parameters for the WHERE clause. Returns: Success status with rowcount. Example: >>> update_rows("abc-123", "users", {"name": "Jane"}, "id = ?", [1]) {"success": true, "rowcount": 1}

data string where str conn_id str table_name str where_params string
delete_rows
annotations: none low

Delete rows from a table. Args: conn_id: The connection ID. table_name: The name of the table. where: WHERE clause condition. where_params: Parameters for the WHERE clause. Returns: Success status with rowcount. Example: >>> delete_rows("abc-123", "users", "id = ?", [1]) {"success": true, "rowcount": 1}

where str conn_id str table_name str where_params string
select_rows
annotations: none low

Select rows from a table. Args: conn_id: The connection ID. table_name: The name of the table. columns: Comma-separated column names or * for all. where: WHERE clause condition. where_params: Parameters for the WHERE clause. order_by: ORDER BY clause. limit: Maximum number of rows. offset: Number of rows to skip. Returns: Query results. Example: >>> select_rows("abc-123", "users", "id, name", "active = ?", [1], "name", 10) {"success": true, "data": [{"id": 1, "name": "John"}], "columns": ["id", "name"]}

limit string where str offset string columns str conn_id str order_by str table_name str where_params string
create_python_function
annotations: none low

Register a Python function as a SQLite function. Args: conn_id: The connection ID. name: Name of the SQL function. func_code: Python code that defines a function named 'func'. n_arg: Number of arguments (-1 for any). deterministic: Whether the function is deterministic. Returns: Success status. Example: >>> create_python_function("abc-123", "my_upper", "def func(x): return x.upper() if x else None") {"success": true}

name str n_arg int conn_id str func_code str deterministic bool
create_python_aggregate
annotations: none low

Register a Python class as a SQLite aggregate function. Args: conn_id: The connection ID. name: Name of the SQL aggregate function. step_code: Python code defining a Step class with a step() method. finalize_code: Python code defining a Final class with a finalize() method. n_arg: Number of arguments (-1 for any). Returns: Success status. Example: >>> create_python_aggregate("abc-123", "my_sum", "class Step: total = 0; def step(self, v): self.total += v", ... "class Final: def finalize(self): return self.total") {"success": true}

name str n_arg int conn_id str step_code str finalize_code str
drop_function
annotations: none low

Drop a user-defined function. Note: SQLite doesn't have DROP FUNCTION; this just confirms the function name. Args: conn_id: The connection ID. _name: Name of the function (unused, SQLite limitation). Returns: Success status.

_name str conn_id str
backup_database
annotations: none low

Backup the database to a file. Args: conn_id: The connection ID. target_path: Path to the backup file. pages: Number of pages to copy per iteration (-1 for all). name: Database name ('main' or 'temp' or attached database name). Returns: Success status. Example: >>> backup_database("abc-123", "/path/to/backup.db") {"success": true}

name str pages int conn_id str target_path str
restore_database
annotations: none low

Restore the database from a backup file. Args: conn_id: The connection ID. source_path: Path to the backup file. Returns: Success status. Example: >>> restore_database("abc-123", "/path/to/backup.db") {"success": true}

conn_id str source_path str
serialize_database
annotations: none low

Serialize a database to base64-encoded bytes. Args: conn_id: The connection ID. name: Database name to serialize. Returns: Base64-encoded database. Example: >>> serialize_database("abc-123") {"success": true, "data": "U29tZURhdGFiYXNl..."}

name str conn_id str
deserialize_database
annotations: none low

Deserialize a base64-encoded database. Args: conn_id: The connection ID. data: Base64-encoded database data. name: Database name to deserialize to. database: Optional new database path. Returns: Success status. Example: >>> deserialize_database("abc-123", "U29tZURhdGFiYXNl...") {"success": true}

data str name str conn_id str database string
get_table_sql
annotations: none low

Get the CREATE TABLE SQL statement for a table. Args: conn_id: The connection ID. table_name: The name of the table. Returns: CREATE TABLE SQL statement. Example: >>> get_table_sql("abc-123", "users") {"success": true, "data": "CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)"}

conn_id str table_name str
export_sql_dump
annotations: none low

Export the database as a SQL dump. Args: conn_id: The connection ID. Returns: SQL dump as string. Example: >>> export_sql_dump("abc-123") {"success": true, "data": "BEGIN TRANSACTION;\nCREATE TABLE..."}

conn_id str
register_adapter
annotations: none low

Register an adapter for a Python type to SQL type. Args: py_type: Python type name (e.g., 'datetime.date'). sql_type: SQL type name. Returns: Success status. Example: >>> register_adapter("datetime.date", "TEXT") {"success": true}

py_type str sql_type str
register_converter
annotations: none low

Register a converter for a SQL type to Python type. Args: typename: SQL type name. converter_code: Python code defining a converter function named 'convert'. Returns: Success status. Example: >>> register_converter("MYINT", "def convert(data): return int(data)") {"success": true}

typename str converter_code str

Permissions 2

filesystem low
Server uses filesystem capabilities via: os, tempfile
database medium
Server uses database capabilities via: sqlite3

Scan Findings 95

info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
low
Tool 'get_sqlite_version' has no annotations annotation_checker · 100%
low
Tool 'get_sqlite3_version' has no annotations annotation_checker · 100%
low
Tool 'complete_sql_statement' has no annotations annotation_checker · 100%
low
Tool 'connect_database' has no annotations annotation_checker · 100%
low
Tool 'close_connection' has no annotations annotation_checker · 100%
low
Tool 'commit' has no annotations annotation_checker · 100%
low
Tool 'rollback' has no annotations annotation_checker · 100%
low
Tool 'execute_query' has no annotations annotation_checker · 100%
low
Tool 'execute_many' has no annotations annotation_checker · 100%
low
Tool 'execute_script' has no annotations annotation_checker · 100%
low
Tool 'fetch_results' has no annotations annotation_checker · 100%
low
Tool 'list_tables' has no annotations annotation_checker · 100%
low
Tool 'get_table_info' has no annotations annotation_checker · 100%
low
Tool 'get_columns' has no annotations annotation_checker · 100%
low
Tool 'get_indexes' has no annotations annotation_checker · 100%
low
Tool 'get_primary_keys' has no annotations annotation_checker · 100%
low
Tool 'get_foreign_keys' has no annotations annotation_checker · 100%
low
Tool 'create_table' has no annotations annotation_checker · 100%
low
Tool 'drop_table' has no annotations annotation_checker · 100%
low
Tool 'rename_table' has no annotations annotation_checker · 100%
low
Tool 'alter_table_add_column' has no annotations annotation_checker · 100%
low
Tool 'vacuum' has no annotations annotation_checker · 100%
low
Tool 'insert_row' has no annotations annotation_checker · 100%
low
Tool 'update_rows' has no annotations annotation_checker · 100%
low
Tool 'delete_rows' has no annotations annotation_checker · 100%
low
Tool 'select_rows' has no annotations annotation_checker · 100%
low
Tool 'create_python_function' has no annotations annotation_checker · 100%
low
Tool 'create_python_aggregate' has no annotations annotation_checker · 100%
low
Tool 'drop_function' has no annotations annotation_checker · 100%
low
Tool 'backup_database' has no annotations annotation_checker · 100%
low
Tool 'restore_database' has no annotations annotation_checker · 100%
low
Tool 'serialize_database' has no annotations annotation_checker · 100%
low
Tool 'deserialize_database' has no annotations annotation_checker · 100%
low
Tool 'get_table_sql' has no annotations annotation_checker · 100%
low
Tool 'export_sql_dump' has no annotations annotation_checker · 100%
low
Tool 'register_adapter' has no annotations annotation_checker · 100%
low
Tool 'register_converter' has no annotations annotation_checker · 100%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
medium
Vulnerable dependency: fastmcp@0.1.0 (GHSA-5h2m-4q8j-pqpj) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@0.1.0 (GHSA-c2jp-c369-7pvx) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@0.1.0 (GHSA-m8x7-r2rg-vh5g) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@0.1.0 (GHSA-mxxr-jv3v-6pgc) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@0.1.0 (GHSA-rcfx-77hg-w2wv) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@0.1.0 (GHSA-rj5c-58rq-j5g5) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@0.1.0 (GHSA-rww4-4w9c-7733) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@0.1.0 (GHSA-vv7q-7jx5-f767) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@0.1.0 (PYSEC-2026-1364) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@0.1.0 (PYSEC-2026-1365) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@0.1.0 (PYSEC-2026-2474) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@0.1.0 (PYSEC-2026-2475) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@0.1.0 (PYSEC-2026-2476) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@0.1.0 (PYSEC-2026-338) dependency_analyzer · 95%
info
pyproject.toml metadata manifest_parser · 100%
info
Tool: get_sqlite_version manifest_parser · 90%
info
Tool: get_sqlite3_version manifest_parser · 90%
info
Tool: complete_sql_statement manifest_parser · 90%
info
Tool: connect_database manifest_parser · 90%
info
Tool: close_connection manifest_parser · 90%
info
Tool: commit manifest_parser · 90%
info
Tool: rollback manifest_parser · 90%
info
Tool: execute_query manifest_parser · 90%
info
Tool: execute_many manifest_parser · 90%
info
Tool: execute_script manifest_parser · 90%
info
Tool: fetch_results manifest_parser · 90%
info
Tool: list_tables manifest_parser · 90%
info
Tool: get_table_info manifest_parser · 90%
info
Tool: get_columns manifest_parser · 90%
info
Tool: get_indexes manifest_parser · 90%
info
Tool: get_primary_keys manifest_parser · 90%
info
Tool: get_foreign_keys manifest_parser · 90%
info
Tool: create_table manifest_parser · 90%
info
Tool: drop_table manifest_parser · 90%
info
Tool: rename_table manifest_parser · 90%
info
Tool: alter_table_add_column manifest_parser · 90%
info
Tool: vacuum manifest_parser · 90%
info
Tool: insert_row manifest_parser · 90%
info
Tool: update_rows manifest_parser · 90%
info
Tool: delete_rows manifest_parser · 90%
info
Tool: select_rows manifest_parser · 90%
info
Tool: create_python_function manifest_parser · 90%
info
Tool: create_python_aggregate manifest_parser · 90%
info
Tool: drop_function manifest_parser · 90%
info
Tool: backup_database manifest_parser · 90%
info
Tool: restore_database manifest_parser · 90%
info
Tool: serialize_database manifest_parser · 90%
info
Tool: deserialize_database manifest_parser · 90%
info
Tool: get_table_sql manifest_parser · 90%
info
Tool: export_sql_dump manifest_parser · 90%
info
Tool: register_adapter manifest_parser · 90%
info
Tool: register_converter manifest_parser · 90%
low
Permission: filesystem access detected permission_analyzer · 70%
medium
Permission: database access detected permission_analyzer · 90%
info
No dependency files found for SBOM generation sbom_generator · 100%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%