数据查询协议服务器

Microsoft Fabric MCP服务器是一个模型上下文协议服务器,允许客户端查询和探索Microsoft Fabric项目中的模式,支持数据工程流程的自动化。

  • by duggurd
  • Python
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 duggurd/ms_fabric_mcp

使用说明

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}"
  }
}

替代方案

  1. 克隆存储库(可选):

    git clone <repository_url>
    cd ms_fabric_mcp # Or your project directory name
    
  2. 安装依赖关系:

    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的产品。使用这些模式作为良好查询结构的参考。

探索数据库模式,找到与身份验证或用户权限相关的所有表,然后向我展示每个表的数据示例。