mcp-odbc

Official

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • Uses .env files for securely storing and accessing configuration variables like API keys and database credentials.

  • Offers the ability to return SQL query results formatted as Markdown tables through the execute_query_md tool.

  • Provides routing of database calls through Node.js to the host system's ODBC Driver Manager, allowing for connection to various database systems.

介绍

本文档介绍了如何设置和使用用于模型上下文协议 (MCP) 的通用 ODBC 服务器(称为 mcp-odbc 服务器)。该服务器旨在通过为特定 ODBC 连接器(或驱动程序)配置的数据源名称,为大型语言模型提供对 ODBC 可访问数据源的透明访问。

服务器实现

此 MCP ODBC 服务器是一个基于node-odbc构建的小型 TypeScript 层。它通过 node.js(具体来说,TypeScript 使用 'npx')将调用路由到主机系统的本地 ODBC 驱动程序管理器。

操作环境设置和先决条件

虽然以下示例主要面向 Virtuoso ODBC 连接器,但本指南也适用于其他 ODBC 连接器。我们强烈建议您贡献与其他数据库管理系统相关的代码和使用演示,以便将其纳入本项目。

关键系统组件

  1. 检查 node.js 版本;如果不是 21.1.0,请使用以下命令进行升级或安装: nvm install v21.1.0
  2. 使用以下命令安装 MCP 组件: npm install @modelcontextprotocol/sdk zod tsx odbc dotenv
  3. 使用以下命令设置nvm版本: nvm alias default 21.1.0

安装

  1. 运行git clone https://github.com/OpenLinkSoftware/mcp-odbc-server.git
  2. 更改目录cd mcp-odbc-server
  3. 运行npm init -y
  4. 将条目"type":"module"添加到package.json文件
  5. 运行npm install @modelcontextprotocol/sdk zod tsx odbc dotenv

unixODBC 运行时环境检查

  1. 通过运行以下命令检查安装配置(即关键 INI 文件的位置): odbcinst -j
  2. 通过运行以下命令列出可用的数据源名称: odbcinst -q -s

环境变量

作为良好的安全实践,您应该使用与mcp-ser位于同一目录中的.env文件来设置目标大型语言模型 API 密钥的绑定(如果您想通过 ODBC 使用 OpenLink AI 层 (OPAL))、ODBC 数据源名称 (ODBC_DSN)、用户 (ODBC_USER)、密码 (ODBC_PWD) 和 ODBC INI (ODBCINI)。

API_KEY=sk-xxx ODBC_DSN=Local Virtuoso ODBC_USER=dba ODBC_PASSWORD=dba ODBCINI=/Library/ODBC/odbc.ini

用法

工具

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

概述

姓名描述
获取模式列出连接的数据库管理系统 (DBMS) 可访问的数据库模式。
获取表列出与选定数据库模式关联的表。
描述表提供与指定数据库模式关联的表的描述。这包括有关列名、数据类型、空值处理、自动增量、主键和外键的信息。
过滤表名称根据q输入字段中的子字符串模式列出与所选数据库模式关联的表。
查询数据库执行 SQL 查询并以 JSONL 格式返回结果。
执行查询执行 SQL 查询并以 JSONL 格式返回结果。
执行查询执行 SQL 查询并以 Markdown 表格式返回结果。
spasql_查询执行SPASQL查询并返回结果。
sparql_查询执行 SPARQL 查询并返回结果。
virtuoso_support_ai与 Virtuoso 支持助手/代理进行交互——Virtuoso 特有的与 LLM 交互的功能

