使用说明
Qlikmcp
Qlik Cloud的MCP(模型上下文协议)服务器,使Claude等人工智能助手能够与您的Qlik分析平台进行交互。
特性
- 数据提取:列出应用程序、工作表、可视化并从图表中提取数据
- 表达式求值:实时计算Qlik表达式
- 应用管理:触发重新加载,检查重新加载状态
- 空间和文件:浏览空间和数据文件
- 自动化:列出并触发Qlik自动化
先决条件
- 灵丹妙药1.18+
- 拥有API访问权限的Qlik云租户
- Qlik Cloud API密钥
安装
作为独立服务器
- 克隆此存储库:
git clone https://github.com/Balneario-de-Cofrentes/qlik_mcp.git
cd qlik_mcp
- 安装依赖项:
mix deps.get
- 配置您的Qlik Cloud凭据:
export QLIK_API_KEY="your-api-key"
export QLIK_TENANT_URL="https://your-tenant.region.qlikcloud.com"
- 启动服务器:
mix run --no-halt
MCP服务器将在 http://localhost:4100/mcp.
macOS上的自动启动(launchd)
为了方便起见,您可以使用macOS launchd将MCP服务器配置为在登录时自动启动。
- 在以下位置创建启动脚本
~/.local/bin/qlik-mcp-start:
#!/bin/bash
export HOME="$HOME"
export PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin"
# If using asdf for Elixir version management:
# source /opt/homebrew/opt/asdf/libexec/asdf.sh
# Set Qlik credentials
export QLIK_API_KEY="your-api-key"
export QLIK_TENANT_URL="https://your-tenant.region.qlikcloud.com"
cd /path/to/qlik-cloud-mcp
exec mix run --no-halt
使其可执行:
chmod +x ~/.local/bin/qlik-mcp-start
- 在以下位置创建launchd plist
~/Library/LaunchAgents/com.qlik-mcp.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.org/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.qlik-mcp</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>/Users/YOUR_USERNAME/.local/bin/qlik-mcp-start</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/Users/YOUR_USERNAME/.local/log/qlik-mcp.log</string>
<key>StandardErrorPath</key>
<string>/Users/YOUR_USERNAME/.local/log/qlik-mcp.error.log</string>
</dict>
</plist>
- 创建日志目录并加载服务:
mkdir -p ~/.local/log
launchctl load ~/Library/LaunchAgents/com.qlik-mcp.plist
- 管理服务:
# Check status
launchctl list | grep qlik
# Stop
launchctl unload ~/Library/LaunchAgents/com.qlik-mcp.plist
# Start
launchctl load ~/Library/LaunchAgents/com.qlik-mcp.plist
# View logs
tail -f ~/.local/log/qlik-mcp.log
作为依赖
添加到您的 mix.exs:
def deps do
[
{:qlik_mcp, "~> 0.2.0"}
]
end
配置
超时设置
服务器配置了强大的超时保护,以防止挂起:
- 请求超时:120秒(2分钟)-工具执行的最长时间
- 空闲超时:1800秒(30分钟)-SSE连接保持活动
- 闲置超时:1800秒(30分钟)-流媒体响应超时
- QIX操作超时:15秒-单个数据库查询超时
这些配置在 lib/qlik_mcp/application.ex 和 lib/qlik_mcp/tools/helpers.ex.
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
QLIK_API_KEY |
是 | 您的Qlik Cloud API密钥 |
QLIK_TENANT_URL |
是 | 您的租户URL(例如。, https://tenant.region.qlikcloud.com) |
QLIK_MCP_PORT |
无 | HTTP端口(默认值:4100) |
QLIK_MAX_ROWS |
否 | 每个数据请求的最大行数(默认值:10000) |
应用程序配置
# config/config.exs
config :qlik_mcp,
api_key: System.get_env("QLIK_API_KEY"),
tenant_url: System.get_env("QLIK_TENANT_URL"),
port: 4100,
max_rows: 10_000
Claude集成
克劳德代码(CLI)
添加到MCP配置(~/.mcp/global-config.json 或项目 .mcp.json):
{
"mcpServers": {
"qlik": {
"type": "http",
"url": "http://localhost:4100/mcp"
}
}
}
克劳德桌面版
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"qlik": {
"url": "http://localhost:4100/mcp"
}
}
}
可用工具
数据提取(主要值)
| 工具 | 说明 |
|---|---|
list_apps |
列出具有可选过滤功能的可用Qlik应用程序 |
get_app |
获取特定应用程序的详细信息 |
list_sheets |
列出应用程序中的所有工作表 |
list_charts |
在工作表上列出可视化效果 |
get_chart_data |
从可视化中提取数据 |
evaluate_expression |
计算Qlik表达式(例如。, Sum(Sales)) |
应用管理
| 工具 | 说明 |
|---|---|
reload_app |
触发应用程序的数据重新加载 |
get_reload_status |
检查重新加载进度 |
空间和文件
| 工具 | 说明 |
|---|---|
list_spaces |
列出可用空间 |
list_files |
列出数据文件 |
自动化
| 工具 | 说明 |
|---|---|
list_automations |
列出可用的自动化 |
run_automation |
触发自动化 |
MCP资源
| URI | 描述 |
|---|---|
qlik://apps |
所有可访问应用程序的JSON列表 |
qlik://spaces |
所有可访问空间的JSON列表 |
示例交互
User: "What's our sales by country from the Q4 dashboard?"
Claude:
1. list_apps() → finds "Q4 Sales Dashboard" app
2. list_sheets(app_id) → finds "Regional Sales" sheet
3. list_charts(app_id, sheet_id) → finds "Sales by Country" table
4. get_chart_data(app_id, object_id) → extracts:
| Country | Sales | Margin |
|---------|----------|--------|
| USA | $1.2M | 23% |
| Germany | $987K | 19% |
| UK | $654K | 21% |
5. Claude analyzes and responds with insights
建筑
qlik-cloud-mcp/
├── lib/
│ ├── qlik_mcp.ex # Main module
│ ├── qlik_mcp/
│ │ ├── application.ex # OTP Application
│ │ ├── server.ex # MCP Server (Anubis)
│ │ ├── config.ex # Configuration
│ │ ├── router.ex # HTTP Router (Plug)
│ │ ├── mcp_plug.ex # MCP HTTP Transport (Plug)
│ │ ├── tools/ # MCP Tool implementations
│ │ │ ├── list_apps.ex
│ │ │ ├── get_app.ex
│ │ │ ├── list_sheets.ex
│ │ │ ├── list_charts.ex
│ │ │ ├── get_chart_data.ex
│ │ │ ├── evaluate_expression.ex
│ │ │ ├── reload_app.ex
│ │ │ ├── get_reload_status.ex
│ │ │ ├── list_spaces.ex
│ │ │ ├── list_files.ex
│ │ │ ├── list_automations.ex
│ │ │ ├── run_automation.ex
│ │ │ └── helpers.ex
│ │ └── resources/ # MCP Resource implementations
│ │ ├── apps.ex
│ │ └── spaces.ex
├── config/
│ ├── config.exs
│ ├── dev.exs
│ ├── prod.exs
│ ├── runtime.exs
│ └── test.exs
├── test/
│ ├── qlik_mcp_test.exs
│ ├── qlik_mcp/
│ │ ├── config_test.exs
│ │ └── tools/
│ │ └── helpers_test.exs
│ └── test_helper.exs
└── mix.exs
故障排除
服务器日志
通过launchd运行时,日志将写入 ~/.local/log/qlik-mcp.log.
检查错误:
tail -f ~/.local/log/qlik-mcp.log | grep -i error
常见问题
工具挂起或超时:
- 检查QIX超时(单个查询的默认值为15秒)
- 检查请求超时(完成工具执行的默认值为120秒)
- 验证Qlik Cloud API密钥是否有效:
echo $QLIK_API_KEY - 检查与Qlik Cloud的网络连接
服务器崩溃:
- 检查日志中的堆栈跟踪
~/.local/log/qlik-mcp.log - 验证所有环境变量是否设置正确
- 所有工具都通过以下方式进行全面的异常处理
safe_execute - 如果崩溃持续存在,请打开日志问题
连接问题:
- 验证服务器是否正在运行:
curl http://localhost:4100/health - 检查启动状态:
launchctl list | grep qlik-mcp - 重新启动服务器:
launchctl unload ~/Library/LaunchAgents/com.qlik-mcp.plist && launchctl load ~/Library/LaunchAgents/com.qlik-mcp.plist
可靠性和稳健性
服务器包括全面的超时和错误处理:
- HTTP请求超时 -明确
request_timeout: 120_000ms防止无限期挂起 - QIX操作超时 -所有数据库查询的15秒超时包装器
- 异常处理 -所有工具均已包裹
safe_execute捕捉并优雅地处理碰撞 - 数据结构处理 -Qlik复杂元组/映射数据结构的正确提取
依赖项
- 肛门MCP -Elixir MCP SDK
- QlikElixir -Qlik Cloud客户端库
- 插牛仔 -HTTP服务器
发展
# Run tests
mix test
# Run linter
mix lint
# Generate docs
mix docs
相关项目
- qlik_elixir -此MCP服务器构建在Qlik Cloud Elixir客户端上
- qlik mcp -TypeScript引用实现
贡献
- 分叉存储库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 先写测试(鼓励TDD)
- 确保所有检查均已通过(
mix format && mix credo --strict && mix test) - 提交您的更改
- 推到分支
- 打开拉取请求
许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
链接
赞助
该项目由以下机构自豪地赞助 水疗中心-科伦特斯长寿诊所,位于西班牙瓦伦西亚的世界级长寿诊所和温泉。他们的支持使这样的开源开发成为可能。
感谢您对开发者社区的投资!