一个基于模型上下文协议(Model Context Protocol)的KDB.AI MCP服务器,通过自然语言与KDB.AI进行交互,实现无缝的向量数据库操作、向量相似性搜索、混合搜索操作以及高级数据分析。
构建于可扩展框架之上,并具有可配置模板,允许通过自定义集成来直观地扩展,以满足特定的向量搜索和AI驱动的数据需求。该服务器利用精心策划的资源、智能提示和强大的工具,为与KDB.AI交互的AI模型提供适当的指导。
下表显示了支持的操作系统安装选项:
| 主要操作系统 | KDB.AI | MCP服务器 | UV/NPX | Claude Desktop | 替代MCP客户端 |
|---|---|---|---|---|---|
| Mac | ✅ Docker | ✅ 本地 | ✅ 本地 | ✅ 本地 (streamable-http/stdio) | ✅ 其他客户端 |
| Linux | ✅ Docker | ✅ 本地 | ✅ 本地 | ❌ 不支持 | ✅ 其他客户端 |
| WSL | ✅ Docker | ✅ 本地 | ✅ 本地 | ❌ 不支持 | ✅ 其他客户端 |
| Windows | ✅ Docker | ✅ 本地 | ✅ 本地 | ✅ 本地 (仅streamable-http) | ✅ 其他客户端 |
| Windows | ✅ Docker | ⚠️ WSL | ✅ 本地 | ✅ 本地 (仅streamable-http) | ✅ 其他客户端 |
在安装和运行KDB.AI MCP服务器之前,请确保您已经:
streamable-http传输与Claude Desktop通信
npx——请参阅所选MCP客户端的文档npx随nodejs安装程序捆绑在一起——适用于Windows/Mac/Linux/WSL为了简化开始,我们建议在同一内部网络中运行您的MCP客户端、KDB.AI MCP服务器和KDB.AI数据库。有关更多信息,请参阅安全注意事项。
为了演示KDB.AI MCP服务器的基本用法,使用空的KDB.AI数据库,请按照以下快速入门步骤操作。
注意:确保您已遵循必要的前提条件步骤
启动您的KDB.AI服务器——请按照KDB.AI服务器设置指南中的入门步骤操作。
测试与KDB.AI服务器的连接
如果您按照第1步设置了KDB.AI服务器,您的端点将是http://localhost:8082,否则更新为您配置的端点。
uv run --with kdbai-client --python=3.12 python -c "import kdbai_client as kx; session = kx.Session(endpoint='http://localhost:8082'); print(session.version())"
如果您看到如下响应,说明您的KDB.AI服务器配置正确——请继续下一步。如果看到不同的版本号也是可以的。
{'serverVersion': 'latest', 'clientMinVersion': '1.7.0', 'clientMaxVersion': 'latest'}
如果您收到类似于“创建连接时出错...”的消息,这通常表示:
请参阅故障排除部分获取更多详细信息
配置Claude Desktop以选择您所需的传输方式。
配置嵌入以选择您所需的嵌入提供商和模型。
如果您已使用stdio传输配置了Claude Desktop,则无需执行此步骤。请进入下一步(Claude Desktop将为您管理启动MCP服务器)。
uv run mcp-server
启动Claude Desktop并验证验证Claude Desktop配置部分中概述的工具和提示是否可见。
按照KDB.AI快速入门指南创建一些表并添加一些数据。
加载kdbai_operations_guidance资源。这将为您提供MCP客户端如何与您的KDB.AI数据库交互的一些指导。
尝试kdbai_table_analysis提示并生成您表之一的分析提示。
使用自然语言提问:使用简单的英语与您的KDB.AI数据库进行交互。您的MCP客户端将使用可用工具中的一个或多个来回答您的问题。
git clone https://github.com/KxSystems/kdbai-mcp-server.git
cd kdbai-mcp-server
uv sync
此步骤是可选的,但在首次启动MCP服务器或添加新依赖项后可能会很有用。
如果您没有先运行uv sync,MCP客户端可能会超时等待依赖项被安装。
这可能是由于像sentence-transformers这样的大型依赖项包引起的。
uv run mcp-server
有关支持的传输的更多信息,请参阅官方文档
注意:我们不支持sse传输(服务器发送事件),因为它自协议版本2024-11-05起已被弃用。
为了简化开始,我们建议在同一内部网络中运行您的MCP客户端、KDB.AI MCP服务器和KDB.AI数据库。
如果您需要在KDB.AI MCP服务器和KDB.AI数据库之间加密连接,您可以启用以下选项:
--db.qipc-tls=true--db.rest-protocol=https两者都需要在KDB.AI前面设置一个TLS/HTTPS代理(envoy,nginx)作为前提条件:
KX_SSL_CA_CERT_FILE环境变量指向代理正在使用的CA证书文件KX_SSL_VERIFY_SERVER=NO来绕过证书验证,用于开发和测试如果您需要在MCP客户端和KDB.AI MCP服务器之间加密连接:
streamable-http传输,并在127.0.0.1:7000启动一个本地服务器。我们不建议将其暴露在外。stdio传输时,由于通信是通过同一主机上的标准输入/输出流进行的,因此不需要此操作KDB.AI MCP服务器提供了详细的帮助文本,解释了所有配置选项。
uv run mcp-server -h
usage: mcp-server [-h] [--mcp.server-name str] [--mcp.log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}]
[--mcp.transport {stdio,streamable-http}] [--mcp.port int] [--mcp.host str] [--db.host str]
[--db.port int] [--db.username str] [--db.password SecretStr] [--db.mode {rest,qipc}]
[--db.rest-protocol {http,https}] [--db.qipc-tls bool] [--db.database-name str] [--db.retry int]
[--db.k int] [--db.vector-weight float] [--db.sparse-weight float] [--db.embedding-csv-path str]
KDB.AI MCP Server that enables interaction with KDB.AI
options:
-h, --help 显示此帮助消息并退出
mcp选项:
MCP服务器配置和传输设置
--mcp.server-name str
MCP服务器实例的名称标识符 [env: KDBAI_MCP_SERVER_NAME] (默认值:KDBAI_MCP_Server)
--mcp.log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}
日志记录详细级别 [env: KDBAI_MCP_LOG_LEVEL] (默认值:INFO)
--mcp.transport {stdio,streamable-http}
通信协议:'stdio'(管道)或'streamable-http'(HTTP服务器) [env: K-DBAI_MCP_TRANSPORT] (默认值:streamable-http)
--mcp.port int HTTP服务器端口 - 在使用stdio传输时忽略 [env: KDBAI_MCP_PORT] (默认值:7000)
--mcp.host str HTTP服务器绑定地址 - 在使用stdio传输时忽略 [env: KDBAI_MCP_HOST] (默认值:127.0.0.1)
数据库选项:
KDB.AI数据库连接和搜索配置
--db.host str KDB.AI服务器主机名或IP地址 [env: KDBAI_DB_HOST] (默认值:127.0.0.1)
--db.port int KDB.AI服务器端口号 [env: KDBAI_DB_PORT] (默认值:8082)
--db.username str KDB.AI认证用户名 [env: KDBAI_DB_USERNAME] (默认值:)
--db.password SecretStr
KDB.AI认证密码 [env: KDBAI_DB_PASSWORD] (默认值:)
--db.mode {rest,qipc}
API模式:'qipc'(快速二进制协议)或'rest'(HTTP API) [env: KDBAI_DB_MODE] (默认值:qipc)
--db.rest-protocol {http,https}
选择REST模式的协议,不考虑QIPC模式 [env: KDBAI_DB_REST_PROTOCOL] (默认值:http)
--db.qipc-tls bool 启用QIPC模式的TLS,不考虑REST模式。当使用QIPC的TLS时,您需要设置环境变量`KX_SSL_CA_CERT_FILE`,指向您的TLS代理正在使用的本地文件系统上的证书。对于本地开发和测试,您可以设置`KX_SSL_VERIFY_SERVER=NO`以绕过此要求 [env: KDBAI_DB_QIPC_TLS] (默认值:False)
--db.database-name str
操作使用的默认数据库名称 [env: KDBAI_DB_DATABASE_NAME] (默认值:default)
--db.retry int 失败时的连接重试次数 [env: KDBAI_DB_RETRY] (默认值:2)
--db.k int 向量搜索返回的结果数量 [env: KDBAI_DB_K] (默认值:5)
--db.vector-weight float
混合搜索中的向量相似性权重(0.0-1.0) [env: KDBAI_DB_VECTOR_WEIGHT] (默认值:0.7)
--db.sparse-weight float
混合搜索中的文本相似性权重(0.0-1.0) [env: KDBAI_DB_SPARSE_WEIGHT] (默认值:0.3)
--db.embedding-csv-path str
嵌入csv路径 [env: KDBAI_DB_EMBEDDING_CSV_PATH] (默认值:src/mcp_server/utils/embeddings.csv)
命令行选项分为两个主要类别:
有关每个选项的详细信息,请参阅帮助文本
配置值按以下优先级顺序解析:
settings.py中定义的默认值每个命令行选项都有一个对应的环境变量。例如:
--mcp.port 8000 ↔ KDBAI_MCP_PORT=8000--db.host localhost ↔ KDBAI_DB_HOST=localhost# 使用默认值
uv run mcp-server
# 使用.env文件
echo "KDBAI_MCP_PORT=8080" >> .env
echo "KDBAI_DB_RETRY=4" >> .env
uv run mcp-server
# 使用环境变量
export KDBAI_MCP_PORT=8080
export KDBAI_DB_RETRY=4
uv run mcp-server
# 使用命令行参数
uv run mcp-server \
--mcp.port 8080 \
--db.retry 4
在启动KDB.AI MCP服务器之前,如果您希望使用相似性搜索,必须为您的表配置嵌入模型。 该仓库包括两个现成可用的嵌入提供商:OpenAI和SentenceTransformers。 您可以根据需要自定义这些实现,或者