netwrix
服务介绍
MCP Server for Netwrix Access Analyzer
基于FastMCP的服务器,用于Netwrix Access Analyzer数据的分析,并设计为与Claude Desktop集成以增强数据分析能力。
功能
- 启动时自动连接SQL Server
- 动态数据库模式探索
- 执行SQL查询
- Netwrix Access Analyzer文件系统工具
依赖项
此MCP服务器需要以下依赖项:
- Python 3.12或更高版本
- MCP SDK
- pyodbc 4.0.39或更高版本(用于SQL Server连接)
- python-dotenv 1.0.0或更高版本(用于环境变量管理)
- SQL Server ODBC驱动程序17或更高版本(必须安装在您的系统上)
Netwrix Access Analyzer (NAA) 依赖项
此MCP服务器需要完成Netwrix Access Analyzer (NAA) 文件系统的扫描。
安装
系统依赖项
首先,请确保已安装SQL Server的ODBC驱动程序:
- macOS: 使用Homebrew安装:
brew install microsoft/mssql-release/msodbcsql17 - Windows: 从Microsoft ODBC Driver页面下载并安装
- Linux: 按照Microsoft的说明针对您的发行版进行操作
Python依赖项
使用uv安装所需的Python包
数据库设置
仅用于开发或测试目的:
- 在项目目录中创建一个
.env文件,包含您的SQL Server连接详细信息:
数据库连接信息
DB_SERVER=your_server_name
DB_NAME=your_database_name
DB_USER=your_username
DB_PASSWORD=your_password
DB_USE_WINDOWS_AUTH=FALSE # 如果使用Windows身份验证,请设为TRUE
- 将示例值替换为您实际的数据库连接信息。
与Claude Desktop集成
要使此MCP服务器在Claude Desktop中可用:
- 打开Claude Desktop
- 导航到Claude Desktop配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%Claudeclaude_desktop_config.json
- macOS:
- 在
mcpServers部分添加以下配置。 - 重启Claude Desktop
示例配置
json
"NetwrixAccessAnalyzer": {
"command": "/path/to/your/uv",
"args": [
"run",
"--with",
"pyodbc,fastmcp",
"fastmcp",
"run",
"/path/to/mcp/main.py"
],
"env": {
"DB_SERVER": "your_server_address",
"DB_NAME": "your_database_name",
"DB_USER": "your_username",
"DB_PASSWORD": "your_password",
"DB_USE_WINDOWS_AUTH": "FALSE"
}
}
- 将
/path/to/your/uv替换为您的uv可执行文件的实际路径(使用which uv或where uv查找),同时更新main.py文件的路径以及数据库连接信息。 - 重启Claude Desktop以应用更改
可用工具和示例提示
MCP服务器提供了以下工具来与数据库系统交互并分析访问数据:
数据库连接工具
Connect-Database
连接到MS SQL Server数据库。
参数:
server: SQL Server地址database: 数据库名称username: SQL Server用户名(如果使用Windows身份验证则可选)password: SQL Server密码(如果使用Windows身份验证则可选)trusted_connection: 用于Windows身份验证的布尔标志
示例提示:
“使用[USERNAME]用户和[PASSWORD]密码连接到位于[DBSERVER]的名为[DBNAME]的SQL Server数据库。”
Show-ConnectionStatus
检查当前数据库连接状态。
示例提示:
“数据库当前是否已连接?显示连接状态。”
数据查询和模式工具
Show-TableSchema
获取数据库表模式的详细说明。
参数:
table_name: 要解释的表名
示例提示:"解释Permissions表的结构。它有哪些列?"
Get-TableSchema
检索特定表的架构信息。
参数:
table_name: 要获取架构的表名。
示例提示:
"显示Users表的架构。"
Get-TableSample
从指定表中检索10行样本数据。
参数:
tablename: 要取样的表名。
示例提示:
"给我Permissions表中的10行样本数据。"
访问分析工具
Discover-SensitiveData
识别包含敏感数据的位置。
示例提示:
"找到我们环境中所有包含敏感数据的共享。"
Get-TrusteeAccess
识别特定用户或组具有访问权限的位置。
参数:
trustee: 域用户名格式levelsdown: 需要遍历的目录层级数(默认值:0)
示例提示:
"DOMAINJohnDoe在我们的文件系统中有哪些访问权限?"
Get-TrusteePermissionSource
确定特定资源上用户的权限来源。
参数:
trustee: 域用户名格式resourcepath: 资源路径
示例提示:
"为什么DOMAINJaneDoe可以访问\serversharefolder?这个权限的来源是什么?"
Get-ResourceAccess
显示谁有权访问特定资源。
参数:
resource: 资源路径
示例提示:
"谁有权访问\serverfinance?显示所有用户和组。"
Get-UnusedAccess
查找对特定资源有未使用访问权限的用户。
参数:
resource: 资源路径
示例提示:
"找出过去一年内没有访问过\serverhr的所有用户。"
Get-ShadowAccess
查找对关键资源有影子访问权限的用户。
示例提示:
"找出所有对信用卡有影子访问权限的用户"
"查找sbcloudlabadmins的影子访问权限"
操作工具
Get-RunningJobs
检查当前正在运行的Netwrix Access Analyzer作业。
示例提示:
"现在是否有任何Access Analyzer作业正在运行?显示状态。"
故障排除
连接问题
如果您遇到连接问题:
- 确认您的SQL Server正在运行并且可以从网络访问。
- 检查
.env文件中的凭据。 - 确保ODBC驱动程序已正确安装。
- 查看日志以获取详细的错误消息。
Claude Desktop集成
如果Claude Desktop找不到uv命令:
- 在配置中使用
uv的完整路径(使用which uv或where uv来找到它)。 - 确保在更改配置后重启了Claude Desktop。
- 检查Claude日志中与MCP服务器相关的任何错误消息。