
Security News
/Research
Wallet-Draining npm Package Impersonates Nodemailer to Hijack Crypto Transactions
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
@pollinations/mcp-server-sqlite
Advanced tools
A Node.js implementation of the Model Context Protocol SQLite server with a simplified API
A Node.js implementation of the Model Context Protocol SQLite server, based on the official Python reference. This version provides an npx-based alternative for environments where Python's UVX runner is not available, such as LibreChat.
This fork uses the higher-level McpServer
API from the MCP SDK instead of the low-level request handlers, making the code more maintainable and easier to understand.
You can use the package directly via npx:
npx @pollinations/mcp-server-sqlite /path/to/your/database.db
Or install it globally:
npm install -g @pollinations/mcp-server-sqlite
mcp-server-sqlite /path/to/your/database.db
Add the following to claude_desktop_config.json
:
{
"mcpServers": {
"sqlite": {
"command": "/absolute/path/to/npx",
"args": [
"-y",
"@pollinations/mcp-server-sqlite",
"/absolute/path/to/database.db"
],
"env": {
"PATH": "/absolute/path/to/executables",
"NODE_PATH": "/absolute/path/to/node_modules"
}
}
}
}
Full example when using nvm on macOS:
{
"mcpServers": {
"sqlite": {
"command": "/Users/{username}/.nvm/versions/node/v22.12.0/bin/npx",
"args": [
"-y",
"@pollinations/mcp-server-sqlite",
"/Users/{username}/projects/database.db"
],
"env": {
"PATH": "/Users/{username}/.nvm/versions/node/v22.12.0/bin:/usr/local/bin:/usr/bin:/bin",
"NODE_PATH": "/Users/{username}/.nvm/versions/node/v22.12.0/lib/node_modules"
}
}
}
}
Full example when using nvm on Windows:
{
"mcpServers": {
"sqlite": {
"command": "C:\\Program Files\\nodejs\\npx.cmd",
"args": [
"-y",
"@pollinations/mcp-server-sqlite",
"C:\\Users\\{username}\\projects\\database.db"
],
"env": {
"PATH": "C:\\Program Files\\nodejs;%PATH%",
"NODE_PATH": "C:\\Program Files\\nodejs\\node_modules"
}
}
}
}
The SQLite MCP server also runs a lightweight HTTP server that allows other services to access database tables, views, and execute queries directly without going through the LLM context. This is especially useful for integrating with visualization tools or other MCP servers that need to work with large datasets.
By default, the HTTP server runs on port 31111. You can override this by setting the MCP_HTTP_PORT
environment variable:
MCP_HTTP_PORT=4000 npx @pollinations/mcp-server-sqlite <database-path>
GET /data/:name
:name
: Name of the table or viewformat
: csv
(default) or json
limit
: Maximum number of rows to return (default: 1000)Example:
http://localhost:31111/data/employees
http://localhost:31111/data/employees?format=json
http://localhost:31111/data/monthly_sales?limit=500
GET /query
sql
: SQL query to execute (must be a SELECT query)format
: csv
(default) or json
Example:
http://localhost:31111/query?sql=SELECT%20*%20FROM%20users%20WHERE%20age%20%3E%2021
http://localhost:31111/query?sql=SELECT%20*%20FROM%20users%20WHERE%20age%20%3E%2021&format=json
To specify the format, add format=json
to your query parameters:
http://localhost:31111/query?sql=SELECT%20*%20FROM%20users&format=json
You can expose your SQLite MCP server to the internet using Cloudflare Tunnels. This allows you to access your database from anywhere without opening ports on your firewall.
cloudflared
CLI tool installedWe provide a script to automate the setup process:
# Make the script executable if needed
chmod +x scripts/setup-cloudflare-tunnel.sh
# Basic usage (creates a tunnel named "sqlite-mcp" with domain "sqlite-mcp.example.com")
./scripts/setup-cloudflare-tunnel.sh
# Custom configuration
./scripts/setup-cloudflare-tunnel.sh my-tunnel my-tunnel.mydomain.com 8080
If you prefer to set up the tunnel manually:
Log in to Cloudflare:
cloudflared login
Create a tunnel:
cloudflared tunnel create sqlite-mcp
Associate a domain with your tunnel:
cloudflared tunnel route dns sqlite-mcp your-subdomain.yourdomain.com
Create a configuration file (e.g., cloudflared-config.yml
):
tunnel: <your-tunnel-id>
credentials-file: ~/.cloudflared/<your-tunnel-id>.json
ingress:
- hostname: your-subdomain.yourdomain.com
service: http://localhost:31111
- service: http_status:404
Run the tunnel:
cloudflared tunnel --config cloudflared-config.yml run
For production environments, you should run the tunnel as a service:
sudo cloudflared service install --config cloudflared-config.yml
Note: After setting up a new tunnel, it may take 5-15 minutes for SSL certificates to be fully provisioned. If you encounter SSL errors, please wait and try again later.
The HTTP server allows other MCP servers to access data directly without passing it through the LLM context. For example, a visualization MCP server can query your SQLite server directly:
// In a visualization MCP server tool implementation
async ({ dataUrl, chartType }) => {
// Fetch data directly from SQLite server HTTP endpoint
const response = await fetch(dataUrl);
const csvData = await response.text();
// Parse CSV and create visualization
const parsedData = parseCSV(csvData);
const chart = createChart(parsedData, chartType);
return {
content: [{ type: 'image', data: chart }]
};
}
The MCP resource system automatically includes HTTP URLs in the resource content, making it easy to reference in other tools.
execute_query
- Execute an SQL query on the SQLite database
query
: The SQL query to executeread_only
(optional): If true, only SELECT queries will be allowedlist_tables
- List all tables in the SQLite database
save_database
- Save the entire database file to a new location
filepath
(optional): Path to save the database file to (defaults to original path)execute_query_with_url
- Execute a SQL query and get a URL to access the full results via HTTP.
query
: SQL query to execute (must be a SELECT query)description
: (optional) Description of the query purposecreate_view
- Create a SQL view with an optional description, which can then be accessed via HTTP.
name
: Name for the viewquery
: SELECT query that defines the viewdescription
: (optional) Description of the view purposesqlite://schema
- Get the schema of all tables in the database
sqlite://tables/{tableName}
- Get data from a specific table
select-data
- Generate a prompt to execute and analyze a SELECT query
table
: Name of the table to querycolumns
(optional): Comma-separated list of columns to select (defaults to *)where
(optional): WHERE clause conditionlimit
(optional): Maximum number of rows to returnanalyze-table
- Generate a prompt to analyze a table's structure and data
table
: Name of the table to analyzenpm ci
npm run build
You can test the server using the MCP Inspector tool:
npx @modelcontextprotocol/inspector node dist/index.js /absolute/path/to/database.db
MIT
FAQs
A Node.js implementation of the Model Context Protocol SQLite server with a simplified API
We found that @pollinations/mcp-server-sqlite demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
/Research
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
Security News
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.
Security News
/Research
Malicious Nx npm versions stole secrets and wallet info using AI CLI tools; Socket’s AI scanner detected the supply chain attack and flagged the malware.