mcp-turso云
一种模型上下文协议(MCP)服务器,提供与 用于LLM的Turso数据库。此服务器实现了两级 身份验证系统,用于处理组织级和 数据库级操作,使Turso易于管理和查询 数据库直接来自LLM。
特性
🏢 组织级运营
- 列出数据库:查看Turso组织中的所有数据库
- 创建数据库:使用可自定义选项创建新数据库
- 删除数据库:从组织中删除数据库
- 生成数据库令牌:为创建身份验证令牌
特定数据库
💾 数据库级操作
- 列表表格:查看特定数据库中的所有表
- 执行只读查询:运行SELECT和PRAGMA查询
(只读操作)
- 执行查询:运行潜在的破坏性SQL查询(INSERT,
更新、删除等)
- 描述表:获取数据库表的架构信息
- 矢量搜索:使用SQLite执行向量相似性搜索
向量扩展
⚠️ 重要提示:查询执行安全⚠️
此服务器在只读和只读之间实现了以安全为重点的分离 以及破坏性的数据库操作:
- 使用
execute_read_only_query对于SELECT和PRAGMA查询(安全,
只读操作)
- 使用
execute_query用于INSERT、UPDATE、DELETE、CREATE、DROP和
其他修改数据的操作
这种分离允许不同的权限级别和审批 要求:
- 在许多情况下,只读操作可以自动批准
- 破坏性操作可能需要明确的安全批准
在批准之前,始终仔细阅读和审查SQL查询 他们 这对于破坏性操作尤其重要 可以修改或删除数据。花时间了解每个查询的内容 在允许它执行之前。
两级认证系统
服务器实现了一个复杂的身份验证系统:
- 组织级身份验证
- 使用Turso平台API令牌 - 管理数据库和组织级操作 - 通过Turso仪表板获得
- 数据库级身份验证
- 使用特定于数据库的令牌 - 使用组织令牌自动生成 - 缓存以提高性能,并根据需要轮换
配置
此服务器需要通过MCP客户端进行配置。这是 不同环境的示例:
Cline/Claude桌面配置
将此添加到您的Cline/Claude Desktop MCP设置中:
{
"mcpServers": {
"mcp-turso-cloud": {
"command": "npx",
"args": ["-y", "mcp-turso-cloud"],
"env": {
"TURSO_API_TOKEN": "your-turso-api-token",
"TURSO_ORGANIZATION": "your-organization-name",
"TURSO_DEFAULT_DATABASE": "optional-default-database"
}
}
}
}带WSL配置的Claude桌面
对于WSL环境,请将以下内容添加到您的Claude Desktop配置中:
{
"mcpServers": {
"mcp-turso-cloud": {
"command": "wsl.exe",
"args": [
"bash",
"-c",
"TURSO_API_TOKEN=your-token TURSO_ORGANIZATION=your-org node /path/to/mcp-turso-cloud/dist/index.js"
]
}
}
}环境变量
服务器需要以下环境变量:
TURSO_API_TOKEN:您的Turso平台API令牌(必需)TURSO_ORGANIZATION:您的Turso组织名称(必填)TURSO_DEFAULT_DATABASE:无数据库时使用的默认数据库
指定(可选)
TOKEN_EXPIRATION:生成的数据库令牌的过期时间
(可选,默认值:“7d”)
TOKEN_PERMISSION:生成令牌的权限级别(可选,
默认值:“完全访问”)
API
服务器实现了按类别组织的MCP工具:
组织工具
列表_数据库
列出Turso组织中的所有数据库。
参数:无
示例响应:
{
"databases": [
{
"name": "customer_db",
"id": "abc123",
"region": "us-east",
"created_at": "2023-01-15T12:00:00Z"
},
{
"name": "product_db",
"id": "def456",
"region": "eu-west",
"created_at": "2023-02-20T15:30:00Z"
}
]
}create_database
在您的组织中创建新数据库。
参数:
name(string,必填):新数据库的名称group(字符串,可选):将数据库分配给的组regions(string\[\],可选):要将数据库部署到的区域
例子:
{
"name": "analytics_db",
"group": "production",
"regions": ["us-east", "eu-west"]
}delete_database
从组织中删除数据库。
参数:
name(string,必填):要删除的数据库的名称
例子:
{
"name": "test_db"
}生成数据库令牌
为特定数据库生成新令牌。
参数:
database(字符串,必填):数据库名称expiration(字符串,可选):令牌过期时间permission(字符串,可选):权限级别(“完全访问”或
“只读”)
例子:
{
"database": "customer_db",
"expiration": "30d",
"permission": "read-only"
}数据库工具
list_tables
列出数据库中的所有表。
参数:
database(字符串,可选):数据库名称(如果不是,则使用上下文
提供)
例子:
{
"database": "customer_db"
}执行_只读_查询
对数据库执行只读SQL查询(SELECT、PRAGMA)。
参数:
query(字符串,必填):要执行的SQL查询(必须是SELECT或
PRAGMA)
params(对象,可选):查询参数database(字符串,可选):数据库名称(如果不是,则使用上下文
提供)
例子:
{
"query": "SELECT * FROM users WHERE age > ?",
"params": { "1": 21 },
"database": "customer_db"
}execute_query
执行可能具有破坏性的SQL查询(INSERT、UPDATE、DELETE、, CREATE等)与数据库进行比较。
参数:
query(字符串,必填):要执行的SQL查询(不能是SELECT
或PRAGMA)
params(对象,可选):查询参数database(字符串,可选):数据库名称(如果不是,则使用上下文
提供)
例子:
{
"query": "INSERT INTO users (name, age) VALUES (?, ?)",
"params": { "1": "Alice", "2": 30 },
"database": "customer_db"
}describe_table
获取表的架构信息。
参数:
table(字符串,必填):表名database(字符串,可选):数据库名称(如果不是,则使用上下文
提供)
例子:
{
"table": "users",
"database": "customer_db"
}矢量搜索
使用SQLite向量扩展执行向量相似性搜索。
参数:
table(字符串,必填):表名vector_column(字符串,必填):包含向量的列query_vector(number\[\],必填):查询相似度向量
搜索
limit(数字,可选):最大结果数(默认值:10)database(字符串,可选):数据库名称(如果不是,则使用上下文
提供)
例子:
{
"table": "embeddings",
"vector_column": "embedding",
"query_vector": [0.1, 0.2, 0.3, 0.4],
"limit": 5,
"database": "vector_db"
}发展
设置
- 克隆存储库
- 安装依赖项:
npm install- 构建项目:
npm run build- 在开发模式下运行:
npm run dev出版
- 更新package.json中的版本
- 构建项目:
npm run build- 发布到npm:
npm publish故障排除
API令牌问题
如果遇到身份验证错误:
- 验证您的Turso API令牌是否有效并具有必要的
权限
- 检查您的组织名称是否正确
- 确保您的令牌未过期
数据库连接问题
如果您在连接数据库时遇到问题:
- 验证您的组织中是否存在该数据库
- 检查您的API令牌是否有权访问数据库
- 确保数据库名称拼写正确
贡献
欢迎投稿!请随时提交拉取请求。
许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
致谢
构建于:
