MCP SQL Server

Integrations

  • Implements database operations using the pyodbc Python library to provide SQL Server interaction capabilities.

MCP SQL 服务器

通过对话式 AI 界面提供 SQL 数据库交互工具的 FastMCP 服务器。

概述

该项目创建了一个服务器,通过对话式 AI 界面公开 MS SQL Server 操作。它使用 FastMCP 框架提供查询和操作 SQL 数据的工具,允许用户使用自然语言与数据库交互。

特征

  • 执行 SQL 查询并查看结果
  • 列出数据库中可用的表
  • 用列信息描述表结构
  • 执行非查询操作(INSERT、UPDATE、DELETE)
  • 列出系统上可用的 ODBC 驱动程序
  • 查看数据库信息和服务器详细信息

要求

  • Python 3.7+
  • pyodbc
  • 异步
  • FastMCP 框架
  • 微软 SQL 服务器
  • 适用于 SQL Server 的 ODBC 驱动程序 17

安装

  1. 安装 Python 依赖项:
pip install pyodbc asyncio fastmcp
  1. 确保您已安装 Microsoft SQL Server 和 SQL Server 的 ODBC 驱动程序 17。
  2. 在脚本中配置连接设置:
# Connection parameters SERVER = "server\\instance" # Change to your SQL Server instance DATABASE = "db_name" # Change to your database name

用法

运行服务器:

python mcp_sql_server.py

服务器将初始化并建立与指定 SQL Server 数据库的连接。

可用工具

查询语句

执行 SQL 查询并返回结果。

query_sql(query: str = None) -> str
  • 如果没有提供查询,则默认为SELECT * FROM [dbo].[Table_1]
  • 以格式化字符串形式返回查询结果

列表表

列出数据库中所有可用的表。

list_tables() -> str
  • 以字符串形式返回表名称列表

描述表

获取特定表的结构。

describe_table(table_name: str) -> str
  • table_name :要描述的表的名称
  • 返回列信息,包括名称和数据类型

执行非查询

执行 INSERT、UPDATE、DELETE 或其他非查询 SQL 语句。

execute_nonquery(sql: str) -> str
  • sql :要执行的 SQL 语句
  • 返回操作结果,包括受影响的行数
  • 自动处理事务(提交/回滚)

列表_odbc_驱动程序

列出系统上所有可用的 ODBC 驱动程序。

list_odbc_drivers() -> str
  • 返回已安装的 ODBC 驱动程序的逗号分隔列表

数据库信息

获取有关所连接数据库的一般信息。

database_info() -> str
  • 返回服务器名称、数据库名称、SQL Server 版本、当前服务器时间和表数

建筑学

服务器采用异步架构来避免阻塞操作:

  1. 生命周期管理app_lifespan上下文管理器处理数据库连接的设置和拆除。
  2. 非阻塞操作:数据库操作使用asyncio.get_event_loop().run_in_executor()在单独的线程中运行,以防止阻塞主事件循环。
  3. 错误处理:所有操作都包括全面的错误处理和有用的错误消息。

错误处理

服务器处理各种错误情况:

  • 数据库连接失败
  • SQL 查询语法错误
  • 未找到表错误
  • 权限相关问题

所有错误都会被记录下来,并且相应的错误消息会返回给客户端。

定制

要添加新的数据库工具或修改现有的数据库工具,请遵循现有工具中使用的模式:

@mcp.tool() async def your_new_tool(ctx: Context, param1: str) -> str: """Documentation for your tool""" try: conn = ctx.request_context.lifespan_context["conn"] if conn is None: return "Database connection is not available." def your_db_operation(): # Your database operations here pass loop = asyncio.get_event_loop() result = await loop.run_in_executor(None, your_db_operation) # Process and return results return "Your result" except Exception as e: return f"Error: {str(e)}"

安全注意事项

  • 服务器使用 Windows 身份验证(“Trusted_Connection=yes”)
  • 考虑对 SQL 查询实施输入验证以防止 SQL 注入
  • 根据最小特权原则限制数据库用户权限

故障排除

常见问题:

  1. 连接错误:验证 SQL Server 实例名称并确保其正在运行
  2. ODBC 驱动程序错误:确认已安装 SQL Server 的 ODBC 驱动程序 17
  3. 权限错误:检查运行应用程序的 Windows 用户是否具有适当的 SQL Server 权限

执照

[您的许可证信息]

接触

[您的联系方式]

-
security - not tested
F
license - not found
-
quality - not tested

FastMCP 服务器提供与 MS SQL 数据库的自然语言交互,使用户能够通过对话式 AI 界面查询数据、列出表格、描述结构和执行数据库操作。

  1. Overview
    1. Features
      1. Requirements
        1. Installation
          1. Usage
            1. Available Tools
              1. query_sql
              2. list_tables
              3. describe_table
              4. execute_nonquery
              5. list_odbc_drivers
              6. database_info
            2. Architecture
              1. Error Handling
                1. Customization
                  1. Security Considerations
                    1. Troubleshooting
                      1. License
                        1. Contact
                          ID: kyi3u1xitg