hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Integrations
Built with FastAPI to provide a lightweight MCP server for ODBC database connections.
Provides capability to format query results as Markdown tables for better readability and visualization.
Connects to MySQL databases through PyMySQL, supporting schema exploration, table information retrieval, and query execution.
通过 SQLAlchemy 实现 MCP 服务器 ODBC
使用FastAPI 、 pyodbc和SQLAlchemy构建的轻量级 ODBC MCP (模型上下文协议) 服务器。此服务器与 Virtuoso DBMS 以及其他实现了 SQLAlchemy 提供程序的 DBMS 后端兼容。
特征
- 获取模式:从连接的数据库中获取并列出所有模式名称。
- 获取表:检索特定模式或所有模式的表信息。
- Describe Table :生成表结构的详细描述,包括:
- 列名和数据类型
- 可空属性
- 主键和外键
- 搜索表:根据名称子字符串过滤和检索表。
- 执行存储过程:在 Virtuoso 的情况下,执行存储过程并检索结果。
- 执行查询:
- JSONL 结果格式:针对结构化响应进行了优化。
- Markdown 表格格式:适合报告和可视化。
先决条件
- 安装 uv :或者使用 Homebrew:CopyCopy
- unixODBC 运行时环境检查:
- 通过运行以下命令检查安装配置(即关键 INI 文件的位置):
odbcinst -j
- 通过运行以下命令列出可用的数据源名称:
odbcinst -q -s
- ODBC DSN 设置:为目标数据库配置 ODBC 数据源名称 (
~/.odbc.ini
)。以 Virtuoso DBMS 为例:Copy - SQLAlchemy URL 绑定:使用格式:Copy
安装
克隆此存储库:
环境变量
通过覆盖默认值来更新您的.env
以符合您的偏好
配置
对于Claude Desktop用户:将以下内容添加到claude_desktop_config.json
:
用法
数据库管理系统 (DBMS) 连接 URL
以下是使用此 mcp-server 测试过的用于连接 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 的 AI 功能。 |
提供的工具
概述
姓名 | 描述 |
---|---|
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 支持助手/代理进行交互——Virtuoso 特有的与 LLM 交互的功能 |
详细描述
- podbc_get_schemas
- 从连接的数据库中检索并返回所有模式名称的列表。
- 输入参数:
user
(字符串,可选):数据库用户名。默认为“demo”。password
(字符串,可选):数据库密码。默认为“demo”。dsn
(字符串,可选):ODBC 数据源名称。默认为“Local Virtuoso”。
- 返回架构名称的 JSON 字符串数组。
- podbc_get_tables
- 检索并返回包含指定架构中表的信息的列表。如果未提供架构,则使用连接的默认架构。
- 输入参数:
schema
(字符串,可选):用于过滤表的数据库模式。默认为连接默认值。user
(字符串,可选):数据库用户名。默认为“demo”。password
(字符串,可选):数据库密码。默认为“demo”。dsn
(字符串,可选):ODBC 数据源名称。默认为“Local Virtuoso”。
- 返回包含表信息(例如,TABLE_CAT、TABLE_SCHEM、TABLE_NAME、TABLE_TYPE)的 JSON 字符串。
- 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 行 (JSONL) 格式返回结果(每行一个 JSON 对象)。
- 输入参数:
query
(字符串,必需):要执行的 SQL 查询字符串。user
(字符串,可选):数据库用户名。默认为“demo”。password
(字符串,可选):数据库密码。默认为“demo”。dsn
(字符串,可选):ODBC 数据源名称。默认为“Local Virtuoso”。
- 以 JSONL 字符串形式返回查询结果。
- podbc_spasql_query
- 执行 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
)。
- podbc_sparql_query
- 执行 SPARQL 查询并返回结果。这是 Virtuoso 独有的功能。
- 输入参数:
query
(字符串,必需):SPARQL 查询字符串。format
(字符串,可选):所需的结果格式。默认为 'json'。timeout
(数字,可选):查询超时时间(以毫秒为单位)。默认为 30000。user
(字符串,可选):数据库用户名。默认为“demo”。password
(字符串,可选):数据库密码。默认为“demo”。dsn
(字符串,可选):ODBC 数据源名称。默认为“Local Virtuoso”。
- 返回底层函数调用的结果(例如,
"UB".dba."sparqlQuery"
)。
- podbc_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 检查器:Copy
- 启动检查器:Copy
访问提供的 URL 来排除服务器交互故障。
You must be authenticated.
Tools
提供 SQLAlchemy(通过 pyodbc)与任何可通过 SQLAlchemy 访问的数据库管理系统 (DBMS) 的连接。