mcp-sqlalchemy

mcp-sqlalchemy

通过 pyodbc 提供 SQLAlchemy 连接到任何可以通过 SQLAlchemy 访问的数据库管理系统 (DBMS)。

Category
访问服务器

Tools

podbc_get_schemas

Retrieve and return a list of all schema names from the connected database.

podbc_get_tables

Retrieve and return a list containing information about tables in specified schema, if empty uses connection default

podbc_describe_table

Retrieve and return a dictionary containing the definition of a table, including column names, data types, nullable, autoincrement, primary key, and foreign keys.

podbc_filter_table_names

Retrieve and return a list containing information about tables whose names contain the substring 'q' in the format [{'schema': 'schema_name', 'table': 'table_name'}, {'schema': 'schema_name', 'table': 'table_name'}].

podbc_execute_query

Execute a SQL query and return results in JSONL format.

podbc_execute_query_md

Execute a SQL query and return results in Markdown table format.

podbc_query_database

Execute a SQL query and return results in JSONL format.

podbc_spasql_query

Execute a SPASQL query and return results.

podbc_sparql_query

Execute a SPARQL query and return results.

podbc_virtuoso_support_ai

Tool to use the Virtuoso AI support function

podbc_sparql_func

Call ???.

README

通过 SQLAlchemy 实现 MCP Server ODBC

一个轻量级的 MCP (模型上下文协议) 服务器,用于 ODBC,使用 FastAPIpyodbcSQLAlchemy 构建。此服务器与 Virtuoso DBMS 和其他实现 SQLAlchemy 提供程序的 DBMS 后端兼容。

mcp-client-and-servers|648x499


特性

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

前提条件

  1. 安装 uv:

    pip install uv
    

    或者使用 Homebrew:

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

  3. 通过运行 odbcinst -j 检查安装配置(即,关键 INI 文件的位置)。

  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 DBMS virtuoso+pyodbc://user:password@ODBC_DSN
PostgreSQL postgresql://user:password@localhost/dbname
MySQL mysql+pymysql://user:password@localhost/dbname
SQLite sqlite:///path/to/database.db
连接后,您可以通过 Claude 与您的 WhatsApp 联系人互动,在您的 WhatsApp 对话中利用 Claude 的 AI 功能。

提供的工具

概述

name description
podbc_get_schemas 列出连接的数据库管理系统 (DBMS) 可访问的数据库模式。
podbc_get_tables 列出与选定的数据库模式关联的表。
podbc_describe_table 提供与指定数据库模式关联的表的描述。 这包括有关列名、数据类型、null 处理、自动递增、主键和外键的信息
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 特定的功能,用于与 LLM 交互

详细描述

  • podbc_get_schemas

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

    • 检索并返回包含有关指定模式中的表的信息的列表。 如果未提供模式,则使用连接的默认模式。
    • 输入参数:
      • schema (string, optional): 用于过滤表的数据库模式。默认为连接默认值。
      • user (string, optional): 数据库用户名。默认为 "demo"。
      • password (string, optional): 数据库密码。默认为 "demo"。
      • dsn (string, optional): ODBC 数据源名称。默认为 "Local Virtuoso"。
    • 返回包含表信息的 JSON 字符串(例如,TABLE_CAT、TABLE_SCHEM、TABLE_NAME、TABLE_TYPE)。
  • podbc_filter_table_names

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

    • 检索并返回有关特定表的列的详细信息。
    • 输入参数:
      • schema (string, required): 包含该表的数据库模式名称。
      • table (string, required): 要描述的表的名称。
      • user (string, optional): 数据库用户名。默认为 "demo"。
      • password (string, optional): 数据库密码。默认为 "demo"。
      • dsn (string, optional): ODBC 数据源名称。默认为 "Local Virtuoso"。
    • 返回描述表列的 JSON 字符串(例如,COLUMN_NAME、TYPE_NAME、COLUMN_SIZE、IS_NULLABLE)。
  • podbc_query_database

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

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

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

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

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

    • 利用 Virtuoso 特定的 AI 助手功能,传递提示和可选的 API 密钥。 这是 Virtuoso 特有的功能。
    • 输入参数:
      • prompt (string, required): AI 功能的提示文本。
      • api_key (string, optional): AI 服务的 API 密钥。 默认为 "none"。
      • user (string, optional): 数据库用户名。默认为 "demo"。
      • password (string, optional): 数据库密码。默认为 "demo"。
      • dsn (string, optional): 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 以对服务器交互进行故障排除。

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选