详细描述

  • 获取模式
    • 从连接的数据库中检索并返回所有模式名称的列表。
    • 输入参数:
      • user (字符串,可选):数据库用户名。默认为“demo”。
      • password (字符串,可选):数据库密码。默认为“demo”。
      • dsn (字符串,可选):ODBC 数据源名称。默认为“Local Virtuoso”。
    • 返回架构名称的 JSON 字符串数组。
  • 获取表
    • 检索并返回包含指定架构中表的信息的列表。如果未提供架构,则使用连接的默认架构。
    • 输入参数:
      • schema (字符串,可选):用于过滤表的数据库模式。默认为连接默认值。
      • user (字符串,可选):数据库用户名。默认为“demo”。
      • password (字符串,可选):数据库密码。默认为“demo”。
      • dsn (字符串,可选):ODBC 数据源名称。默认为“Local Virtuoso”。
    • 返回包含表信息(例如,TABLE_CAT、TABLE_SCHEM、TABLE_NAME、TABLE_TYPE)的 JSON 字符串。
  • 过滤表名称
    • 过滤并返回有关名称包含特定子字符串的表的信息。
    • 输入参数:
      • q (字符串,必需):在表名中搜索的子字符串。
      • schema (字符串,可选):用于过滤表的数据库模式。默认为连接默认值。
      • user (字符串,可选):数据库用户名。默认为“demo”。
      • password (字符串,可选):数据库密码。默认为“demo”。
      • dsn (字符串,可选):ODBC 数据源名称。默认为“Local Virtuoso”。
    • 返回包含匹配表的信息的 JSON 字符串。
  • 描述表
    • 检索并返回有关特定表的列的详细信息。
    • 输入参数:
      • schema (字符串,必需):包含表的数据库模式名称。
      • table (字符串,必需):要描述的表的名称。
      • user (字符串,可选):数据库用户名。默认为“demo”。
      • password (字符串,可选):数据库密码。默认为“demo”。
      • dsn (字符串,可选):ODBC 数据源名称。默认为“Local Virtuoso”。
    • 返回描述表的列的 JSON 字符串(例如,COLUMN_NAME、TYPE_NAME、COLUMN_SIZE、IS_NULLABLE)。
  • 查询数据库
    • 执行标准 SQL 查询并以 JSON 格式返回结果。
    • 输入参数:
      • query (字符串,必需):要执行的 SQL 查询字符串。
      • user (字符串,可选):数据库用户名。默认为“demo”。
      • password (字符串,可选):数据库密码。默认为“demo”。
      • dsn (字符串,可选):ODBC 数据源名称。默认为“Local Virtuoso”。
    • 以 JSON 字符串形式返回查询结果。
  • 查询数据库
    • 执行标准 SQL 查询并返回格式化为 Markdown 表的结果。
    • 输入参数:
      • query (字符串,必需):要执行的 SQL 查询字符串。
      • user (字符串,可选):数据库用户名。默认为“demo”。
      • password (字符串,可选):数据库密码。默认为“demo”。
      • dsn (字符串,可选):ODBC 数据源名称。默认为“Local Virtuoso”。
    • 以 Markdown 表字符串形式返回查询结果。
  • 查询数据库jsonl
    • 执行标准 SQL 查询并以 JSON 行 (JSONL) 格式返回结果(每行一个 JSON 对象)。
    • 输入参数:
      • query (字符串,必需):要执行的 SQL 查询字符串。
      • user (字符串,可选):数据库用户名。默认为“demo”。
      • password (字符串,可选):数据库密码。默认为“demo”。
      • dsn (字符串,可选):ODBC 数据源名称。默认为“Local Virtuoso”。
    • 以 JSONL 字符串形式返回查询结果。
  • spasql_查询
    • 执行 SPASQL(SQL/SPARQL 混合)查询并返回结果。这是 Virtuoso 独有的功能。
    • 输入参数:
      • query (字符串,必需):SPASQL 查询字符串。
      • max_rows (number,可选):返回的最大行数。默认为 20。
      • timeout (数字,可选):查询超时时间(以毫秒为单位)。默认为 30000。
      • user (字符串,可选):数据库用户名。默认为“demo”。
      • password (字符串,可选):数据库密码。默认为“demo”。
      • dsn (字符串,可选):ODBC 数据源名称。默认为“Local Virtuoso”。
    • 返回底层存储过程调用的结果(例如, Demo.demo.execute_spasql_query )。
  • sparql_查询
    • 执行 SPARQL 查询并返回结果。这是 Virtuoso 独有的功能。
    • 输入参数:
      • query (字符串,必需):SPARQL 查询字符串。
      • format (字符串,可选):所需的结果格式。默认为 'json'。
      • timeout (数字,可选):查询超时时间(以毫秒为单位)。默认为 30000。
      • user (字符串,可选):数据库用户名。默认为“demo”。
      • password (字符串,可选):数据库密码。默认为“demo”。
      • dsn (字符串,可选):ODBC 数据源名称。默认为“Local Virtuoso”。
    • 返回底层函数调用的结果(例如, "UB".dba."sparqlQuery" )。
  • virtuoso_support_ai
    • 使用 Virtuoso 独有的 AI 助手功能,传递提示符和可选的 API 密钥。这是 Virtuoso 独有的功能。
    • 输入参数:
      • prompt (字符串,必需):AI 功能的提示文本。
      • api_key (字符串,可选):AI 服务的 API 密钥。默认为“无”。
      • user (字符串,可选):数据库用户名。默认为“demo”。
      • password (字符串,可选):数据库密码。默认为“demo”。
      • dsn (字符串,可选):ODBC 数据源名称。默认为“Local Virtuoso”。
    • 返回 AI 支持助手函数调用的结果(例如, DEMO.DBA.OAI_VIRTUOSO_SUPPORT_AI )。

