返回市场
麦普- SQLAlchemy服务器

麦普- SQLAlchemy服务器

作者:OpenLinkSoftware19 星标更新:2025-05-24

项目介绍


MCP Server ODBC via SQLAlchemy

这是一个使用FastAPIpyodbcSQLAlchemy构建的轻量级MCP(模型上下文协议)服务器,适用于ODBC。该服务器兼容Virtuoso数据库管理系统以及其他实现SQLAlchemy提供者的数据库后端。

mcp-client-and-servers|648x499


功能

  • 获取模式:从连接的数据库中获取并列出所有模式名称。
  • 获取表:检索特定模式或所有模式的表信息。
  • 描述表:生成表结构的详细描述,包括:
    • 列名和数据类型
    • 可为空属性
    • 主键和外键
  • 搜索表:根据名称子串过滤并检索表。
  • 执行存储过程:在Virtuoso的情况下,执行存储过程并检索结果。
  • 执行查询
    • JSONL结果格式:优化用于结构化响应。
    • Markdown表格格式:适合报告和可视化。

先决条件

  1. 安装uv

    pip install uv
    

    或者使用Homebrew:

    brew install uv
    
  2. unixODBC运行时环境检查

  3. 运行以下命令检查安装配置(例如,关键INI文件的位置):odbcinst -j

  4. 运行以下命令列出可用的数据源名称:odbcinst -q -s

  5. ODBC DSN设置:配置您的ODBC数据源名称(~/.odbc.ini),针对目标数据库。例如,对于Virtuoso DBMS:

    [VOS]
    Description = OpenLink Virtuoso
    Driver = /path/to/virtodbcu_r.so
    Database = Demo
    Address = localhost:1111
    WideAsUTF16 = Yes
    
  6. SQLAlchemy URL绑定:使用以下格式:

    virtuoso+pyodbc://user:password@VOS
    

安装

克隆此仓库:

git clone https://github.com/OpenLinkSoftware/mcp-sqlalchemy-server.git
cd mcp-sqlalchemy-server

环境变量

更新您的.env以覆盖默认值,使其符合您的偏好

ODBC_DSN=VOS
ODBC_USER=dba
ODBC_PASSWORD=dba
API_KEY=xxx

配置

对于Claude Desktop用户: 在claude_desktop_config.json中添加以下内容:

{
  "mcpServers": {
    "my_database": {
      "command": "uv",
      "args": ["--directory", "/path/to/mcp-sqlalchemy-server", "run", "mcp-sqlalchemy-server"],
      "env": {
        "ODBC_DSN": "dsn_name",
        "ODBC_USER": "username",
        "ODBC_PASSWORD": "password",
        "API_KEY": "sk-xxx"
      }
    }
  }
}

使用方法

数据库管理系统(DBMS)连接URL

以下是已测试使用的mcp-server连接到DBMS系统的pyodbc URL示例。

数据库URL 格式
Virtuoso DBMSvirtuoso+pyodbc://user:password@ODBC_DSN
PostgreSQLpostgresql://user:password@localhost/dbname
MySQLmysql+pymysql://user:password@localhost/dbname
SQLitesqlite:///path/to/database.db
一旦连接,您可以通过Claude与WhatsApp联系人互动,利用Claude的AI能力在您的WhatsApp对话中。

提供的工具

概览

名称描述
podbc_get_schemas列出连接的数据库管理系统(DBMS)可访问的所有模式。
podbc_get_tables列出与选定数据库模式关联的表。
podbc_describe_table提供与指定数据库模式关联的表的描述。这包括列名、数据类型、空值处理、自动递增、主键和外键的信息。
podbc_filter_table_names基于q输入字段中的子串模式,列出与选定数据库模式关联的表。
podbc_query_database执行SQL查询,并以JSONL格式返回结果。
podbc_execute_query执行SQL查询,并以JSONL格式返回结果。
podbc_execute_query_md执行SQL查询,并以Markdown表格格式返回结果。
podbc_spasql_query执行SPASQL查询并返回结果。
podbc_sparql_query执行SPARQL查询并返回结果。
podbc_virtuoso_support_ai与Virtuoso支持助手/代理交互——一个特定于Virtuoso的功能,用于与LLMs交互

