dbatools mcp服务器
 
A. 模型上下文协议(MCP) 服务器 dbatools PowerShell模块。
将dbatools命令作为MCP工具公开,以便AI助手(GitHub Copilot、Claude等)可以直接发现、解释和执行dbatools命令,所有元数据都来自dbatools自己的元数据 基于评论的帮助.
______________________________________________________________________
特性
list_dbatools_commands--按动词、名词、关键字或风险级别搜索命令get_dbatools_command_help--来自的完整规范化帮助(概要、参数、示例)Get-Help -Fullinvoke_dbatools_command--执行任何带有安全参数验证、风险门控和结构化JSON输出的dbatools命令check_dbatools_environment--验证PowerShell+dbatools的安装、索引新鲜度和版本对齐- 版本不匹配检测 --当安装的dbatools版本与索引版本不同时发出警告
- 安全模式 --非只读命令需要显式
confirm: true执行 - SQL身份验证支持 --通行证
SqlCredential: { username, password }对于SQL身份验证实例
______________________________________________________________________
先决条件
- 20+
- PowerShell 7+ (
pwsh) - dbatools PowerShell模块
Install-Module dbatools -Scope CurrentUser______________________________________________________________________
快速开始
# 1. Clone the repo
git clone https://github.com/Dataplat/dbatools-mcp-server.git
cd dbatools-mcp-server
# 2. Install Node dependencies
npm install
# 3. Generate the help index from your local dbatools installation
npm run refresh-help
# 4. Build
npm run build然后在VS Code中打开文件夹—— .vscode/mcp.json 文件自动注册MCP服务器。
______________________________________________________________________
连接到VS代码
包括 .vscode/mcp.json 将服务器注册为本地STDIO MCP服务器。 在VS Code中打开此文件夹,服务器将出现在GitHub Copilot MCP面板中。
{
"servers": {
"dbatools": {
"type": "stdio",
"command": "node",
"args": ["${workspaceFolder}/dist/server.js"],
"env": {
"DBATOOLS_SAFE_MODE": "true",
"MAX_OUTPUT_ROWS": "100",
"COMMAND_TIMEOUT_SECONDS": "60"
}
}
}
}______________________________________________________________________
配置
所有设置均通过环境变量(设置在 .vscode/mcp.json 或你的外壳):
| 变量 | 默认值 | 描述 |
|---|---|---|
PWSH_EXE | pwsh | PowerShell可执行文件的路径 |
DBATOOLS_SAFE_MODE | true | 何时 true,非只读命令需要 confirm: true |
MAX_OUTPUT_ROWS | 100 | 每次命令执行返回的最大行数 |
COMMAND_TIMEOUT_SECONDS | 60 | PowerShell进程被终止前的秒数 |
______________________________________________________________________
刷新帮助索引
帮助索引(generated/dbatools-help.json)是从本地安装的dbatools模块生成的。 每当dbatools更新时重新运行:
Update-Module dbatools -Scope CurrentUser
npm run refresh-help服务器在运行时检测到版本不匹配,并在索引过时时发出警告。
______________________________________________________________________
风险等级
命令按动词自动分类:
| 风险等级 | 动词 | 行为 |
|---|---|---|
readonly | 获取、测试、查找、比较… | 始终允许 |
change | 设置、新建、添加、复制、启用… | 需要 confirm: true 处于安全模式 |
destructive | 删除、删除、禁用、重置… | 需要 confirm: true 处于安全模式 |
______________________________________________________________________
SQL身份验证
对于仅支持SQL身份验证的实例(例如Docker),通过 SqlCredential 参数:
{
"SqlInstance": "localhost,1433",
"SqlCredential": { "username": "", "password": "YourPassword" }
}______________________________________________________________________
项目结构
dbatools-mcp-server/
├── src/
│ ├── server.ts # MCP server entry point, tool definitions
│ ├── powershell.ts # PowerShell process runner, health checks, version detection
│ ├── help-indexer.ts # Help manifest loader and command search
│ ├── tool-registry.ts # Risk classification, safe argument builder
│ └── types.ts # Shared TypeScript interfaces
├── scripts/
│ └── refresh-help.ps1 # Generates generated/dbatools-help.json
├── generated/ # Help index (gitignored, generated locally)
├── .vscode/
│ └── mcp.json # VS Code MCP local server registration
└── dist/ # Compiled output (gitignored)______________________________________________________________________
贡献
欢迎投稿!请先打开一个问题以进行重大更改。
该项目遵循与以下项目相同的社区精神 dbatools.
______________________________________________________________________
许可证
麻省理工学院 --©2026 DataPlat贡献者
