______________________________________________________________________
通过SQLAlchemy实现MCP服务器ODBC
一个用于ODBC的轻量级MCP(模型上下文协议)服务器 快速 API, pyodbc,以及 SQL炼金术此服务器与Virtuoso DBMS和实现SQLAlchemy提供程序的其他DBMS后端兼容。
______________________________________________________________________
特性
- 获取架构:从连接的数据库中获取并列出所有架构名称。
- 获取表格:检索特定架构或所有架构的表信息。
- 描述表:生成表结构的详细描述,包括:
- 列名和数据类型 - 可为空的属性 - 主键和外键
- 搜索表:根据名称子字符串筛选和检索表。
- 执行存储过程:对于Virtuoso,执行存储过程并检索结果。
- 执行查询:
- JSONL结果格式:针对结构化响应进行了优化。 - Markdown表格格式:非常适合报告和可视化。
______________________________________________________________________
先决条件
- 安装uv:
pip install uv或者使用Homebrew:
brew install uv- unixODBC运行时环境检查:
- 通过运行以下命令检查安装配置(即关键INI文件的位置):
odbcinst -j
- 通过运行以下命令列出可用的数据源名称:
odbcinst -q -s
- ODBC DSN设置:配置ODBC数据源名称(
~/.odbc.ini)对于目标数据库。Virtuoso DBMS示例:
[VOS]
Description = OpenLink Virtuoso
Driver = /path/to/virtodbcu_r.so
Database = Demo
Address = localhost:1111
WideAsUTF16 = Yes- 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_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服务器测试过的DBMS系统的pyodbc URL示例。
| 数据库 | URL格式 |
|---|---|
| Virtuoso数据库管理系统 | 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的人工智能功能。
提供的工具
概述
| 名称 | 描述 |
|---|---|
| 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支持助手/代理交互——Virtuosoo与LLM交互的特定功能 |
详细描述
- podbc_get_schemas
- 从连接的数据库中检索并返回所有架构名称的列表。 - 输入参数: - user (字符串,可选):数据库用户名。默认为“demo”。 - password (字符串,可选):数据库密码。默认为“demo”。 - dsn (字符串,可选):ODBC数据源名称。默认为“本地Virtuoso”。 - 返回模式名称的JSON字符串数组。
- podbc_get_tables
- 检索并返回一个包含指定架构中表信息的列表。如果没有提供架构,则使用连接的默认架构。 - 输入参数: - schema (字符串,可选):用于筛选表的数据库架构。默认为连接默认值。 - user (字符串,可选):数据库用户名。默认为“demo”。 - password (字符串,可选):数据库密码。默认为“demo”。 - dsn (字符串,可选):ODBC数据源名称。默认为“本地Virtuoso”。 - 返回一个包含表信息的JSON字符串(例如,table_CAT、table_CHEM、table_NAME、table_TYPE)。
- podbc_filter_table_names
- 过滤并返回有关名称包含特定子字符串的表的信息。 - 输入参数: - q (string,必填):在表名中搜索的子字符串。 - schema (字符串,可选):用于筛选表的数据库架构。默认为连接默认值。 - user (字符串,可选):数据库用户名。默认为“demo”。 - password (字符串,可选):数据库密码。默认为“demo”。 - dsn (字符串,可选):ODBC数据源名称。默认为“本地Virtuoso”。 - 返回一个JSON字符串,其中包含匹配表的信息。
- podbc_describe_table
- 检索并返回特定表的列的详细信息。 - 输入参数: - schema (字符串,必填):包含表的数据库架构名称。 - table (string,必填):要描述的表的名称。 - user (字符串,可选):数据库用户名。默认为“demo”。 - password (字符串,可选):数据库密码。默认为“demo”。 - dsn (字符串,可选):ODBC数据源名称。默认为“本地Virtuoso”。 - 返回一个描述表列的JSON字符串(例如,COLUMN_NAME、TYPE_NAME、COLUMN_SIZE、IS_NULABLE)。
- podbc_query_database
- 执行标准SQL查询并以JSON格式返回结果。 - 输入参数: - query (string,必填):要执行的SQL查询字符串。 - user (字符串,可选):数据库用户名。默认为“demo”。 - password (字符串,可选):数据库密码。默认为“demo”。 - dsn (字符串,可选):ODBC数据源名称。默认为“本地Virtuoso”。 - 以JSON字符串形式返回查询结果。
- podbc_query_database_md
- 执行标准SQL查询并返回Markdown表格式的结果。 - 输入参数: - query (string,必填):要执行的SQL查询字符串。 - user (字符串,可选):数据库用户名。默认为“demo”。 - password (字符串,可选):数据库密码。默认为“demo”。 - dsn (字符串,可选):ODBC数据源名称。默认为“本地Virtuoso”。 - 以Markdown表字符串的形式返回查询结果。
- podbc_query_database_sonl
- 执行标准SQL查询,并以JSONL格式返回结果(每行一个JSON对象)。 - 输入参数: - query (string,必填):要执行的SQL查询字符串。 - user (字符串,可选):数据库用户名。默认为“demo”。 - password (字符串,可选):数据库密码。默认为“demo”。 - dsn (字符串,可选):ODBC数据源名称。默认为“本地Virtuoso”。 - 以JSONL字符串形式返回查询结果。
- podbc_spasql_query
- 执行SPASQL(SQL/SPARQL混合)查询返回结果。这是Virtuoso特有的功能。 - 输入参数: - query (string,必填):SPASQL查询字符串。 - max_rows (number,可选):要返回的最大行数。默认值为20。 - timeout (number,可选):查询超时(毫秒)。默认值为30000。 - user (字符串,可选):数据库用户名。默认为“demo”。 - password (字符串,可选):数据库密码。默认为“demo”。 - dsn (字符串,可选):ODBC数据源名称。默认为“本地Virtuoso”。 - 返回底层存储过程调用的结果(例如。, Demo.demo.execute_spasql_query).
- podbc_sparql_query
- 执行SPARQL查询并返回结果。这是Virtuoso特有的功能。 - 输入参数: - query (string,必填):SPARQL查询字符串。 - format (字符串,可选):所需的结果格式。默认为“json”。 - timeout (number,可选):查询超时(毫秒)。默认值为30000。 - user (字符串,可选):数据库用户名。默认为“demo”。 - password (字符串,可选):数据库密码。默认为“demo”。 - dsn (字符串,可选):ODBC数据源名称。默认为“本地Virtuoso”。 - 返回底层函数调用的结果(例如。, "UB".dba."sparqlQuery").
- podbc_virtuoso_support_ai
- 使用特定于Virtuoso的AI助手功能,传递提示和可选的API键。这是Virtuoso特有的功能。 - 输入参数: - prompt (string,必填):AI函数的提示文本。 - api_key (字符串,可选):AI服务的API密钥。默认为“无”。 - user (字符串,可选):数据库用户名。默认为“demo”。 - password (字符串,可选):数据库密码。默认为“demo”。 - dsn (字符串,可选):ODBC数据源名称。默认为“本地Virtuoso”。 - 返回AI Support Assistant函数调用的结果(例如。, DEMO.DBA.OAI_VIRTUOSO_SUPPORT_AI).
______________________________________________________________________
故障排除
为了更容易进行故障排除:
- 安装MCP检查器:
npm install -g @modelcontextprotocol/inspector- 启动检查器:
npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-sqlalchemy-server run mcp-sqlalchemy-server访问提供的URL以排除服务器交互故障。
