Orchestra插件:devtools数据库
一个全面的数据库开发工具插件 乐团MCP 提供 95个MCP工具 跨5个数据库提供商。
支持的数据库
| 提供程序 | 驱动程序 | DSN示例 |
|---|---|---|
| PostgreSQL | postgres | postgres://user:pass@localhost:5432/mydb?sslmode=disable |
| SQLite | sqlite / sqlite3 | /path/to/database.db 或 :memory: |
| MySQL | mysql | user:pass@tcp(localhost:3306)/mydb |
| 瑞迪斯 | redis | redis://localhost:6379/0 |
| MongoDB | mongodb | mongodb://localhost:27017/mydb |
安装
go install github.com/orchestra-mcp/plugin-devtools-database/cmd@latest用法
添加到您的 plugins.yaml:
- id: tools.devtools-database
binary: ./bin/devtools-database
enabled: true通过MCP连接:
{"name": "db_connect", "arguments": {"driver": "postgres", "dsn": "postgres://localhost:5432/mydb"}}工具(共95个)
通用型(22种工具)
使用所有SQL提供程序(PostgreSQL、SQLite、MySQL)。
| 工具 | 说明 |
|---|---|
db_connect | 连接到数据库(sqlite、postgres、mysql、mongodb、redis) |
db_disconnect | 断开与数据库的连接 |
db_list_connections | 列出所有活动连接 |
db_create_database | 创建新的SQLite数据库文件 |
db_drop_database | 删除SQLite数据库文件 |
db_query | 执行SELECT查询,返回JSON |
db_export | 将表格导出为CSV或JSON格式 |
db_import | 将数据从CSV/JSON导入表中 |
db_list_tables | 列出数据库中的表 |
db_describe_table | 描述表列和类型 |
db_list_indexes | 列出表上的索引 |
db_list_views | 列出数据库中的视图 |
db_list_constraints | 列出约束(PK、FK、唯一性、检查) |
db_table_size | 行数和存储大小 |
db_stats | 数据库级统计 |
db_create_table | 创建具有键入列的表 |
db_alter_table | 添加、删除或重命名列 |
db_drop_table | 放下一张桌子 |
db_create_index | 创建索引 |
db_drop_index | 删除索引 |
db_create_view | 创建视图 |
db_drop_view | 删除视图 |
PostgreSQL高级版(48个工具)
需要PostgreSQL连接。
| 类别 | 工具 | 计数 |
|---|---|---|
| 维护保养 | pg_vacuum, pg_analyze, pg_reindex, pg_cluster | 4 |
| 架构管理 | pg_create_schema, pg_list_schemas, pg_drop_schema, pg_set_search_path, pg_get_search_path | 5 |
| 分区 | pg_create_partitioned_table, pg_create_partition, pg_list_partitions, pg_detach_partition | 4 |
| 行级安全 | pg_enable_rls, pg_disable_rls, pg_create_policy, pg_list_policies | 4 |
| 复制 | pg_replication_status, pg_list_replication_slots, pg_list_publications | 3 |
| 扩展和性能 | pg_list_extensions, pg_enable_extension, pg_table_bloat, pg_index_bloat | 4 |
| 触发器 | pg_create_trigger_function, pg_create_trigger, pg_list_triggers, pg_drop_trigger | 4 |
| 倾听/通知 | pg_notify, pg_listen, pg_list_channels | 3 |
| pg载体 | pg_enable_vectors, pg_add_vector_column, pg_create_vector_index, pg_vector_search, pg_upsert_embedding, pg_bulk_upsert_embeddings, pg_vector_stats, pg_delete_embeddings | 8 |
| 角色和权限 | pg_list_roles, pg_create_role, pg_grant, pg_revoke | 4 |
| 物化视图 | pg_create_materialized_view, pg_refresh_materialized_view | 2 |
| 全文搜索 | pg_add_tsvector_column, pg_create_gin_index, pg_fts_search | 3 |
Redis(16个工具)
需要Redis连接。
| 工具 | 操作 |
|---|---|
redis_keys | 扫描、类型、ttl、del、存在、重命名、持久化、过期 |
redis_strings | get、set、mget、mset、incr、decr、append等。 |
redis_hashes | hget、hset、hgetall、hdel、hkeys、hvals等。 |
redis_lists | lpush、rpush、lpop、rpop、lrange、llen等。 |
redis_sets | sadd、srem、smembers、烧结、sunion、sdiff等。 |
redis_sorted_sets | zadd、zrange、zrangebyscore、zscore、zrank等。 |
redis_streams | xadd、xread、xrange、xlen、xinfo、xtrim等。 |
redis_pubsub | 发布、pubsub_channels、pubsub_numsub、pubsub-numpat |
redis_server | 信息、数据库大小、配置、客户端列表、慢日志、内存使用 |
redis_flushdb | 刷新数据库或所有数据库(破坏性) |
redis_pipeline | 带有可选MULTI/EXEC事务的批处理命令 |
redis_ttl_inspect | 带类型信息的批量TTL检查 |
redis_scan_keys | 深度按键扫描,包括类型、TTL、内存使用情况 |
redis_bitmap | setbit、getbit、bitcount、bitpos、bitop |
redis_hyperloglog | pfadd、pfcount、pfmerge |
redis_geo | geoadd、geodist、geoos、geosearch |
MongoDB(9个工具)
需要MongoDB连接。
| 工具 | 操作 |
|---|---|
mongo_documents | find、find_one、insert_one、interest_many、update_one、update_many、delete_one、delete_many、count、distinct |
mongo_aggregate | 执行聚合管道($match、$group、$sort等) |
mongo_indexes | list、create、create_text、create_ttl、drop |
mongo_collections | 列表、创建、删除、重命名、统计 |
mongo_server | server_status、db_stats、list_databases、current_op、build_info |
mongo_schema | 用于推断字段类型、验证收集的示例文档 |
mongo_bulk | 批量插入/更新/删除操作 |
mongo_export | 将集合导出到JSON文件 |
mongo_import | 将JSON文件导入集合 |
建筑
internal/
├── db/
│ ├── manager.go # Connection manager (SQL + NonSQL factories)
│ ├── provider.go # Provider interface (20 methods) + types
│ └── providers/
│ ├── postgres.go # PostgreSQL provider (pgx/v5)
│ ├── sqlite.go # SQLite provider (modernc.org/sqlite)
│ ├── mysql.go # MySQL provider (go-sql-driver/mysql)
│ ├── redis.go # Redis provider (go-redis/v9)
│ └── mongodb.go # MongoDB provider (mongo-driver/v2)
├── tools/
│ ├── db_*.go # 22 universal tools
│ ├── pg_*.go # 48 PostgreSQL-specific tools
│ ├── redis_*.go # 16 Redis-specific tools
│ └── mongo_*.go # 9 MongoDB-specific tools
└── plugin.go # Tool registration (95 tools)提供者模式
每个数据库都有一个实现20方法的Provider db.Provider 界面。SQL提供程序是通过以下方式创建的 ProviderFactory (从 *sql.DB),而NoSQL提供商使用 NonSQLProviderFactory (直接从DSN字符串)。
特定于提供商的工具使用保护助手(getPostgresProvider, getRedisProvider, getMongoDBProvider)该类型断言连接的提供者,如果连接了错误的数据库类型,则返回用户友好的错误。
依赖项
github.com/jackc/pgx/v5--PostgreSQL驱动程序modernc.org/sqlite--纯Go SQLite驱动程序github.com/go-sql-driver/mysql--MySQL驱动程序github.com/redis/go-redis/v9--Redis客户端go.mongodb.org/mongo-driver/v2--MongoDB驱动程序
