使用说明
MS结构MCP服务器
该项目提供了一个模型上下文协议(MCP)服务器,使客户端能够查询和探索Microosft结构项中的模式。
目标是通过使代理/llm能够查询和验证,实现数据工程流程的更稳健的自动化
使LLM能够查询湖畔小屋、仓库和SQL数据库,使构建数据管道的自动化更加稳健。
它使用Azure Active Directory(AAD)令牌身份验证。
先决条件
- Python 3.10+ 安装。
- SQL Server的Microsoft ODBC驱动程序 安装。
- https://learn.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-服务器-服务器16
- 通常为“用于SQL Server的ODBC驱动程序17”或“用于SQL服务器的ODBC驱动程式18”。建议使用驱动程序18以获得更好的AAD支持。
- Azure命令行界面 已安装并验证:
- 跑
az login并完成认证流程,az login --allow-no-subscriptions可能是必要的。 - 经过身份验证的用户/主体必须具有适当的权限(例如。,
contributor工作区中的角色或Fabric项目的所有者)。
- 跑
安装说明
管道安装
pip install ms-fabric-mcp
紫外线装置
uv add ms-fabric-mcp
# or
uv pip install ms-fabric-mcp
示例 mcp.json 与Cursor、Claude Desktop等一起使用的配置。
"ms-fabric-mcp": {
"command": "uv",
"args": [
"--directory",
"path/to/server",
"run",
"mcp"
],
"env": {
"SQL_SERVER_NAME": "xyz-xyz.datawarehouse.fabric.microsoft.com",
"SQL_DATABASE_NAME": "dev",
"ODBC_DRIVER": "{ODBC Driver 18 for SQL Server}"
}
}
替代方案
-
克隆存储库(可选):
git clone <repository_url> cd ms_fabric_mcp # Or your project directory name -
安装依赖关系:
uv sync
提供所需的环境变量并运行MCP服务器 uv run mcp
配置
服务器在运行前需要设置以下环境变量:
SQL_SERVER_NAME:Fabric中SQL Server实例的完全限定域名(例如。,xyz-xyz.datawarehouse.fabric.microsoft.com).SQL_DATABASE_NAME:要连接的数据库的名称(在Fabric中不太重要,Fabric是单个工作区内的共享连接主机)。ODBC_DRIVER(可选):显示在系统ODBC配置中的ODBC驱动程序的名称。- 默认为
{ODBC Driver 18 for SQL Server}如果没有设置。 - 示例:
{ODBC Driver 17 for SQL Server},{ODBC Driver 18 for SQL Server}.
- 默认为
工具
SQL Server MCP公开了以下用于与SQL Server数据库交互的工具:
怎么翻译
对配置的SQL Server数据库执行只读SQL查询。此工具验证是否出于安全目的只执行SELECT语句。
参数:
sql:要执行的SQL查询(必须是只读SELECT语句)
退货:
- 字典列表,其中每个字典代表查询结果中的一行
- 如果找不到结果,则返回一个带消息的字典
search_tables
在INFORMATION_SCHEMA中按名称搜索表。表格视图。支持不区分大小写的通配符和模式过滤。
参数:
table_name:要搜索的完整或部分表名(不区分大小写)schema_name(可选):用于筛选结果的架构名称
退货:
- 包含匹配表元数据的词典列表
- 如果找不到匹配的表,则返回一个带消息的字典
搜索_列_表
在表中搜索与提供的名称匹配的列。从INFORMATION_SCHEMA检索详细的列元数据。COLUMNS视图。
参数:
table_name:要搜索的完整或部分表名(不区分大小写)schema_name(可选):用于筛选结果的架构名称
退货:
- 字典列表,其中每个字典代表一列及其元数据
- 如果找不到匹配的列,则返回一个带消息的字典
search_tables_by_column
搜索包含与提供的名称匹配的列的表。帮助定位具有特定列的表。
参数:
column_name:要搜索的完整或部分列名(不区分大小写)schema_name(可选):用于筛选结果的架构名称
退货:
- 字典列表,其中每个字典代表一列及其表和元数据
- 如果找不到匹配的列,则返回一个带消息的字典
搜索查询模式
从queryinsights.exec_requests_history视图中搜索历史查询模式。此工具有助于发现可以重用或调整的成功查询模式,将文字值替换为占位符。
参数:
search_term:要在查询中搜索的文本(表名、列名等)use_regex(可选):如果为true,则将search_term解释为正则表达式模式(默认值:false)min_execution_count(可选):查询模式执行的最小次数(默认值:1)max_execution_time_ms(可选):仅包含速度超过此阈值的查询(默认值:60秒)limit(可选):要返回的最大模式数(默认值:10)
退货:
- 词典列表,每本词典包含:
pattern:用占位符替换文字的规范化查询模式example:具有实际值的具体示例execution_stats:执行频率和性能统计tables_referenced:查询中引用的表列表columns_referenced:查询中引用的列列表last_executed:上次成功使用此模式的时间
- 如果没有符合条件的模式,则返回一个带消息的字典
示例用法(概念性)
MCP客户端将通过调用 query 工具。
// Hypothetical MCP client request body
{
"sql": "SELECT TOP 10 * FROM YourTable;"
}
服务器将返回查询结果或错误消息。
// Example successful response (structure may vary slightly based on FastMCP)
{
"result": [
{ "Column1": "Value1", "Column2": 123 },
{ "Column1": "Value2", "Column2": 456 }
// ... more rows
]
}
// Example error response
{
"error": {
"title": "Database Execution Error",
"detail": "Database error occurred: [Some pyodbc error message]",
"status_code": 500
}
}
示例提示
创建一个联接表X和Y的查询,验证联接不会产生任何重复行,根据需要使用查询工具
查找数据库中可能包含客户信息的所有表。然后列出这些表中的所有列。
搜索名称中包含“顺序”的表,并向我显示它们的结构。然后构建一个查询,显示上个月每个客户的订单总数。
查找所有具有名为“user_id”或类似列的表
基于历史查询模式,帮助我编写一个高效的查询,找到按收入排名前10的产品。使用这些模式作为良好查询结构的参考。
探索数据库模式,找到与身份验证或用户权限相关的所有表,然后向我展示每个表的数据示例。