Qlik模型上下文协议服务器

QlikMCP是一个为Qlik Cloud设计的模型上下文协议服务器,使AI助手(如Claude)能够与Qlik分析平台进行交互,提供数据提取、表达式评估、应用管理等功能。

  • by Balneario-de-Cofrentes
  • Elixir
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 Balneario-de-Cofrentes/qlik_mcp

使用说明

Qlikmcp

Qlik Cloud的MCP(模型上下文协议)服务器,使Claude等人工智能助手能够与您的Qlik分析平台进行交互。

特性

  • 数据提取:列出应用程序、工作表、可视化并从图表中提取数据
  • 表达式求值:实时计算Qlik表达式
  • 应用管理:触发重新加载,检查重新加载状态
  • 空间和文件:浏览空间和数据文件
  • 自动化:列出并触发Qlik自动化

先决条件

  • 灵丹妙药1.18+
  • 拥有API访问权限的Qlik云租户
  • Qlik Cloud API密钥

安装

作为独立服务器

  1. 克隆此存储库:
git clone https://github.com/Balneario-de-Cofrentes/qlik_mcp.git
cd qlik_mcp
  1. 安装依赖项:
mix deps.get
  1. 配置您的Qlik Cloud凭据:
export QLIK_API_KEY="your-api-key"
export QLIK_TENANT_URL="https://your-tenant.region.qlikcloud.com"
  1. 启动服务器:
mix run --no-halt

MCP服务器将在 http://localhost:4100/mcp.

macOS上的自动启动(launchd)

为了方便起见,您可以使用macOS launchd将MCP服务器配置为在登录时自动启动。

  1. 在以下位置创建启动脚本 ~/.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
  1. 在以下位置创建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>
  1. 创建日志目录并加载服务:
mkdir -p ~/.local/log
launchctl load ~/Library/LaunchAgents/com.qlik-mcp.plist
  1. 管理服务:
# 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

可靠性和稳健性

服务器包括全面的超时和错误处理:

  1. HTTP请求超时 -明确 request_timeout: 120_000 ms防止无限期挂起
  2. QIX操作超时 -所有数据库查询的15秒超时包装器
  3. 异常处理 -所有工具均已包裹 safe_execute 捕捉并优雅地处理碰撞
  4. 数据结构处理 -Qlik复杂元组/映射数据结构的正确提取

依赖项

发展

# Run tests
mix test

# Run linter
mix lint

# Generate docs
mix docs

相关项目

  • qlik_elixir -此MCP服务器构建在Qlik Cloud Elixir客户端上
  • qlik mcp -TypeScript引用实现

贡献

  1. 分叉存储库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 先写测试(鼓励TDD)
  4. 确保所有检查均已通过(mix format && mix credo --strict && mix test)
  5. 提交您的更改
  6. 推到分支
  7. 打开拉取请求

许可证

MIT许可证-请参阅 许可证 文件以获取详细信息。

链接


赞助

该项目由以下机构自豪地赞助 水疗中心-科伦特斯长寿诊所,位于西班牙瓦伦西亚的世界级长寿诊所和温泉。他们的支持使这样的开源开发成为可能。

感谢您对开发者社区的投资!