mcpField
M
MCP Server ODBC via PyODBC

MCP Server ODBC via PyODBC

本地服务
github.com/OpenLinkSoftware数据库466 周前更新

关于 MCP Server ODBC via PyODBC

OpenLink MCP Server for ODBC via PyODBC 为通过 ODBC 连接的数据库提供发现和查询工具。除结构化格式的 SQL 结果外,它还支持 Virtuoso 专属的 SPASQL 和存储过程操作。

主要功能

  1. 01列出模式和表
  2. 02描述列及键约束
  3. 03按名称子串筛选表
  4. 04以 JSONL 或 Markdown 格式返回 SQL 结果
  5. 05执行 Virtuoso SPASQL 查询
  6. 06调用 Virtuoso 存储过程

适用场景

  1. 01查询前检查模式和表结构
  2. 02根据部分名称查找表
  3. 03执行 SQL 并按需格式化结果
  4. 04使用 SPASQL 查询 Virtuoso 数据

MCP 相关

向 MCP 客户端提供 ODBC 数据库元数据和查询操作,包括模式与表检查、SQL 执行及 Virtuoso 专属工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"pyodbc-server": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/inspector"
]
}
}
}
启动命令npx -y @modelcontextprotocol/inspector

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@modelcontextprotocol/inspector

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍


通过 PyODBC 使用 ODBC 的 OpenLink MCP 服务

使用 FastAPI 和 pyodbc 构建的轻量级 ODBC MCP(Model Context Protocol)服务。该服务兼容 Virtuoso DBMS,以及任何具有 ODBC 驱动程序的其他 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
    

安装

克隆此仓库:

git clone https://github.com/OpenLinkSoftware/mcp-pyodbc-server.git
cd mcp-pyodbc-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-pyodbc-server", "run", "mcp-pyodbc-server"],
      "env": {
        "ODBC_DSN": "dsn_name",
        "ODBC_USER": "username",
        "ODBC_PASSWORD": "password",
        "API_KEY": "sk-xxx"
      }
    }
  }
}

用法

提供的工具

成功安装后,MCP 客户端应用程序即可使用以下工具。

概览
namedescription
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_virtuoso_support_ai与 Virtuoso Support Assistant/Agent 交互——这是 Virtuoso 专属的 LLM 交互功能
详细说明
  • podbc_get_schemas

    • 从已连接的数据库中获取并返回所有架构名称的列表。
    • 输入参数:
      • user(string,可选):数据库用户名。默认值为 "demo"。
      • password(string,可选):数据库密码。默认值为 "demo"。
      • dsn(string,可选):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_virtuoso_support_ai

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

故障排除

如需更轻松地排查问题:

  1. 安装 MCP Inspector:

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

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

访问提供的 URL,以排查服务交互问题。

已在 MseeP 上验证

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。