基本安装测试和故障排除

  1. 使用以下命令从 mcp-server 目录/文件夹启动检查器:
    ODBCINI=/Library/ODBC/odbc.ini npx -y @modelcontextprotocol/inspector npx tsx ./src/main.ts
  2. 单击“连接”按钮,然后单击“工具”选项卡即可开始。

MCP 应用程序使用

Claude桌面配置

该配置文件的路径为: ~{username}/Library/Application Support/Claude/claude_desktop_config.json

{ "mcpServers": { "ODBC": { "command": "/path/to/.nvm/versions/node/v21.1.0/bin/node", "args": [ "/path/to/mcp-odbc-server/node_modules/.bin/tsx", "/path/to/mcp-odbc-server/src/main.ts" ], "env": { "ODBCINI": "/Library/ODBC/odbc.ini", "NODE_VERSION": "v21.1.0", "PATH": "~/.nvm/versions/node/v21.1.0/bin:${PATH}" }, "disabled": false, "autoApprove": [] } } }

Claude 桌面使用情况

  1. 启动应用程序
  2. 通过“设置”|“开发者用户界面”应用配置(从上面)
  3. 确保您已建立与数据源名称 (DSN) 的有效 ODBC 连接
  4. 显示请求查询执行的提示,例如, Execute the following query: SELECT TOP * from Demo..Customers

Cline(Visual Studio 扩展)配置

此配置文件的路径为: ~{username}/Library/Application\ Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json

{ "mcpServers": { "ODBC": { "command": "/path/to/.nvm/versions/node/v21.1.0/bin/node", "args": [ "/path/to/mcp-odbc-server/node_modules/.bin/tsx", "/path/to/mcp-odbc-server/src/main.ts" ], "env": { "ODBCINI": "/Library/ODBC/odbc.ini", "NODE_VERSION": "v21.1.0", "PATH": "/path/to/.nvm/versions/node/v21.1.0/bin:${PATH}" }, "disabled": false, "autoApprove": [] } } }

Cline(Visual Studio 扩展)用法

  1. 使用 Shift+Command+P 打开命令面板
  2. 输入:Cline
  3. 选择:Cline View,在 VSCode 侧栏中打开 Cline UI
  4. 使用四方块图标访问安装和配置 MCP 服务器的 UI
  5. 应用 Cline 配置(从上面)
  6. 返回扩展程序的主 UI 并启动一个新任务,请求处理以下提示:“执行以下查询:SELECT TOP 5 * from Demo..Customers”

游标配置

使用设置齿轮打开配置菜单,其中包括用于注册和配置mcp servers MCP 菜单项。

游标使用

  1. 使用Command or Control + I组合键打开聊天界面
  2. 从 UI 左下角的下拉菜单中选择Agent ,因为默认的是Ask
  3. 输入您的提示,使用以下模式限定mcp-server for odbc使用: @odbc {rest-of-prompt}
  4. 单击“接受”以执行提示。

有关的

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

为任何可通过 ODBC 连接器(驱动程序)访问的数据库管理系统 (DBMS) 提供通用开放数据库连接 (ODBC)。

  1. Server Implementation
    1. Operating Environment Setup & Prerequisites
      1. Key System Components
      2. Installation
      3. unixODBC Runtime Environment Checks
      4. Environment Variables
    2. Usage
      1. Tools
      2. Basic Installation Testing & Troubleshooting
      3. MCP Application Usage
    3. Related
      ID: 4ypqmj472o