详细描述

  • podbc_get_schemas

    • 获取并返回连接数据库中的所有模式名称列表。
    • 输入参数:
      • user (字符串,可选):数据库用户名。默认为"demo"。
      • password (字符串,可选):数据库密码。默认为"demo"。
      • dsn (字符串,可选):ODBC数据源名称。默认为"Local Virtuoso"。
    • 返回一个包含模式名称的JSON字符串数组。
  • podbc_get_tables

    • 获取并返回指定模式中表的信息列表。如果没有提供模式,则使用连接的默认模式。
    • 输入参数:
      • schema (字符串,可选):用于筛选表的数据库模式。默认为连接默认。
      • user (字符串,可选):数据库用户名。默认为"demo"。
      • password (字符串,可选):数据库密码。默认为"demo"。
      • dsn (字符串,可选):ODBC数据源名称。默认为"Local Virtuoso"。
    • 返回一个包含表信息的JSON字符串(例如,TABLE_CAT, TABLE_SCHEM, TABLE_NAME, TABLE_TYPE)。
  • podbc_filter_table_names

    • 过滤并返回表名中包含特定子串的表信息。
    • 输入参数:
      • q (字符串,必需):要在表名中搜索的子串。
      • schema (字符串,可选):用于筛选表的数据库模式。默认为连接默认。
      • user (字符串,可选):数据库用户名。默认为"demo"。
      • password (字符串,可选):数据库密码。默认为"demo"。
      • dsn (字符串,可选):ODBC数据源名称。默认为"Local Virtuoso"。
    • 返回一个包含匹配表信息的JSON字符串。
  • podbc_describe_table

    • 获取并返回特定表的列的详细信息。
    • 输入参数:
      • schema (字符串,必需):包含表的数据库模式名称。
      • table (字符串,必需):要描述的表名。
      • user (字符串,可选):数据库用户名。默认为"demo"。
      • password (字符串,可选):数据库密码。默认为"demo"。
      • dsn (字符串,可选):ODBC数据源名称。默认为"Local Virtuoso"。
    • 返回一个描述表列的JSON字符串(例如,COLUMN_NAME, TYPE_NAME, COLUMN_SIZE, IS_NULLABLE)。
  • podbc_query_database

    • 执行标准SQL查询,并以JSON格式返回结果。
    • 输入参数:
      • query (字符串,必需):要执行的SQL查询字符串。
      • user (字符串,可选):数据库用户名。默认为"demo"。
      • password (字符串,可选):数据库密码。默认为"demo"。
      • dsn (字符串,可选):ODBC数据源名称。默认为"Local Virtuoso"。
    • 返回查询结果的JSON字符串。
  • podbc_query_database_md

    • 执行标准SQL查询,并以Markdown表格格式返回结果。
    • 输入参数:
      • query (字符串,必需):要执行的SQL查询字符串。
      • user (字符串,可选):数据库用户名。默认为"demo"。
      • password (字符串,可选):数据库密码。默认为"demo"。
      • dsn (字符串,可选):ODBC数据源名称。默认为"Local Virtuoso"。
    • 返回查询结果的Markdown表格字符串。
  • podbc_query_database_jsonl

    • 执行标准SQL查询,并以JSON Lines (JSONL)格式返回结果(每行一个JSON对象)。
    • 输入参数:
      • query (字符串,必需):要执行的SQL查询字符串。
      • user (字符串,可选):数据库用户名。默认为"demo"。
      • password (字符串,可选):数据库密码。默认为"demo"。
      • dsn (字符串,可选):ODBC数据源名称。默认为"Local Virtuoso"。
    • 返回查询结果的JSONL字符串。
  • podbc_spasql_query

    • 执行SPASQL(SQL/SPARQL混合)查询并返回结果。这是Virtuoso特有的功能。
    • 输入参数:
      • query (字符串,必需):SPASQL查询字符串。
      • max_rows (数字,可选):要返回的最大行数。默认为20。
      • timeout (数字,可选):查询超时时间(毫秒)。默认为30000。
      • user (字符串,可选):数据库用户名。默认为"demo"。
      • password (字符串,可选):数据库密码。默认为"demo"。
      • dsn (字符串,可选):ODBC数据源名称。默认为"Local Virtuoso"。
    • 返回底层存储过程调用的结果(例如,Demo.demo.execute_spasql_query)。
  • podbc_sparql_query

    • 执行SPARQL查询并返回结果。这是Virtuoso特有的功能。
    • 输入参数:
      • query (字符串,必需):SPARQL查询字符串。
      • format (字符串,可选):期望的结果格式。默认为'json'。
      • timeout (数字,可选):查询超时时间(毫秒)。默认为30000。
      • user (字符串,可选):数据库用户名。默认为"demo"。
      • password (字符串,可选):数据库密码。默认为"demo"。
      • dsn (字符串,可选):ODBC数据源名称。默认为"Local Virtuoso"。
    • 返回底层函数调用的结果(例如,"UB".dba."sparqlQuery")。
  • podbc_virtuoso_support_ai

    • 利用特定于Virtuoso的AI助手功能,传递提示和可选的API密钥。这是Virtuoso特有的功能。
    • 输入参数:
      • prompt (字符串,必需):AI功能的提示文本。
      • api_key (字符串,可选):AI服务的API密钥。默认为"none"。
      • user (字符串,可选):数据库用户名。默认为"demo"。
      • password (字符串,可选):数据库密码。默认为"demo"。
      • dsn (字符串,可选):ODBC数据源名称。默认为"Local Virtuoso"。
    • 返回AI支持助手函数调用的结果(例如,DEMO.DBA.OAI_VIRTUOSO_SUPPORT_AI)。

故障排除

为了更方便地进行故障排除:

  1. 安装MCP Inspector:

    npm install -g @modelcontextprotocol/inspector
    
  2. 启动Inspector:

    npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-sqlalchemy-server run mcp-sqlalchemy-server
    

通过提供的URL访问以进行服务器交互的故障排除。