Over the past few weeks, I have been testing the Qlik MCP Server with Claude. I wanted to see what happens when we go beyond asking an AI assistant simple questions and use it to investigate data through the Qlik Engine.
In this post, we are going to take a quick look at what MCP is, how it connects to Qlik Cloud, and some tips and lessons I learned during my testing that will help you get the most out of it.
What is MCP, anyway?
Model Context Protocol (MCP) is an open standard that lets AI applications connect to external systems and tools:
Think of your AI assistant as a waiter and Qlik Cloud as the restaurant kitchen. MCP is the common ordering language they both understand
The Qlik MCP Server provides the menu of available Qlik tools, passes the assistant's requests to Qlik, and returns the results back to the assistant.
When you ask a question like "Why did sales drop?", your assistant decides which tools to call, Qlik performs the requested calculations in the engine, and the assistant explains the findings.
MCP isn't another AI model, and it doesn't bypass your existing Qlik Cloud permissions or Section Access.
You can read more about how it works in the official MCP introduction and the Qlik MCP documentation.
Tips & Tricks:
Start with a well-described app:
Master Measure descriptions really matter when working with an AI assistant. When the assistant calls qlik_list_measures, it relies on those descriptions to pick the right calculation.
In one of my test apps, two margin calculations looked almost identical, and their descriptions were what helped the assistant choose the right one. Make sure to explain what each measure includes, what it excludes, and when to use it.
I also recommend asking the assistant to inspect the data model and field values first before running any analysis:
Pairing qlik_get_data_model with qlik_get_field_values early on helped me flag a blank country value that later affected an expression.
Point it to the right app:
If you already know which app you want to work with, provide its name or App ID right in your prompt.
Then, have the assistant inspect the app metadata, fields, and master items (qlik_describe_app, qlik_get_fields, qlik_list_dimensions, and qlik_list_measures) once at the start of your session.
In my tests, open-ended discovery took five to seven tool calls. Repeating that discovery process unnecessarily adds overhead and wastes tool calls.
Ask a business question, don’t ask for a chart:
Asking "Show me sales by year" will just give you a basic summary.
Asking "Why did sales fall this year?" led to an investigation where the assistant separated customers who stopped buying altogether from those who simply bought less.
Give the assistant a real business problem to solve, and ask it to show you the evidence behind its conclusions.
Investigate what's missing (Excluded Values):
This was my favorite experiment. Using the a sales app as an example, I asked why 2026 sales dropped compared to 2025.
Instead of only looking at the remaining sales, the assistant checked who was missing in 2026 and found that 3 of 9 salespeople and 58 of 90 customers had no 2026 sales records at all.
Qlik's E() element function makes this easy to do in set analysis: Customer=E({1<Year={2026}>} Customer)
This set modifier finds all customers excluded by the 2026 selection across the full dataset, which is a great starting point for investigating lost business.
Let Qlik do the math:
Always ask the assistant to run calculations inside the Qlik Engine (using qlik_create_data_object) rather than adding up rows returned to the LLM.
During my testing, temporary data-object queries returned 50 rows at a time even when more rows existed. That is an observation from my test environment rather than a documented universal limit, so it is important to watch out for truncated results.
Have the assistant check the totalRows property in the response, aggregate directly in the Qlik Engine, or request a focused top-N result.
Watch persistent selections:
Selections applied via qlik_select_values persist across MCP calls until they are cleared with qlik_clear_selections, which means a filter from an earlier step might affect your next total.
You can check active filters at any time using qlik_get_current_selections:
Use {1<Year={2026}>} in your set analysis when a calculation needs to ignore current selections.
Use {$<...>} when you want the calculation to respect the current selection state.
Ask the assistant to check its work:
One of my favorite follow-up prompts is: "Show the expressions, reconcile the totals, and separate observations from hypotheses."
Always have the assistant verify field values using qlik_search_field_values or qlik_get_field_values before putting them into selections or set modifiers.
A valid expression filtering on a nonexistent value will fail silently or return zero without warning, and a zero result doesn't always mean zero business activity.
Turn findings into action:
Beyond answering questions, Qlik MCP supports creating sheets (qlik_create_sheet), charts (qlik_add_chart), bookmarks (qlik_create_bookmark), and automations (qlik_create_automation), all subject to your existing Qlik Cloud permissions.
A good workflow is to ask the assistant to propose a plan first, and then approve what you want it to create.
For important findings, you can also ask it to check dataset freshness (qlik_get_dataset_freshness) and upstream lineage (qlik_get_lineage) to validate the underlying data.
That’s all, I hope you found this post helpful! Do not forget to check out the Qlik MCP tools guide on Qlik Help, which covers all the available tools and additional use cases.
If you have been experimenting with Qlik MCP, what tips or unexpected behaviors have you found? I'd love to hear about them in the comments!
Thanks for reading!
...View More
In this blog post, we'll cover two new features of Qlik Answers that you may not be aware of.
Fast mode
Download conversation as PDF
Fast Mode
Qlik Answers Fast mode delivers quick, concise responses to simple questions using your structured data. It is ideal for questions that can be answered directly, without deep analysis. For complex questions that require more analysis, use Thinking mode. And don’t worry, if you ask a question in Fast mode that requires more analysis, Qlik Answers will recommend that you switch to Thinking mode. Fast mode and Thinking mode can be used interchangeably in a single conversation.
You can learn more about Fast mode here:
Demo Tour
Video
Download Conversations as PDF
Now, you can download your Qlik conversations for future reference or to share with others. There are two ways you can do this. You can download a chat once Answers has responded to your question. The download button will appear as shown below. When you click it, a PDF of the Qlik Answers chat will be downloaded. The download feature is available for chats created after this feature’s release.
Qlik Answers chats can also be downloaded from the Feedback tab in an assistant, but this requires the audit admin role. To view chats, open an assistant and go to the Feedback tab. Click on the three ellipses at the end of a row and select View answer details. From here, you can review and download the chat.
Fast mode and chat downloads are both live in Qlik Answers today, and they're built to make your workflow quicker and your insights easier to share. Ask a question in Fast mode next time you need a quick answer and download a chat any time you want to keep a record or bring a colleague up to speed.
Thanks,
Jennell
...View More
If you have worked with point maps in Qlik, you are probably familiar with how selections normally work. You zoom into an area, use the lasso tool to draw around the points you want, confirm the selection, and repeat the process if you want to explore somewhere else.
Qlik Cloud now supports another option for point layers called Auto select visible:Instead of manually selecting points, you move around the map and Qlik updates the selection based on the area you are viewing. Zoom into Philadelphia and the locations in that area are selected. Pan over to another city and the selection changes with the map.
There is a little more happening behind the scenes, though. Before you turn on Auto select visible, you first need to create a Spatial Index for your location data. In this post, I’ll walk through what that means and how you can try it yourself with a simple example.
What changed?
The idea of selecting visible locations is not completely new to Qlik. Auto Select Visible existed in the GeoAnalytics map extension before it became available in the native Qlik Cloud map.
What changed recently is that you can now use this behavior directly in the native Qlik map chart. You no longer need the old GeoAnalytics map extension, but you still use GeoOperations to create the Spatial Index that the map relies on.
The easiest way to think about the workflow is that there are two parts. During reload, GeoOperations prepares the Spatial Index and adds it to your data model. Once the app is loaded, the native Qlik map uses that index as the user pans and zooms.
What is a Spatial Index?
A Spatial Index is a way of organizing geographic data so Qlik has a more efficient way to understand where points are located.
Imagine a grid placed over your map. Each location belongs to one or more cells in that grid, depending on the level of detail. Qlik creates several levels of these cells so it has smaller cells for detailed views and larger cells for wider geographic views.
When GeoOperations creates the index, you will see fields such as SpatialIndex, SpatialIndexLevel2, SpatialIndexLevel3, and so on. These values represent cells in the spatial grid.
This is useful because Qlik does not need to treat every map movement as a completely new geographic calculation across all of your points. It already has a spatial structure that tells it how those locations are grouped geographically.
Why does this need to happen in the load script?
The reason is that the map setting and the Spatial Index have different jobs. The Spatial Index prepares your location data during reload. "Auto select visible" then uses that prepared information while interacting with the map.
So the Spatial Index is created once when the app reloads instead of being rebuilt every time somebody pans or zooms the map.
GeoOperations connection
You need GeoOperations to create the Spatial Index, but you do not have to build the script manually.
If you create a Qlik GeoOperations connection, you can select Spatial Index from the available operations, choose your fields, and let Qlik generate the script for you. This is probably the easiest option if you are using the feature for the first time.
You can also write the GeoOperations ScriptEval call directly in the Data load editor.
Try it with a simple example
Attached to the post is a QVF that uses a demo dataset containing SiteID, SiteName, Metro, State, Latitude, Longitude, MonthlyRevenue, and Customers.
Step 1: Load the locations
First, upload the CSV into DataFiles in your Qlik Cloud app or space. Then load it using the following script:
Sites:
LOAD
SiteID,
SiteName,
Metro,
State,
Num#(Latitude, '0.000000', '.', ',') as Latitude,
Num#(Longitude, '0.000000', '.', ',') as Longitude,
Num#(MonthlyRevenue, '0.00', '.', ',') as MonthlyRevenue,
Num#(Customers, '0', '.', ',') as Customers,
GeoMakePoint(
Num#(Latitude, '0.000000', '.', ','),
Num#(Longitude, '0.000000', '.', ',')
) as SitePoint
FROM [lib://DataFiles/qlik_spatial_index_demo_20k.csv]
(txt, codepage is 28591, embedded labels, delimiter is ',', msq);
The important part here is SitePoint. Our CSV stores latitude and longitude separately, so GeoMakePoint combines them into the geographic point field we will use on the map and pass to GeoOperations.
Step 2: Create the Spatial Index
Once the Sites table is loaded, we can pass it through the GeoOperations Spatial Index operation.
[SiteSpatialIndex]:
LOAD *
EXTENSION GeoOperations.ScriptEval('
SELECT
SiteID,
SpatialIndex,
SpatialIndexLevel2,
SpatialIndexLevel3,
SpatialIndexLevel4,
SpatialIndexLevel5,
SpatialIndexLevel6
FROM SpatialIndex(
gridSize="0.002",
gridWidthHeightRatio="1.5",
nLevels="6",
levelFactor="4"
)
DATASOURCE dataset INTABLE
keyField="SiteID",
pointField="SitePoint",
crs="auto"
', Sites);
The two fields that matter most here are keyField and pointField. SiteID connects the generated index back to the original Sites table, while SitePoint tells GeoOperations which geographic field should be indexed.
For this example, I am also using a gridSize of 0.002. I originally tested the default value of 0.04, but at a detailed street-level zoom it grouped too many nearby locations into the same grid cell. Reducing it to a lower number gave the demo much more precise selections when zooming into individual points.
After the reload, your data model will contain the original Sites table and the SiteSpatialIndex table, associated through SiteID.
Step 3: Create the map
Now add a native Map chart and create a Point layer. Use SiteID as the dimension and SitePoint as the location field.
Once the point layer is working, go into Map settings and change Zoom behavior from Auto zoom to Auto select visible. A Spatial index option will appear underneath it. Select SpatialIndex.
At this point, start zooming and panning around the map. Qlik will update the selection as the visible area changes.
Auto zoom versus Auto select visible
It is also worth understanding how this differs from the default Auto zoom behavior.
With Auto zoom, you make a selection somewhere in the app and the map moves to show the selected locations. Auto select visible works in the opposite direction. You move the map yourself, and the map view drives the selection.
Why might I see more selected sites than visible points?
Spatial Index selections work with grid cells, not individual screen pixels. If several locations fall inside the same spatial index cell, those sites can all become associated with the selection even when only one point appears inside a tightly zoomed map view.
That is where gridSize becomes important. A larger grid size creates larger cells, which is useful when users normally work at wider geographic views. A smaller grid creates more detailed cells and gives you more precise behavior when users zoom down to individual streets or locations.I attached the sample CSV and complete load script so you can try the same setup in your own Qlik Cloud tenant.
Thank you for reading!
...View More
In this blog post, I will cover three new features in Qlik Cloud:
Subtotals in the straight table
Exit error
Creating text and image objects from pasted images
These are small features, but useful improvements that can be used when building your analytics apps.
Subtotals in the Straight Table
The first is the ability to add a subtotal row to a straight table. This is something we are used to seeing in a pivot table but not a straight table. Developers can now toggle on Show subtotals in a dimension field of their straight table to add subtotal rows.
Once Show subtotals is toggled on, the Label property becomes available allowing the developer to rename the label. In the table, a subtotal row is added for each asset class.
Exit Error
The second new feature is Exit Error, which is used in the script to end the execution of the script with a user defined error message. The syntax as found in Qlik Help looks like this:
Exit Error expression [(when | unless condition)]
For example, assume you are loading data in a table, and you want to exit the script execution if no data has been loaded. Using Exit Error, a variable can be checked (or some other condition) to determine if there are rows in a table that was previously loaded. If there are, continue with the script; if not, exit the script with a message. In this example, the vOpenOrders variable will be 0 if there are no rows in the table.
If the variable vOpenOrders is equal to 0, then exit the script and show the message “No open orders were loaded.” This is how the error will appear.
Creating Text and Image Objects from Pasted Images
The last new feature is a cool shortcut to create a text object or an image object. Simply paste text or an image onto an empty area on a sheet and a new text object or image object will be created. In the case of images, the pasted image will be automatically saved to the media library – a time saver. On the sheet below, I pasted this text: “I am going to create an image with this text.” and this image:
And a text object and image object were created without any additional work from me.
Note that the developer will need upload permissions for the image to be added to the media library.
That's three new ways Qlik Cloud is making app development easier — smarter subtotals, cleaner error handling, and a slick shortcut for pasted content. Small features, big time savings. Try them out in your next app and stay tuned for more updates coming soon.
Thanks,
Jennell
...View More
The 2026 World Cup kicks off today!
A few weeks ago, I published a post on how we built Choose Your Champion 2026, a World Cup bracket app powered by Qlik. That post went into the technical details: the data model, the ML experiment in Qlik Predict, the React front end. If you haven't read it, start there.
So far, 90+ brackets have been submitted. One of them wasn't filled out by a person at all. It was generated by the machine learning model we trained with Qlik Predict, using FIFA rankings, player ratings, and head-to-head history. The model has Spain winning it all!
Here's mine, and here's Qlik Predict's.
If you haven't filled one out yet, do it here. Once you're in, use the Compare button on the leaderboard to see where your picks differ from mine, or from the model's. Brackets get scored automatically as matches are played, so the leaderboard will keep moving all the way to the final on July 19.
We also opened up a Choose Your Champion space on Qlik Community. That's where we'll be posting leaderboard updates during the tournament, and where you can share your bracket, ask questions about the app, or make your case for why the model got it wrong.
If you're interested in the broader question of when models beat human intuition (and when they don't), take a look at Model vs. Mastery.
Enjoy the tournament!!
...View More
Our Data Products Storylane has been given a revamp!
TAKE THE TOUR
Data Products are highly trusted, re-usable, and consumable data assets. Data elements such as raw data, transformations, data quality rules, contracts, access patterns, and infrastructure have been organized into a single cohesive unit to align with specific requirements and objectives of a business to create a Data Product.
Data Products come with the Qlik Trust Score, a score given to data products based on seven factors, Validity, Completeness, Discoverability, Usage, Timeliness, Accuracy, and Diversity. The Qlik Trust Score ™ gives you confidence in the quality and health of your Data Products so you can be empowered when using them throughout your business. You can also view the Data Product Lineage, which is a flow chart that shows you the origin of the Data Product, so you can track it down to its source. Available Data Products can be found in the Data Marketplace, a collection of Data Products that are ready for use.
If you want to learn even more about Data Products, Datasets, Data Quality and Data Validation Rules check out Mike Tarallo's video series here:Data Products for Qlik Analytics
...View More