通用SQL MCP服务器
一种模型上下文协议(MCP)服务器,提供通过ODBC与普适SQL数据库交互的工具。
先决条件
- 通用ODBC驱动程序 -必须在Windows系统上安装和配置
- DSN配置 -通过ODBC数据源管理器创建系统或用户DSN
- Node.js -版本18或更高版本
- Visual Studio生成工具 -编译所需
odbc本机模块(C++工作负载)
安装
# Install dependencies
npm install
# Build the project
npm run build故障排除 odbc 安装
如果 npm install 失败,出现C++/MMSBuild错误:
- 安装 Visual Studio生成工具
- 选择“用C++进行桌面开发”工作负载
- 重新启动终端并重试
npm install
用法
环境变量(推荐)
设置默认DSN,这样您就不需要在每次工具调用时都指定它:
$env:PERVASIVE_DSN = "YourPervasiveDsnName"运行服务器
开发模式:
npm run dev生产方式:
npm run build
npm startMCP主机配置
适用于Cursor/Claude桌面
添加到MCP设置JSON:
{
"mcpServers": {
"pervasive-sql": {
"command": "node",
"args": ["C:\\Repos\\pervasive-mcp\\dist\\index.js"],
"env": {
"PERVASIVE_DSN": "YourPervasiveDsnName"
}
}
}
}或者使用npx和tsx进行开发:
{
"mcpServers": {
"pervasive-sql": {
"command": "npx",
"args": ["tsx", "C:\\Repos\\pervasive-mcp\\src\\index.ts"],
"env": {
"PERVASIVE_DSN": "YourPervasiveDsnName"
}
}
}
}可用工具
连接与测试
| 工具 | 说明 |
|---|---|
test_connection | 验证数据库连接并返回连接信息 |
询问
| 工具 | 说明 |
|---|---|
query | 执行任意SQL(SELECT、INSERT、UPDATE、DELETE等) |
execute_batch | 按顺序执行多个SQL语句 |
get_table_sample | 从表中快速获取行示例 |
get_row_count | 使用可选的WHERE子句计算表中的行数 |
架构发现
| 工具 | 说明 |
|---|---|
list_tables | 使用ODBC元数据列出表/视图 |
describe_table | 获取表的列详细信息 |
get_primary_keys | 获取表的主键列 |
get_foreign_keys | 获取外键关系 |
get_indexes | 获取表的索引信息 |
数据库元数据
| 工具 | 说明 |
|---|---|
get_catalogs | 列出可用的数据库目录 |
get_schemas | 列出可用架构 |
get_type_info | 获取支持的SQL数据类型 |
get_table_statistics | 获取基数和统计信息 |
存储过程
| 工具 | 说明 |
|---|---|
get_stored_procedures | 列出存储过程 |
get_procedure_columns | 获取程序参数 |
execute_procedure | 执行存储过程 |
刀具参数
所有工具都接受这些可选连接参数:
dsn-ODBC DSN名称(回退到PERVASIVE_DSN任何人)username-数据库用户名(如果需要)password-数据库密码(如果需要)
例子
测试连接
Use test_connection to verify I can connect to the database列出所有表格
Use list_tables to show me all tables in the database描述一张桌子
Use describe_table with table "CUSTOMERS" to show the column structure运行查询
Use query with sql "SELECT TOP 10 * FROM CUSTOMERS WHERE STATUS = 'A'"获取行数
Use get_row_count with table "ORDERS" and where "ORDER_DATE > '2024-01-01'"执行存储过程
Use execute_procedure with procedure "sp_GetCustomerOrders" and parameters ["CUST001"]安全说明
- 连接凭据可以通过每次工具调用或环境变量传递
- 服务器在本地运行,并通过stdio进行通信(无网络暴露)
- 谨慎对待
query和execute_batch工具-它们可以运行任何SQL,包括DELETE/DROP
许可证
麻省理工学院
