KDB+MCP服务器
一种模型上下文协议(MCP)服务器,通过PyKX向LLM提供KDB+数据库功能。该服务器使Claude等AI助手能够执行KDB+查询、管理连接和分析时间序列数据。
特性
- KDB+查询执行:执行KDB+查询并接收格式化结果
- 连接管理:具有自动重新连接功能的强大连接处理
- 数据格式:将KDB+结果转换为JSON可序列化格式
- 错误处理:通过信息性消息进行全面的错误处理
- 语法验证:执行前验证KDB+语法
- 帮助系统:KDB+功能和概念的内置帮助
- 日志记录:用于调试和监控的可配置日志记录
安装
- 先决条件:
- Python 3.8+ - KDB+实例正在运行且可访问(默认值:localhost:4000) - PyKX许可证(KDB+连接所需)
- 安装依赖项:
pip install -r requirements.txt- 配置:
为KDB+连接设置环境变量:
export KDB_HOST=localhost
export KDB_PORT=4000
export KDB_USERNAME= # Optional
export KDB_PASSWORD= # Optional
export KDB_TIMEOUT=10 # Connection timeout in seconds或者创建一个 .env 使用这些设置的文件。
用法
运行服务器
启动MCP服务器:
python kdb_server.py或者以特定模式运行:
python kdb_server.py --server # Start server mode (waits for client connections)
python kdb_server.py --test # Run connection tests备注:在服务器模式下运行时,进程将等待MCP客户端连接。这是正常行为-请参阅 用法.md 了解详情。
与Claude Desktop集成
添加到您的Claude Desktop MCP配置中:
"kdb-server": {
"command": "/opt/miniconda3/bin/conda",
"args": ["run", "-n", "env" ,"--no-capture-output", "python","/.../kdb-mcp-server/kdb_server.py", "--server"],
"env": {
"KDB_HOST": "localhost",
"KDB_PORT": "4000"
}
}MCP工具
服务器向LLM公开以下工具:
execute_query(query: str)
执行KDB+查询并返回格式化的结果。
示例:
execute_query("select from trades where price > 100")connection_status()
检查当前KDB+连接状态。
syntax_check(query: str)
在不执行的情况下验证KDB+查询语法。
help_info(topic: str)
获取有关KDB+函数、语法或概念的帮助。
可用主题: select (更多主题待添加)
建筑
组件
- KDB+连接:使用PyKX直接连接到KDB+
- FastMCP服务器:处理MCP协议通信
- JSON格式:将PyKX结果转换为JSON可序列化格式
- 环境配置:基于环境变量的配置
数据流
- LLM通过MCP协议发送查询
- 服务器在KDB上验证并执行查询+
- 结果被格式化并返回为JSON
- LLM接收结构化数据进行分析
配置
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
KDB_HOST | 本地主机 | KDB+主机地址 |
KDB_PORT | 4000 | KDB+端口号 |
KDB_USERNAME | KDB+用户名(可选) | |
KDB_PASSWORD | KDB+密码(可选) | |
KDB_TIMEOUT | 10 | 连接超时(秒) |
MCP_SERVER_NAME | kdb-mcp服务器 | mcp服务器名称 |
LOG_LEVEL | 信息 | 日志记录级别 |
工作流示例
- 连接到KDB+:
# LLM uses the connection status tool
connection_status()- 验证查询:
# LLM validates syntax before execution
syntax_check("select avg price by sym from trades")- 执行查询:
# LLM executes the validated query
execute_query("select avg price by sym from trades")- 分析结果:
LLM接收结构化的JSON数据,可以提供见解、创建可视化或建议优化。
错误处理
服务器提供全面的错误处理:
- 连接错误:自动重新连接尝试
- 查询错误:带有行号的详细错误消息
- 语法错误:执行前验证,及早发现问题
- 超时错误:可配置超时,处理优雅
发展
项目结构
kdb-mcp-server/
├── kdb_server.py # Main server implementation
├── requirements.txt # Python dependencies
├── pyproject.toml # Project metadata
├── README.md # This file
├── USAGE.md # Usage guide and examples
└── claude.md # AI assistant context添加新工具
要添加新的MCP工具:
- 定义工具功能
@mcp.tool()装饰器 - 添加适当的类型提示和文档字符串
- 实施错误处理
- 返回JSON可序列化结果
测试
测试服务器连接和功能:
python kdb_server.py --test该测试:
- KDB+连接
- 基本查询执行(1+1)
- 连接状态报告
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
贡献
- 分叉存储库
- 创建要素分支
- 添加新功能的测试
- 确保所有测试通过
- 提交拉取请求
故障排除
常见问题
- 服务器似乎挂起:这很正常-服务器正在等待MCP客户端连接。使用
--test标记以测试功能。
- 连接失败:
- 确保KDB+在指定的主机/端口上运行 - 检查防火墙设置 - 验证PyKX许可证是否有效
- 导入错误:安装依赖项
pip install -r requirements.txt
有关更多详细信息,请参阅 用法.md.
