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 连接器。我们强烈建议您贡献与其他数据库管理系统相关的代码和使用演示,以便将其纳入本项目。
关键系统组件
- 检查 node.js 版本;如果不是 21.1.0,请使用以下命令进行升级或安装:
nvm install v21.1.0
- 使用以下命令安装 MCP 组件:
npm install @modelcontextprotocol/sdk zod tsx odbc dotenv
- 使用以下命令设置
nvm
版本:nvm alias default 21.1.0
安装
- 运行
git clone https://github.com/OpenLinkSoftware/mcp-odbc-server.git
- 更改目录
cd mcp-odbc-server
- 运行
npm init -y
- 将条目
"type":"module"
添加到package.json
文件 - 运行
npm install @modelcontextprotocol/sdk zod tsx odbc dotenv
unixODBC 运行时环境检查
- 通过运行以下命令检查安装配置(即关键 INI 文件的位置):
odbcinst -j
- 通过运行以下命令列出可用的数据源名称:
odbcinst -q -s
环境变量
作为良好的安全实践,您应该使用与mcp-ser
位于同一目录中的.env
文件来设置目标大型语言模型 API 密钥的绑定(如果您想通过 ODBC 使用 OpenLink AI 层 (OPAL))、ODBC 数据源名称 (ODBC_DSN)、用户 (ODBC_USER)、密码 (ODBC_PWD) 和 ODBC INI (ODBCINI)。
用法
工具
安装成功后,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
)。
基本安装测试和故障排除
- 使用以下命令从 mcp-server 目录/文件夹启动检查器:Copy
- 单击“连接”按钮,然后单击“工具”选项卡即可开始。
MCP 应用程序使用
Claude桌面配置
该配置文件的路径为: ~{username}/Library/Application Support/Claude/claude_desktop_config.json
。
Claude 桌面使用情况
- 启动应用程序
- 通过“设置”|“开发者用户界面”应用配置(从上面)
- 确保您已建立与数据源名称 (DSN) 的有效 ODBC 连接
- 显示请求查询执行的提示,例如,
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
Cline(Visual Studio 扩展)用法
- 使用 Shift+Command+P 打开命令面板
- 输入:Cline
- 选择:Cline View,在 VSCode 侧栏中打开 Cline UI
- 使用四方块图标访问安装和配置 MCP 服务器的 UI
- 应用 Cline 配置(从上面)
- 返回扩展程序的主 UI 并启动一个新任务,请求处理以下提示:“执行以下查询:SELECT TOP 5 * from Demo..Customers”
游标配置
使用设置齿轮打开配置菜单,其中包括用于注册和配置mcp servers
MCP 菜单项。
游标使用
- 使用
Command or Control + I
组合键打开聊天界面 - 从 UI 左下角的下拉菜单中选择
Agent
,因为默认的是Ask
- 输入您的提示,使用以下模式限定
mcp-server for odbc
使用:@odbc {rest-of-prompt}
- 单击“接受”以执行提示。
有关的
This server cannot be installed
为任何可通过 ODBC 连接器(驱动程序)访问的数据库管理系统 (DBMS) 提供通用开放数据库连接 (ODBC)。