使用说明
No2SQL
No2SQL是一个MCP服务器和NuGet包,通过以下方式帮助您从MongoDB迁移到SQL:
- 发现集合和关系候选者,
- 生成SQL模式脚本,
- 生成SQL种子(INSERT)语句,
- 生成Mermaid、PlantUML和GraphViz DOT格式的ER图。
这是给谁的
- 从MongoDB迁移到关系数据库的团队
- 工程师以ERD形式记录NoSQL结构
- 人工智能辅助的工作流程,Copilot可以通过MCP调用数据迁移工具
快速开始
1.配置MongoDB连接
通过环境变量设置MongoDB连接字符串 NO2SQL_MONGO (推荐)。
示例格式:
mongodb+srv://<username>:<password>@<cluster-host>/<database>?retryWrites=true&w=majority
您也可以通过以下方式进行设置 No2SQL/appsettings.json 在...之下 ConnectionStrings:MongoDb.
安装No2SQL MCP服务器
No2SQL MCP服务器作为NuGet包内的独立可执行文件分发。
你不需要。NET已安装,您不需要。NET项目。
1.下载软件包
选项A——使用curl
curl -L https://www.nuget.org/api/v2/package/No2SQL/1.0.3 -o No2SQL.1.0.3.nupkg
选项B——使用PowerShell
Invoke-WebRequest https://www.nuget.org/api/v2/package/No2SQL/1.0.3 -OutFile No2SQL.1.0.3.nupkg
选项C——手动下载
访问https://www.nuget.org/packages/No2SQL然后单击 下载包.
2.取出包装
A. .nupkg 是ZIP存档:
unzip No2SQL.1.0.3.nupkg -d no2sql
可执行文件将位于以下位置:
/tools/win-x64/No2SQL.exe
/tools/linux-x64/No2SQL
/tools/osx-arm64/No2SQL
3.配置您的MCP客户端
⚠️ 重要提示: 始终包括
env使用MongoDB连接字符串进行阻塞。如果没有它,服务器将启动但无法访问您的数据库,工具将自动失败。
VS代码(推荐)
添加到您的 用户设置JSON (Ctrl+Shift+P → 打开用户设置(JSON)):
"mcp.servers": {
"no2sql": {
"command": "path/to/no2sql/tools/win-x64/No2SQL.exe",
"env": {
"NO2SQL_MONGO": "your-mongodb-connection-string",
"NO2SQL_BLOCK_SYSTEM_DATABASES": "true"
}
}
}
或者,VS Code将创建一个专用的 mcp.json 文件(at %APPDATA%\Code\User\mcp.json 在Windows上)。如果您使用该路线,请确保添加 env 这里也有块:
{
"servers": {
"no2sql": {
"type": "stdio",
"command": "path/to/no2sql/tools/win-x64/No2SQL.exe",
"args": [],
"env": {
"NO2SQL_MONGO": "your-mongodb-connection-string",
"NO2SQL_BLOCK_SYSTEM_DATABASES": "true"
}
}
},
"inputs": []
}
保存后,重新加载窗口: Ctrl+Shift+P → 开发者:重新加载窗口.
克劳德桌面版
添加 claude_desktop_config.json:
{
"mcpServers": {
"no2sql": {
"command": "path/to/no2sql/tools/win-x64/No2SQL.exe",
"env": {
"NO2SQL_MONGO": "your-mongodb-connection-string",
"NO2SQL_BLOCK_SYSTEM_DATABASES": "true"
}
}
}
}
GitHub Copilot MCP
{
"mcpServers": {
"no2sql": {
"command": "path/to/no2sql/tools/win-x64/No2SQL.exe",
"env": {
"NO2SQL_MONGO": "your-mongodb-connection-string",
"NO2SQL_BLOCK_SYSTEM_DATABASES": "true"
}
}
}
}
4.验证服务器是否已注册(VS代码)
重新加载后,打开命令面板(Ctrl+Shift+P)然后跑 MCP:列出服务器.
你应该看看 no2sql 上市的。如果没有出现,请仔细检查可执行文件路径,并确保您的设置已保存到正确的文件中。
5.在Copilot聊天中测试它
- 打开 副驾驶聊天 VS代码
- 点击 工具图标 聊天输入底部的(插头或锤子图标)
- 确认
no2sql出现在工具列表中并已启用 - 键入提示--Copilot将自动通过No2SQL路由:
Use No2SQL to list my MongoDB databases.
如果工具图标显示 no2sql 提示返回您的数据库列表,您已完全设置好。
更多示例提示:
Infer relationships for database mydb.
Generate SQL schema for database mydb.
Generate Mermaid ERD for mydb using SQL source.
Generate SQL INSERT statements for collection orders in mydb.
MCP工具暴露
| 工具 | 说明 |
|---|---|
TestConnectivity |
验证MCP服务器连接 |
ListDatabases |
列出可用数据库(遵守允许共享的策略) |
ListInferredRelationships |
按集合列出类似ID的字段 |
CompareIdFieldsToIds |
通过匹配类似ID的字段来推断关系 _id 价值观 |
GenerateSqlSchema |
根据推断的关系生成SQL架构 |
GenerateSqlSchemaAdvanced |
生成具有可选关系覆盖的SQL架构 |
GenerateSeedersForCollection |
为一个集合生成SQL INSERT种子语句 |
GenerateErdMermaid |
生成Mermaid ERD(来源:sql、mongo、auto) |
GenerateErdPlantUml |
生成PlantUML ERD(来源:sql、mongo、auto) |
GenerateErdDot |
生成GraphViz DOT ERD(来源:sql、mongo、auto) |
安全护栏
No2SQL包括输入验证和数据库访问护栏。
环境变量:
NO2SQL_ALLOWED_DATABASES--可选逗号分隔数据库列表NO2SQL_BLOCK_SYSTEM_DATABASES--默认为true;块admin,config,local
工具输入已验证:
- 标识符格式和长度
- 图表源值(
sql,mongo,auto) - 关系覆盖字段
- 快速注射式标记图案
推荐生产基准:
- 集
NO2SQL_ALLOWED_DATABASES对一个严格的反对者 - 保持
NO2SQL_BLOCK_SYSTEM_DATABASES=true
构建、测试、发布
构建解决方案:
dotnet build No2SQL.sln
运行测试线束:
dotnet run --project No2SQL.Test
打包NuGet:
dotnet pack -c Release
发布NuGet包:
dotnet nuget push **/bin/Release/*.nupkg --api-key <your-api-key> --source https://api.nuget.org/v3/index.json
本地测试默认值
No2SQL.Test/Program.cs 支持环境变量重写:
| 变量 | 描述 |
|---|---|
NO2SQL_TEST_DATABASE |
未提供数据库时使用的数据库 |
NO2SQL_TEST_COLLECTION |
使用的集合 --test-stream 当没有供应时 |
NO2SQL_TEST_ROWS_PER_CHUNK |
流种子检查的可选块大小覆盖 |
NO2SQL_TEST_LIMIT |
流种子检查的可选最大文档计数覆盖 |
NO2SQL_TEST_BATCH_SIZE |
可选的Mongo游标批量大小覆盖,用于流种子检查 |
CLI参数优先于环境变量。
贡献
根据麻省理工学院许可证,叉子和衍生作品是受欢迎的。
对官方No2SQL存储库的更改由维护人员自行决定是否接受。提交拉取请求并不能保证包含在内。
许可证
No2SQL根据MIT许可证获得许可。
版权所有(c)2026普里特·塔拉蒂
“No2SQL”是Preet Talati的商标。
