Measurecamp London Bigqery Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Measurecamp London Bigqery Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This project provides a semantic layer on top of Google Analytics 4 (GA4) event data stored in Google BigQuery. It uses the boring-semantic-layer library to define a semantic model and exposes it through a Model-View-Controller Protocol (MCP) server.
This allows for consistent and simplified querying of your GA4 data from compatible client applications (like Cursor).
ga4_events_sm).event_date and user_pseudo_id.event_count. gcloud auth application-default login git clone <your-repository-url>
cd measurecamp-london-bigqery-mcpThe project uses uv to manage and run the Python environment. The required dependencies are listed at the top of the layer.py file. uv will install them automatically when you run the server. If you don't have uv, you can install it with:
pip install uvBefore running the server, you need to configure it to point to your BigQuery data. Open the layer.py file and modify the following lines:
Change project_id and dataset_id to match your Google Cloud setup.
con = ibis.bigquery.connect(
project_id="your-gcp-project-id",
dataset_id="your_bigquery_dataset_id",
)Change the table name to your GA4 events table.
ga4_table = con.table("events_YYYYMMDD")The current primary_key in the ga4_events_sm model is set to "code", which is likely a remnant from an example. You should update this to a unique key for your events table or remove it if one is not applicable. A combination of user_pseudo_id and event_timestamp is often used to uniquely identify an event, but boring-semantic-layer currently supports single-column primary keys. For now, you can remove the line.
Once configured, you can start the MCP server by running the following command in your terminal:
uv run layer.pyThe server will start and listen for connections from MCP clients.
To connect to this server from an MCP-compatible editor like Cursor, you need to configure it as an MCP server.
.cursor/mcp.json file in your project's root directory.mcpServers object: {
"mcpServers": {
"ga4-semantic-layer": {
"command": "uv run layer.py",
"language": "python"
}
}
}@ga4-semantic-layer in the chat to query your semantic model. For example:@ga4-semantic-layer How many events were there per day?
This will query your BigQuery table through the semantic layer and return the results.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.