nxmcp-NexusDB MCP服务器
MCP(模型上下文协议)服务器,使AI助手能够与NexusDB数据库交互。该服务器使用Delphi构建,将NexusDB操作作为MCP工具和资源公开。
特性
- 双重运输 -HTTP和STDIO(适用于Claude Desktop和其他MCP客户端)
- 查询执行 -运行SELECT查询并以JSON格式检索结果
- 数据操作 -插入、更新和删除记录
- 模式管理 -创建表、添加列、管理索引
- 数据库管理 -在运行时切换数据库和服务器,列出别名
- 发现 -列出表、查看模式、获取表结构、列出索引
- 效用 -统计记录,显示查询执行计划
需求
- Delphi(RAD Studio 13)与NexusDB Komponente
- NexusDB NXserver正在运行并可访问
- https://github.com/GDKsoftware/Delphi-MCP-Server(可能有其他存款)
- https://github.com/viniciussanchez/dataset-serialize
- Windows操作系统
配置
首次运行时,配置文件 {programname}.ini -默认值 nxmcp.ini -在可执行文件旁边自动创建默认值。编辑它以配置NexusDB连接和MCP服务器:
[Connection]
; NXserver host address
ServerHost=localhost
; NXserver port (default: 16000)
ServerPort=16000
[Database]
; Database alias as configured on the NXserver
AliasName=YourAlias
; Table passwords, comma separated (leave empty if not used)
TablePassword=
[Authentication]
; NexusDB username
Username=your_username
; NexusDB password
Password=your_password
[Options]
; Automatically connect on startup (1=yes, 0=no)
AutoConnect=1
; Connection timeout in milliseconds
Timeout=3000
[Server]
; MCP server configuration
Port=3000
Host=localhost
Name=nxmcp
Version=1.0.0
Endpoint=/mcp
[CORS]
; Cross-Origin Resource Sharing configuration
Enabled=1
; Comma-separated list of allowed origins
AllowedOrigins=http://localhost,http://127.0.0.1,https://localhost,https://127.0.0.1
[SSL]
; SSL/TLS configuration (optional)
Enabled=0
CertFile=
KeyFile=
RootCertFile=建筑
- 打开
Source/nxmcp.dpr在德尔福 - 确保NexusDB组件和MCP库在您的搜索路径中
- 构建项目(Ctrl+F9)
跑步
HTTP传输(默认)
nxmcp.exe服务器启动于 http://localhost:3000/mcp 默认情况下。
STDIO传输
nxmcp.exe --stdio使用stdin/stdout进行JSON-RPC通信。Claude Desktop和其他使用STDIO传输的MCP客户端需要。
可用工具
查询和发现
| 工具 | 说明 | 参数 |
|---|---|---|
execute_query | 运行SELECT查询 | sql |
get_table_schema | 获取表结构 | tableName |
数据操作
| 工具 | 说明 | 参数 |
|---|---|---|
get_table_data | 使用分页读取表数据 | tableName, maxRows?, offset?, orderBy? |
insert_record | 插入新记录 | tableName, data (JSON字符串) |
update_records | 更新匹配记录 | tableName, data (JSON字符串), whereClause |
delete_records | 删除匹配的记录 | tableName, whereClause |
execute_sql | 运行INSERT/UPDATE/DELETE | sql |
模式管理
| 工具 | 说明 | 参数 |
|---|---|---|
create_table | 创建新表 | tableName, columns (JSON数组) |
drop_table | 删除表格 | tableName |
copy_table | 克隆表 | sourceTable, targetTable, copyData? |
rename_table | 重命名表 | oldName, newName |
add_column | 添加列 | tableName, columnName, columnType, size?, defaultValueType? |
drop_column | 删除列 | tableName, columnName |
modify_column | 修改列 | tableName, columnName, newType?, newSize?, newName? |
create_index | 创建索引 | tableName, indexName, columns, unique? |
drop_index | 删除索引 | tableName, indexName |
表维护
| 工具 | 说明 | 参数 |
|---|---|---|
empty_table | 删除所有记录(保留结构) | tableName |
pack_table | 压缩表,回收已删除的空间 | tableName |
reindex_table | 重建索引 | tableName, indexName |
recover_table | 从损坏的表中恢复记录 | tableName |
change_password | 更改表密码 | tableName, oldPassword, newPassword |
get_autoinc_value | 获取下一个自动增量值 | tableName |
交易
| 工具 | 说明 | 参数 |
|---|---|---|
batch_execute | 在一个事务中执行多个SQL | statements (JSON数组), snapshot? |
效用
| 工具 | 说明 | 参数 |
|---|---|---|
count_records | 通过元数据快速记录计数 | tableName |
list_indexes | 列出表上的所有索引 | tableName |
explain_query | 显示查询执行计划 | sql |
数据库管理
| 工具 | 说明 | 参数 |
|---|---|---|
list_aliases | 列出服务器上可用的数据库别名 | _(无)_ |
switch_database | 切换到其他数据库别名 | aliasName, tablePassword? |
switch_server | 切换到其他NexusDB服务器 | serverHost, serverPort?, aliasName?, tablePassword? |
可用资源
| URI | 描述 |
|---|---|
nexusdb://server | 连接状态和服务器信息 |
nexusdb://tables | 所有表格列表 |
nexusdb://schema | 带有记录计数的架构概述 |
列类型
对于 create_table 和 add_column:
AutoInc-自动递增整数ShortString-ANSI字符串(指定大小)WideString-Unicode字符串(指定大小)Integer-32位整数Int64-64位整数Word-16位无符号Byte-8位无符号Boolean-正确/错误Float-双精度Currency-货币类型DateTime-日期和时间Date-仅限日期Time-仅限时间Blob-二进制数据Memo-大文本
默认值类型
对于 add_column:
CurrentDateTime-自动填充当前时间戳CurrentUser-自动填充当前用户
语句切换
在SQL语句前添加开关以控制执行:
| 开关 | 语法 | 目的 |
|---|---|---|
#T | #T 5000 | 超时(毫秒) |
#I | #I- | 禁用索引优化 |
#S | #S- | 禁用查询简化 |
#L | #L+ | 启用查询日志记录(由使用 explain\_query) |
#B | #B+ | 强制BLOB复制 |
例子: #T 10000 SELECT * FROM LargeTable WHERE Status = 'Active'
示例用法
创建表
{
"name": "create_table",
"arguments": {
"tableName": "Customers",
"columns": "[{"name":"ID","type":"AutoInc"},{"name":"Name","type":"ShortString","size":100},{"name":"Email","type":"ShortString","size":255}]"
}
}插入一条记录
{
"name": "insert_record",
"arguments": {
"tableName": "Customers",
"data": "{"Name":"John Doe","Email":"john@example.com"}"
}
}查询数据
{
"name": "execute_query",
"arguments": {
"sql": "SELECT * FROM Customers WHERE Name LIKE 'J%'"
}
}与Claude Code集成
HTTP传输
claude mcp add --transport http nxmcp http://localhost:3000/mcpSTDIO传输
claude mcp add nxmcp -- /path/to/nxmcp.exe --stdio与Claude Desktop集成
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"nxmcp": {
"command": "C:\\path\\to\\nxmcp.exe",
"args": ["--stdio"]
}
}
}许可证
MIT许可证(MIT)
版权所有 (c) 2025 Dr. Pfau Fernwirktechnik GmbH
特此免费授予任何获得本软件和相关文档文件(“软件”)副本的人在不受限制的情况下处理软件的权限,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,以及允许获得软件的人这样做,但须符合以下条件:
上述版权声明和本许可声明应包含在软件的所有副本或实质部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者或版权持有人均不对因软件或软件的使用或其他交易而产生或与之相关的任何索赔、损害赔偿或其他责任承担责任,无论是在合同、侵权或其他诉讼中。
