
Turso Database は、SQLiteをRustで完全に書き直したインプロセスSQLデータベースです。特筆すべきは、MCPサーバーモードを搭載している点で、AIエージェントが自然言語でデータベースを操作できるようになります。
本記事では、Turso DatabaseのMCP機能の仕組みと、なぜAIエージェント時代にこのような設計が重要なのかを解説します。
Turso Databaseとは
Turso Database は、Turso社 がSQLiteをRustで完全に再実装したプロジェクトです(16,000+ GitHub Stars)。単なるフォークではなく、ゼロから書き直されています。
主な特徴:
- SQLite互換: SQL方言、ファイルフォーマット、C APIがSQLiteと互換
- 非同期I/O: Linux
io_uringによる高速な非同期処理 - ベクトル検索: 組み込みベクトルサポート
- CDC(Change Data Capture): リアルタイムの変更追跡
- 多言語SDK: Go、JavaScript、Python、Rust、Java、WebAssembly対応
- MCPサーバーモード: AIエージェントとの直接連携(これが本記事の主題)
Turso社は以前、SQLiteフォークのlibSQL を開発していましたが、Turso Databaseがその後継として位置づけられています。
なぜSQLiteを書き直すのか
Turso社がSQLiteを再実装した理由は、いくつかあります:
1. メモリ安全性と並行性
Rustで書き直すことで、メモリ安全性が保証され、並行処理がより安全に実装できます。SQLiteはC言語で書かれており、複雑なメモリ管理が必要です。
2. 非同期I/O対応
オリジナルSQLiteは同期I/Oベースです。Turso Databaseは非同期I/Oを前提とした設計で、WebブラウザやWebAssembly環境でもネイティブに動作します。
3. Deterministic Simulation Testing (DST)
Turso DatabaseはDSTを組み込んでおり、Antithesis と連携してSQLite並みの信頼性を目指しています。これは後発プロジェクトならではの強みです。
4. AIエージェント時代への対応
そして今回の主題であるMCPサーバーモードです。AIエージェントがデータベースを直接操作できる仕組みを、データベースエンジン自体に組み込んでいます。
MCPサーバーモードとは
MCP (Model Context Protocol) は、Anthropicが提唱するAIエージェントとツールを接続するための標準プロトコルです。
Turso DatabaseのMCPサーバーモードでは、以下のような自然言語操作が可能になります:
| |
この状態で、AIアシスタント(Claude、Cursor、VS Code Copilotなど)に以下のように指示できます:
- 「データベース内の全テーブルを表示して」
- 「usersテーブルのスキーマを教えて」
- 「投稿数が100以上の記事を検索して」
- 「新しいユーザー ‘Alice’ をメール ‘[email protected] ’ で登録して」
AIエージェントがこれらのリクエストを解釈し、適切なSQLを生成・実行します。
MCPサーバーが提供する9つのツール
Turso DatabaseのMCPサーバーは、以下の9つのツールをAIエージェントに提供します:
データベース管理
- open_database: 新しいデータベースを開く
- current_database: 現在のデータベース情報を取得
スキーマ操作
- list_tables: 全テーブル一覧
- describe_table: 特定テーブルの構造を表示
- schema_change: CREATE TABLE、ALTER TABLE、DROP TABLEの実行
データ操作
- execute_query: SELECT文の実行(読み取り専用)
- insert_data: データ挿入
- update_data: データ更新
- delete_data: データ削除
この分離により、AIエージェントの操作権限を細かく制御できます。例えば、読み取り専用のエージェントにはexecute_queryのみを許可することも可能です。
MCP対応クライアントの設定例
Claude Code
Claude Code では、CLIで簡単にMCPサーバーを追加できます:
| |
設定の詳細:
| |
Cursor
Cursor の場合、設定ファイルに以下を追加します:
| |
VS Code / Copilot
GitHub Copilot のMCP設定:
| |
MCPサーバーの直接利用(JSON-RPC)
MCPサーバーは標準入出力(stdin/stdout)でJSON-RPCメッセージを受け取ります。これにより、任意のプログラムからTurso Databaseを操作できます。
インメモリデータベースの例
| |
このように、MCPサーバーは単なるCLIツールではなく、プログラマブルなデータベース操作インターフェースとして機能します。
AIエージェント時代のDB設計思想
Turso DatabaseのMCP対応から見えてくる、新しいデータベース設計の方向性を考察します。
1. ヒューマンインターフェースからAIインターフェースへ
従来のデータベースツールは、人間が使うことを前提としていました:
- pgAdmin: GUI操作
- mysql CLI: 対話的なコマンドライン
- Prisma Studio: ビジュアルエディタ
しかし、AIエージェント時代では:
- 自然言語で指示: 「usersテーブルの最新10件を表示」
- コンテキスト理解: 「同じ条件で削除して」(前の条件を記憶)
- エラー訂正: 「さっきのSQLを修正して実行」
MCPサーバーは、このような対話をプロトコルレベルでサポートします。
2. 細粒度の権限分離
従来のSQLユーザー権限(SELECT、INSERT、UPDATE、DELETE)に加えて、Turso MCPはツール単位の権限を提供します:
| ツール | 用途 | 推奨ユースケース |
|---|---|---|
execute_query | 読み取り専用 | BI・分析エージェント |
insert_data | 追加のみ | ログ収集エージェント |
update_data | 更新のみ | データクリーニングエージェント |
schema_change | スキーマ変更 | マイグレーション管理 |
これにより、エージェントの役割に応じた最小権限を付与できます。
3. セッションレスな操作
MCPサーバーは、各リクエストが独立しています。従来のDB接続では:
| |
MCPサーバーでは:
| |
各操作が自己完結しており、AIエージェントがステートレスに扱いやすくなっています。
4. プロトコルの標準化
MCPは複数のツールに対応した標準プロトコルです。Turso DatabaseがMCPに対応することで:
- Claude Code
- Cursor
- VS Code Copilot
- Gemini CLI
など、複数のAIツールから同じインターフェースで操作できます。これはRESTful APIがHTTPで統一されたのと同様の標準化です。
Turso vs SQLiteの技術比較
Turso Databaseは単なるMCP対応だけではありません。技術的にも多くの改善があります。
| 項目 | SQLite | Turso Database |
|---|---|---|
| 実装言語 | C | Rust |
| 非同期I/O | なし | io_uring対応 |
| ベクトル検索 | 拡張必要 | 組み込み |
| 暗号化 | 拡張必要 | ネイティブ対応 |
| CDC | トリガー実装 | ネイティブ対応 |
| 並行書き込み | WALモード | BEGIN CONCURRENT |
| MCP対応 | なし | 組み込み |
| ライセンス | Public Domain | MIT |
特にBEGIN CONCURRENTは、複数のトランザクションが並行して書き込みできる実験的機能で、MVCC(Multi-Version Concurrency Control)を採用しています。
インストールと基本的な使い方
インストール
| |
基本的な使い方
| |
| |
Go SDKの例
| |
現状の制限事項とロードマップ
Turso DatabaseはBETA版であり、以下の制限があります:
現在の制限
- プロダクション利用は非推奨: まだ開発段階
- 英語・中国語のみ: ドキュメントが多言語化されていない
- ベクトルインデックス未実装: 近似ベクトル検索は今後の予定
今後のロードマップ
- ベクトルインデックス(ANN検索)
- より高度なスキーマ管理機能
- パフォーマンスの最適化
Turso社は「データ破損バグ報告で最大$1,000の報奨金」を提供しており、信頼性向上に注力しています。
libSQLとの関係
Turso社は以前、SQLiteフォークのlibSQL を開発していました。libSQLは本番環境で既に利用可能です。
Turso Databaseとの違い:
| 項目 | libSQL | Turso Database |
|---|---|---|
| アプローチ | SQLiteフォーク | ゼロからの再実装 |
| 本番利用 | 可能 | 非推奨(開発中) |
| 言語 | C(SQLiteベース) | Rust |
| MCPサーバー | なし | あり |
Turso社の公式見解では、「Turso DatabaseがlibSQLの後継」とされており、長期的にはTurso Databaseに移行する方針です。
まとめ
Turso DatabaseのMCPサーバー機能は、AIエージェント時代のデータベース設計における重要な方向性を示しています:
- AIファーストのインターフェース: GUIではなく、AIエージェントとの対話を前提とした設計
- 細粒度の権限管理: ツール単位での操作制御
- プロトコルの標準化: MCPにより複数のAIツールから統一的にアクセス可能
- ステートレスな操作: JSON-RPCによる自己完結型リクエスト
現時点ではBETA版ですが、Rustによるメモリ安全性、Deterministic Simulation Testingによる信頼性保証、そしてMCPサーバー機能により、将来的にはSQLiteの代替となる可能性があります。
AIエージェントと協調するデータベース設計に興味のある方は、ぜひ試してみてください。