MCP server for libSQL databases with comprehensive security and management tools. Supports file, local HTTP, and remote Turso databases with connection pooling, transaction support, and 6 specialized database tools.
A Model Context Protocol (MCP) server for libSQL database operations, providing secure database access through Claude Desktop, Claude Code, Cursor, and other MCP-compatible clients.
Runs on Node, written in TypeScript
Install:
pnpm install -g @xexr/mcp-libsql
Test locally:
mcp-libsql --url file:///tmp/test.db --log-mode console
Configure Claude Desktop with your Node.js path and database URL (see configuration examples below)
โ
Complete database management capabilities - All 6 core tools implemented and tested
โ
Comprehensive security validation - 67 security tests covering all injection vectors
โ
Extensive test coverage - 244 total tests (177 unit + 67 security) with 100% pass rate
โ
Production deployment verified - Successfully working with MCP clients
โ
Robust error handling - Connection retry, graceful degradation, and audit logging
๐ Security details: See docs/SECURITY.md for comprehensive security features and testing.
# Use your package manager of choice, e.g. npm, pnpm, bun etc
# Install globally
pnpm install -g @xexr/mcp-libsql
mcp-libsql -v # check version
# ...or build from the repository
git clone https://github.com/Xexr/mcp-libsql.git
cd mcp-libsql
pnpm install # Install dependencies
pnpm build # Build the project
node dist/index.js -v # check version
Global installation assumed below, replace "mcp-libsql" with "node dist/index.js" if using local build
# Test with file database (default: file-only logging)
mcp-libsql --url file:///tmp/test.db
# Test with HTTP database
mcp-libsql --url http://127.0.0.1:8080
# Test with Turso database (environment variable, alternatively export the env var)
LIBSQL_AUTH_TOKEN="your-token" mcp-libsql --url "libsql://your-db.turso.io"
# Test with Turso database (CLI parameter)
mcp-libsql --url "libsql://your-db.turso.io" --auth-token "your-token"
# Development mode with console logging
mcp-libsql --dev --log-mode console --url file:///tmp/test.db
# Test with different logging modes
mcp-libsql --url --log-mode both file:///tmp/test.db
Configure the MCP server in Claude Desktop based on your operating system:
~/Library/Application Support/Claude/claude_desktop_config.json
:Global install
{
"mcpServers": {
"mcp-libsql": {
"command": "mcp-libsql",
"args": [
"--url",
"file:///Users/username/database.db"
]
}
}
}
Alternative configuration for local build installation:
{
"mcpServers": {
"mcp-libsql": {
"command": "node",
"args": [
"/Users/username/projects/mcp-libsql/dist/index.js",
"--url",
"file:///Users/username/database.db"
],
}
}
}
Alternative configuration for global install using nvm lts for node
{
"mcpServers": {
"mcp-libsql": {
"command": "zsh",
"args": [
"-c",
"source ~/.nvm/nvm.sh && nvm use --lts > /dev/null && mcp-libsql --url file:///Users/username/database.db",
],
}
}
}
Important: The global installation method is recommended as it handles PATH automatically.
~/.config/Claude/claude_desktop_config.json
:Global install
{
"mcpServers": {
"mcp-libsql": {
"command": "mcp-libsql",
"args": [
"--url",
"file:///home/username/database.db"
]
}
}
}
Alternative configuration for local build installation:
{
"mcpServers": {
"mcp-libsql": {
"command": "node",
"args": [
"/home/username/projects/mcp-libsql/dist/index.js",
"--url",
"file:///home/username/database.db"
],
}
}
}
%APPDATA%\Claude\claude_desktop_config.json
:Global install
{
"mcpServers": {
"mcp-libsql": {
"command": "wsl.exe",
"args": [
"-e",
"bash",
"-c",
"mcp-libsql --url file:///home/username/database.db",
]
}
}
}
Alternative configuration for local build installation:
{
"mcpServers": {
"mcp-libsql": {
"command": "wsl.exe",
"args": [
"-e",
"bash",
"-c",
"/home/username/projects/mcp-libsql/dist/index.js --url file:///home/username/database.db",
]
}
}
}
Alternative configuration for global install using nvm for node
{
"mcpServers": {
"mcp-libsql": {
"command": "wsl.exe",
"args": [
"-e",
"bash",
"-c",
"source ~/.nvm/nvm.sh && mcp-libsql --url file:///home/username/database.db",
]
}
}
}
Important: Use wsl.exe -e
(not just wsl.exe
) to ensure proper command handling and avoid issues with server command reception on Windows.
For Turso (and other credentialed) databases, you'll need an authentication token. There are two secure ways to provide it:
Global installation shown below, adjust accordingly for your setup
Configure Claude Desktop with environment variable (macOS/Linux example):
export LIBSQL_AUTH_TOKEN="your-turso-auth-token-here"
{
"mcpServers": {
"mcp-libsql": {
"command": "mcp-libsql",
"args": [
"--url",
"libsql://your-database.turso.io"
]
}
}
}
{
"mcpServers": {
"mcp-libsql": {
"command": "mcp-libsql",
"args": [
"--url",
"libsql://your-database.turso.io",
"--auth-token",
"your-turso-auth-token-here"
]
}
}
}
Install Turso CLI:
curl -sSfL https://get.tur.so/install.sh | bash
Login to Turso:
turso auth login
Create an auth token:
turso auth token create --name "mcp-libsql"
Get your database URL:
turso db show your-database-name --url
Create and configure database:
# Create database
turso db create my-app-db
# Get database URL
turso db show my-app-db --url
# Output: libsql://my-app-db-username.turso.io
# Create auth token
turso auth token create --name "mcp-libsql-token"
# Output: your-long-auth-token-string
Configure Claude Desktop:
export LIBSQL_AUTH_TOKEN="your-turso-auth-token-here"
{
"mcpServers": {
"mcp-libsql": {
"command": "mcp-libsql",
"args": [
"--url",
"libsql://my-app-db-username.turso.io"
]
}
}
}
Test the connection:
# Test locally first
mcp-libsql --url "libsql://my-app-db-username.turso.io" --log-mode console
file:///absolute/path/to/database.db
http://hostname:port
libsql://your-database.turso.io
which node
to find your Node.js installation pathcwd
to ensure relative paths work correctlyfile
mode prevents JSON parsing errors in MCP protocol--log-mode console
for development debugging--log-mode both
for comprehensive logging--log-mode none
to disable all loggingRestart Claude Desktop completely after updating the configuration
Test the integration by asking Claude to run SQL queries:
Can you run this SQL query: SELECT 1 as test
๐ Detailed API documentation: See docs/API.md for complete input/output examples and parameters.
# Run all tests
pnpm test
# Run tests in watch mode
pnpm test:watch
# Run tests with coverage
pnpm test:coverage
# Run specific test file
pnpm test security-verification
# Lint code
pnpm lint
# Fix linting issues
pnpm lint:fix
# Type check
pnpm typecheck
Test Coverage: 403 tests covering all functionality including edge cases, error scenarios, CLI arguments, authentication, and comprehensive security validation.
# Clean and rebuild
rm -rf dist node_modules
pnpm install && pnpm build
SyntaxError: Unexpected token '??='
Problem: Claude Desktop may default to using an older Node.js version on your system which doesn't support the required feature set.
Solution: Use global installation and nvm node selection method shown above.
pnpm install -g @xexr/mcp-libsql
pnpm build
was run and dist/index.js
existsmcp-libsql --url file:///tmp/test.db
file:///tmp/test.db
Expected ',' or ']' after array element in JSON
Resolved: This issue is caused by stdout console logging. The --log-mode
option now defaults to file
mode which prevents this issue. If you see these errors, ensure you're using the default --log-mode file
or not specifying --log-mode
at all. Note, the error is harmless, and the tool will still work with it if you wish to have console logging.
# Test database connectivity
sqlite3 /tmp/test.db "SELECT 1"
# Fix permissions
chmod 644 /path/to/database.db
๐ง Full troubleshooting guide: See docs/TROUBLESHOOTING.md for detailed solutions to all issues.
Built with TypeScript and modern Node.js patterns:
Development: pnpm dev
โข Build: pnpm build
โข Test: pnpm test
MIT License - see LICENSE file for details.
Knowledge graph-based persistent memory system
Read-only database access with schema inspection
Database interaction and business intelligence capabilities
Official MCP Server from Atlan which enables you to bring the power of metadata to your AI tools
Query Onchain data, like ERC20 tokens, transaction history, smart contract state.
Read and write access to your Baserow tables.
Embeddings, vector search, document storage, and full-text search with the open-source AI application database
Query your ClickHouse database server.
Introspect and query your apps deployed to Convex.
Access comprehensive B2B data on companies, employees, and job postings for your LLMs and AI workflows.