MCP + Azure SQL (AdventureWorksLT) Starter

使用说明内容(Markdown格式)

  • 项目简介

    • 这是一个使用 MCP 协议的 Python 服务器示例,连接 Azure SQL 数据库中的 AdventureWorksLT 数据集,提供若干只读工具供 LLM 调用。模型通过工具调用获得结构化数据,然后以自然语言形式进行推理与回答。
  • 主要功能点

    • MCP 服务器实现:采用 FastMCP,暴露若干工具(工具以装饰器方式注册,服务器通过 stdio 与客户端通信)。
    • 数据访问层:通过 pyodbc 连接 Azure SQL 的 AdventureWorksLT 数据库,所有查询均为只读且参数化,避免暴露原始 SQL。
    • 工具定义与渲染:提供顶级客户销售、按类别销售、客户订单等工具,返回结构化 JSON,便于 LLM 推理与呈现。
    • 会话与传输:默认使用 stdio 传输,便于桌面客户端集成;可扩展以支持其他传输通道。
    • 配置与运行:通过环境变量传入数据库连接信息,支持在本地或训练环境中快速上手。
  • 安装步骤

    • 克隆仓库并进入目录
    • 建立并激活 Python 虚拟环境
    • 安装依赖(requirements.txt)
    • 配置数据库连接参数(通过环境变量)
    • 启动服务器(运行 server/src/server.py)
  • 服务器配置(供 MCP 客户端使用的配置信息) 下面给出用于 MCP 客户端连接该服务器的配置示例(以 JSON 形式呈现,便于粘贴给客户端工具;实际需要基于你的客户端来创建对应的配置对象)。该配置指定服务器名称、启动命令、参数以及数据库连接所需的环境变量。注意:为了保密,请将实际的服务器地址、用户名、密码等敏感信息替换为你的凭据。 { "servers": { "adventureworks": { "name": "adventureworks-mcp", "command": "python", "args": ["-u", "server/src/server.py"], "env": { "SQL_SERVER": "<your-server>.database.windows.net", "SQL_DATABASE": "AdventureWorks", "SQL_USER": "<your-username>", "SQL_PASSWORD": "<your-password>" } } } }

  • 基本使用方法

    • 启动前提
      • 安装 Python 3.10 及以上、创建并激活虚拟环境、安装依赖。
      • 通过环境变量提供数据库连接信息(SQL_SERVER、SQL_DATABASE、SQL_USER、SQL_PASSWORD)。
    • 启动服务器
      • 在命令行执行:运行 server/src/server.py(通过配置中指定的启动命令来启动 MCP 服务器)。
      • 服务器将以 stdio 传输等待 MCP 客户端连接。
    • 连接与使用
      • 使用 MCP 客户端(如 VS Code 的 Copilot Chat 等)连接到该服务器。
      • 客户端会自动发现服务器暴露的工具:top_customers_by_sales、sales_by_category、customer_orders 等。
      • 通过自然语言提示模型即可触发工具调用,获得结构化的 JSON 结果并进行解释与展示。

服务器信息