Add Signals MCP tutorial: manage Signals with AI assistants - #1891
Add Signals MCP tutorial: manage Signals with AI assistants#1891jborlase-snowplow wants to merge 6 commits into
Conversation
New tutorial tutorials/signals-mcp/ — connect the Snowplow MCP server to an AI coding assistant and define, test, publish, verify, and refine a Signals attribute group conversationally, with every step verified in Console, the Snowplow Inspector, or the Signals SDK. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Capture the attribute groups list and group detail screens from live Console into tutorials/signals-mcp/images/ and wire them into the verify-and-refine page. Reword the test step after live verification: Console offers no Run preview control on organizations without a warehouse connection, so the page now links the quickstart's preview step and notes the trial-org behavior. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Style and writing reviewRead Links: all internal paths and anchors verified to exist ( A few things to fix: 1. "three values" introduces a two-item list
The count doesn't match the list, which makes the reader stop and recount. Style guide, Lists: items should be parallel, and the introducing sentence should match. Split item 2 so the list has three entries: You'll need three values:
1. Your organization ID, from the **Manage organization** page in Console settings
2. An API key ID, which you [create in Console](/docs/account-management/#create-an-api-key)
3. The API key itself, shown once when you create it2. Code span ending in a period, immediately followed by a comma
The
3. Closing paragraph sits under the wrong heading
The final paragraph — "If you'd rather not set up an MCP client at all, the [Snowplow Assistant]…" — is the last thing on the page, so it falls under 4. Frontmatter titles aren't descriptive or unique
CLAUDE.md, Required frontmatter:
The 5. Minor: "No-setup alternative" heading
Two small things: the style guide says to prefer "configuration" over "setup", and CLAUDE.md prefers imperative headings over noun phrases. 6. Minor: bare URL as link text
Style guide, Links: "Describe links clearly. Use the target page name where possible." Suggest: "The plugin source lives in the 7. Minor: filler "now"
The style guide bans "now" alongside "currently" and "latest". Here it's pure filler and can just be dropped: "With the MCP server connected, you can define your first attribute group by describing it." The other occurrences ("Signals is now calculating", "the group now calculates four attributes", "Now generate some data") are sequential rather than product-state, and read fine as-is. |
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
documentation | 83a5766 | Commit Preview URL Branch Preview URL |
Aug 04 2026, 03:30 PM |
…style fixes Product owner feedback: - Remove the "How the credentials work" section from the connect page, keeping a pointer to the Signals connection docs. - Replace the Python venv/SDK retrieval flow with Snowplow Inspector instructions, aligned to the Signals integration docs page. - Correct the versioning narrative: editing a published attribute group creates a new version rather than updating one in place. The edit step now creates and publishes version 2 while version 1 keeps running, and the versioning note explains why consumers are unaffected. Style review: - Split the API key ID and API key into separate list items, so the "three values" list has three entries. - Drop the sentence-final period from inside the backticked error string. - Move the Snowplow Assistant paragraph out of the prerequisites section to close the introduction prose. - Give the introduction and conclusion descriptive frontmatter titles, leaving their sidebar labels unchanged. - Rename "No-setup alternative" to "Use the Snowplow Assistant instead". - Replace the bare-URL link text with the snowplow/skills repository. - Drop the filler "now" from the attribute group introduction. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Pushed Product-owner feedback
Style review items — all seven applied: three-item credentials list, code-span punctuation, the stranded intro paragraph, descriptive frontmatter titles, "Use the Snowplow Assistant instead" heading, repository link text, and the filler "now". Anchor safety was grep-verified repo-wide (no inbound links to the removed/renamed sections). 🤖 Generated with Claude Code |
The "Testing requires a warehouse connection" note on the attribute definition page showed the exact API error string returned when an organization has no warehouse destination, and framed that failure as the expected path for trial accounts. It also described Console omitting its Run preview control. State the constraint neutrally instead: testing attribute definitions requires a warehouse destination, and readers without one publish the draft and verify against live events on the next page. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Pushed 🤖 Generated with Claude Code |
- introduction: drop the Snowplow Micro / "full pipeline" framing from the prerequisite note; state plainly that a Snowplow account and running pipeline are needed, keeping the free-trial pointer - connect-the-mcp-server: add the vendor-neutral `npx plugins add snowplow/skills` route as the recommended cross-client install, ahead of the Claude Code marketplace and raw MCP client sections - connect-the-mcp-server: make OAuth the default recommendation and move Console API keys into an optional subsection - define-attributes: correct the draft explanation, which implied the assistant cannot publish - conclusion: remove the "somewhere the assistant can't embellish" verification framing and align the auth recap with OAuth Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Pushed
🤖 Generated with Claude Code |
…erver The tutorial now teaches managing Signals conversationally with either the Snowplow Assistant in Console or an MCP-connected assistant. - introduction: two-route framing, adjusted "You'll:" list and prerequisites - connect page: new "Use the Snowplow Assistant" section with a skip-ahead link, retitled, MCP content and its OAuth-first structure unchanged - pages 3-4: client-neutral wording, no MCP tool names in prose - conclusion: dropped the now-obsolete Assistant alternative section Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Pushed Honesty note for reviewers: the Assistant route is written from 🤖 Generated with Claude Code |
Matus Tomlein (matus-tomlein)
left a comment
There was a problem hiding this comment.
LGTM!
|
|
||
| Log in to Console, open the assistant, and you're ready to start prompting. If the chat interface doesn't appear, an administrator can enable the assistant for your organization from the **Settings** section of Console: see [Snowplow Assistant](/docs/llms-support/console-agent/) for what it covers and how it handles your data. | ||
|
|
||
| On this route you can skip straight to [defining attributes](/tutorials/signals-mcp/define-attributes-conversationally). The rest of this page connects the MCP server to your own assistant instead. |
There was a problem hiding this comment.
Wouldn't a screenshot be useful here? It would help someone like me at least to visualize what we are talking about when skimming the text faster. I see we don't add screenshots for Snowplow Assistant in Console also in other parts of the docs, not sure if that is a conscious decision.
| Test tut_mcp_session_metrics against recent events before we publish. | ||
| ``` | ||
|
|
||
| The result is a small table: one row per `domain_sessionid` value found in the sample, with a column for each of the three attributes. Use it to sanity-check the definitions, and iterate conversationally if something looks wrong: |
There was a problem hiding this comment.
I didn't get a small table on the Snowplow Assistant, in that case it just summarized the data:
The test results for tut_mcp_session_metrics over a 1-day window are as follows:
first_referrer: Successfully captured values like "snowplow.io" and "www.google.com", along with some nulls where no referrer host was found.
most_recent_browser: Correct extracted browser names from the yauaa_context, including "Chrome" and "HeadlessChrome".
page_view_count: Returned nulls in the test output. This is expected behavior for the warehouse test tool, as it cannot accurately simulate rolling time-window aggregations (like PT15M) against static warehouse data. This attribute will function correctly once published to the streaming engine.
Everything looks correct for the attributes that can be validated in the warehouse. Would you like to go ahead and publish this attribute group?
|
|
||
| This is the same screen you'd have used to build the group by hand in the [quick start](/tutorials/signals-quickstart/define-attribute-group). Whether a group was created through the Console UI, the Python SDK, or an AI assistant, it lands in the same registry, and Console is always the neutral place to audit what's deployed. | ||
|
|
||
| ## Watch the attribute values in Snowplow Inspector |
There was a problem hiding this comment.
I would also find a screenshot useful here too, just to visualize what we are doing here more quickly.
| both versions are calculating now. | ||
| ``` | ||
|
|
||
| Publishing version 2 doesn't retire version 1. Each version is a separate deployment with its own values in the Profiles Store, and consumers ask for a version by name, as in `tut_mcp_session_metrics_v2:page_view_count`. That's the point of versioning: applications reading version 1 carry on working while you test version 2. Version 2's `page_view_count` starts from zero for each session, because a stream group only counts events that arrive after it's published. Once nothing reads the old version any more, ask the assistant to unpublish it. |
There was a problem hiding this comment.
Version 2's
page_view_countstarts from zero for each session, because a stream group only counts events that arrive after it's published
It shouldn't – if the definition of the page_view_count attribute hasn't changed from v1, then the same computation and storage is shared between v1 and v2, so v2 should see the same data as v1 except for the new most_recent_page_title attribute.
What changed?
New tutorial
tutorials/signals-mcp/(5 pages + 3 live Console screenshots): connect the Snowplow MCP server to an AI assistant (Claude Code in the examples), define/test/publish a Signals attribute group conversationally, verify results in Console and via the Python SDK, then make a conversational edit and republish.Why?
No tutorial covered managing Signals through the MCP server, despite it being the primary agentic workflow (tutorials gap analysis).
Reviewer guidance
test_attribute_group400s and Console hides Run preview entirely — the tutorial documents this as the expected trial path. The quickstart documents the button unconditionally; separate docs fix suggested.tut_mcp_session_metricsso transcripts match the real run exactly — happy to rename at review.🤖 Generated with Claude Code