名称: mssql 描述: 管理MssqlMcp服务器 - 状态、重建和上游更新 参数提示: “[status] [rebuild] [update] [–node] [–dotnet] [–check]” 允许工具: Bash, Read, Glob, Grep, Write, AskUserQuestion
/microsoft:mssql
管理预置的MssqlMcp服务器(Node.js和.NET)。该插件附带预构建的服务器 - 此技能用于诊断、重建和上游更新。
子命令
从 $ARGUMENTS 解析第一个位置参数:
| 子命令 | 描述 |
|---|---|
status |
检查环境、验证构件、测试连接性(默认无参数时) |
rebuild |
从现有源代码重建服务器 |
update |
从上游GitHub拉取最新版本并重建 |
标志
| 标志 | 适用于 | 描述 |
|---|---|---|
--node |
status, rebuild |
仅操作Node.js服务器 |
--dotnet |
status, rebuild |
仅操作.NET服务器 |
--check |
update |
显示可能的变化而不应用 |
子命令: status(默认)
检查环境配置、验证构建构件是否存在,并测试数据库连接性。
步骤 1: 检查环境变量
echo "MSSQL_AUTH_TYPE: ${MSSQL_AUTH_TYPE:-azure-default (默认)}"
echo "MSSQL_SERVER_NAME: ${MSSQL_SERVER_NAME:-localhost (默认)}"
echo "MSSQL_DATABASE_NAME: ${MSSQL_DATABASE_NAME:-master (默认)}"
echo "MSSQL_USER: ${MSSQL_USER:-(未设置)}"
echo "MSSQL_PASSWORD: ${MSSQL_PASSWORD:+(已设置)}"
echo "MSSQL_ENCRYPT: ${MSSQL_ENCRYPT:-true (默认)}"
echo "MSSQL_READONLY: ${MSSQL_READONLY:-true (默认)}"
echo "MSSQL_TRUST_CERT: ${MSSQL_TRUST_CERT:-true (默认)}"
echo "MSSQL_CONNECTION_STRING: ${MSSQL_CONNECTION_STRING:+(自定义 - 用于.NET)}"
步骤 2: 验证构建构件
# Node.js - 检查包是否存在(单文件,运行时无需node_modules)
ls ${CLAUDE_PLUGIN_ROOT}/vendor/MssqlMcp/Node/bundle/index.cjs
# Node.js - 检查dist是否存在(用于打包步骤)
ls ${CLAUDE_PLUGIN_ROOT}/vendor/MssqlMcp/Node/dist/index.js
# .NET - 检查发布的exe是否存在
ls ${CLAUDE_PLUGIN_ROOT}/vendor/MssqlMcp/dotnet-publish/MssqlMcp.exe
报告:
构建构件
Node.js:
bundle/index.cjs: 找到(运行时入口点)
dist/index.js: 找到(用于打包步骤)
.NET:
dotnet-publish/MssqlMcp.exe: 找到(预构建,准备使用)
步骤 3: 测试数据库连接性
# 对于 LocalDB
sqlcmd -S "(localdb)\MSSQLLocalDB" -d master -Q "SELECT @@VERSION" -C
# 对于自定义服务器
sqlcmd -S "${MSSQL_SERVER_NAME}" -d "${MSSQL_DATABASE_NAME}" -Q "SELECT @@VERSION" -C
步骤 4: 报告
SQL Server MCP 状态
环境:
服务器: (localdb)\MSSQLLocalDB
数据库: master
认证: azure-default
模式: 只读
构建状态:
mssql-node: 就绪(bundle/index.cjs 找到)
mssql-dotnet: 就绪(dotnet-publish/MssqlMcp.exe 找到)
连接性:
sqlcmd 测试: 成功
SQL 版本: Microsoft SQL Server 2022 (RTM)
状态: 就绪
子命令: rebuild
从现有源代码重建服务器。在修改源代码或修复损坏构建后使用。
先决条件
- Node.js: Node.js 18+ 带 npm
- .NET: .NET 8 SDK
步骤 1: 检查先决条件
node --version
npm --version
dotnet --version
步骤 2: 构建 Node.js(除非 --dotnet)
cd ${CLAUDE_PLUGIN_ROOT}/vendor/MssqlMcp/Node
npm install
npm run build
npm run bundle
验证:
ls dist/index.js
ls bundle/index.cjs
步骤 3: 构建 .NET(除非 --node)
cd ${CLAUDE_PLUGIN_ROOT}/vendor/MssqlMcp/dotnet
dotnet publish MssqlMcp/MssqlMcp.csproj -c Release -o ../dotnet-publish
验证:
ls ${CLAUDE_PLUGIN_ROOT}/vendor/MssqlMcp/dotnet-publish/MssqlMcp.exe
步骤 4: 强制添加重建构件到 git
git add -f plugins/microsoft/vendor/MssqlMcp/dotnet-publish/
git add -f plugins/microsoft/vendor/MssqlMcp/Node/bundle/
git add -f plugins/microsoft/vendor/MssqlMcp/Node/dist/
步骤 5: 报告
MssqlMcp 重建完成
Node.js 服务器:
输出: bundle/index.cjs(包含所有依赖的单文件包)
.NET 服务器:
输出: dotnet-publish/MssqlMcp.exe
构件已重新跟踪到git。准备好时提交。
子命令: update
从上游 Azure-Samples/SQL-AI-samples 拉取最新版本并重建。
警告: 本地补丁将被覆盖
此插件包含本地补丁(记录在
vendor/MssqlMcp/PATCHES.md中)。更新后,必须重新应用这些补丁。
步骤 1: 克隆上游到临时目录
TEMP_DIR=$(mktemp -d)
cd "$TEMP_DIR"
git clone --depth 1 --filter=blob:none --sparse \
https://github.com/Azure-Samples/SQL-AI-samples.git
cd SQL-AI-samples
git sparse-checkout set MssqlMcp
LATEST_COMMIT=$(git rev-parse --short HEAD)
LATEST_MESSAGE=$(git log -1 --format=%s)
步骤 2: 比较版本
cd "${CLAUDE_PLUGIN_ROOT}"
CURRENT_COMMIT=$(cat plugins/microsoft/vendor/MssqlMcp/VERSION 2>/dev/null || echo "未知")
报告:
MssqlMcp 更新检查
当前: ${CURRENT_COMMIT}
上游: ${LATEST_COMMIT} - ${LATEST_MESSAGE}
如果 --check,在此停止。
步骤 3: 复制文件
# 备份当前
mv plugins/microsoft/vendor/MssqlMcp plugins/microsoft/vendor/MssqlMcp.bak
# 复制新文件(从备份保留构建构件和父级.gitignore)
cp -r "$TEMP_DIR/SQL-AI-samples/MssqlMcp" plugins/microsoft/vendor/
cp -r plugins/microsoft/vendor/MssqlMcp.bak/Node/dist plugins/microsoft/vendor/MssqlMcp/Node/ 2>/dev/null || true
cp -r plugins/microsoft/vendor/MssqlMcp.bak/Node/bundle plugins/microsoft/vendor/MssqlMcp/Node/ 2>/dev/null || true
cp -r plugins/microsoft/vendor/MssqlMcp.bak/Node/node_modules plugins/microsoft/vendor/MssqlMcp/Node/ 2>/dev/null || true
cp -r plugins/microsoft/vendor/MssqlMcp.bak/dotnet-publish plugins/microsoft/vendor/MssqlMcp/ 2>/dev/null || true
cp plugins/microsoft/vendor/MssqlMcp.bak/.gitignore plugins/microsoft/vendor/MssqlMcp/ 2>/dev/null || true
# 写入版本文件
echo "${LATEST_COMMIT}" > plugins/microsoft/vendor/MssqlMcp/VERSION
# 清理
rm -rf plugins/microsoft/vendor/MssqlMcp.bak
rm -rf "$TEMP_DIR"
步骤 4: 重建 Node.js
cd plugins/microsoft/vendor/MssqlMcp/Node
npm install
npm run build
npm run bundle
步骤 5: 重建 .NET
cd plugins/microsoft/vendor/MssqlMcp/dotnet
dotnet publish MssqlMcp/MssqlMcp.csproj -c Release -o ../dotnet-publish
步骤 6: 重新应用本地补丁
重要: 读取并重新应用 PATCHES.md 中的补丁:
cat plugins/microsoft/vendor/MssqlMcp/PATCHES.md
当前要重新应用的补丁:
- 多认证支持 在
Node/src/index.ts中:- 添加
AuthType类型 - 用多认证工厂替换
createSqlConfig() - 更新
ensureSqlConnection()以支持SQL认证
- 添加
重新应用后,重建:
cd plugins/microsoft/vendor/MssqlMcp/Node
npm run build && npm run bundle
步骤 7: 强制添加并报告
git add -f plugins/microsoft/vendor/MssqlMcp/dotnet-publish/
git add -f plugins/microsoft/vendor/MssqlMcp/Node/bundle/
git add -f plugins/microsoft/vendor/MssqlMcp/Node/dist/
git status --short plugins/microsoft/vendor/MssqlMcp/
示例
# 检查状态(默认)
/microsoft:mssql
# 仅检查Node.js服务器状态
/microsoft:mssql status --node
# 重建两个服务器
/microsoft:mssql rebuild
# 仅重建.NET服务器
/microsoft:mssql rebuild --dotnet
# 检查上游更新(干运行)
/microsoft:mssql update --check
# 拉取上游并重建
/microsoft:mssql update
故障排除
Node.js 构建失败:
常见问题:
1. Node.js版本过旧 - 升级到18+
2. node_modules损坏 - 删除并重试
3. npm缓存问题 - npm cache clean --force
4. zod/TypeScript不兼容 - 将 @modelcontextprotocol/sdk 固定到1.x版本
.NET 构建失败:
常见问题:
1. 错误SDK版本 - 安装 .NET 8
2. 缺少工作负载 - dotnet workload restore
3. NuGet缓存问题 - dotnet nuget locals all --clear
上游源
- 仓库: https://github.com/Azure-Samples/SQL-AI-samples
- 路径: MssqlMcp/
- 许可证: MIT
相关命令
/microsoft:setup-dab- 安装和配置 Data API Builder