内容
# 数据库管理服务器
[](https://github.com/arifulislamat/database-mcp/actions/workflows/ci.yml)
[](LICENSE)
[](https://www.npmjs.com/package/@database-mcp/core)
[](https://nodejs.org)
为人工智能客户端提供安全、结构化的SQL数据库访问服务。
每个数据库引擎都有一个可安装的软件包。每个软件包都暴露了相同的最小化工具接口,`execute_sql` 和 `search_objects`,默认情况下具有防护措施:只读模式、行限制和语句超时。
## 软件包
| 引擎 | TypeScript (npm) | 版本 |
| -------- | ------------------------ | ------- |
| SQLite | [`@database-mcp/sqlite`](https://www.npmjs.com/package/@database-mcp/sqlite) | [](https://www.npmjs.com/package/@database-mcp/sqlite) |
| libSQL | [`@database-mcp/libsql`](https://www.npmjs.com/package/@database-mcp/libsql) | [](https://www.npmjs.com/package/@database-mcp/libsql) |
| MySQL | [`@database-mcp/mysql`](https://www.npmjs.com/package/@database-mcp/mysql) | [](https://www.npmjs.com/package/@database-mcp/mysql) |
| MariaDB | [`@database-mcp/mariadb`](https://www.npmjs.com/package/@database-mcp/mariadb) | [](https://www.npmjs.com/package/@database-mcp/mariadb) |
| Postgres | [`@database-mcp/postgres`](https://www.npmjs.com/package/@database-mcp/postgres) | [](https://www.npmjs.com/package/@database-mcp/postgres) |
所有五个软件包都已发布,经过验证,并通过了共享的一致性测试套件,在CI中针对真实数据库进行测试。
Python、Go和Rust实现计划在TypeScript系列完成后推出。所有软件包在每种语言中都通过相同的语言无关一致性测试套件,因此行为在任何地方都相同。
## 设计原则
- **两个工具,不再多。** 一个小工具界面保持模型的上下文窗口清洁。`search_objects`渐进式地公开模式:调用它时不带参数来列出表,带表名来获取列、索引和外键。
- **默认安全。** 只读模式在两层中强制执行:一个保守的SQL防护,加上数据库本身的会话级只读设置。行数限制(默认为1000),语句超时(默认为30秒)。
- **在启动时配置,绝不通过聊天。** 连接详细信息来自标志、YAML配置文件或环境变量。绝不通过工具调用接受凭证。
- **日志中绝不出现机密。** 密码存储在不可打印的机密类型中,DSN在日志记录前进行清理,日志边界受到过滤器的保护。
## 快速入门
选择您引擎的软件包;每个README都有完整的配置界面。 SQLite:
```json
{
"mcpServers": {
"sqlite": {
"command": "npx",
"args": ["-y", "@database-mcp/sqlite", "--dsn", "/absolute/path/to/database.db"]
}
}
}
```
联网引擎从环境中获取凭证(`MYSQL_*`、`MARIADB_*`、`POSTGRES_*`/`DATABASE_URL`、`LIBSQL_URL`/`LIBSQL_AUTH_TOKEN`),`*_FILE`挂载的机密文件,或通过`--config`的YAML文件。绝不从聊天提示中获取。
## 贡献
参见 [CONTRIBUTING.md](CONTRIBUTING.md)。简而言之,一致性测试套件是完成的定义。只有当`conformance/run.mjs`在每个受影响的服务器上通过时,变更才可合并。
## 许可证
[MIT](LICENSE)