docs(mcp-analytics): Vercel mcp-handler integration example - #17831
Merged
lucasheriques merged 5 commits intoJun 23, 2026
Conversation
mcp-handler hands you a standard McpServer in its setup callback, so instrument() works with one line. Documents the snippet plus the two Vercel caveats: stateless per-request servers (use a sessionIdGenerator for session continuity) and flushing posthog-node in serverless. Generated-By: PostHog Code Task-Id: b21bc954-5de3-4512-a0d5-6bec2371f782
Contributor
Deploy preview
|
Contributor
|
Vale prose linter → found 11 errors, 5 warnings, 0 suggestions in your markdown Full report → Copy the linter results into an LLM to batch-fix issues. Linter being weird? Update the rules!
|
| Line | Severity | Message | Rule |
|---|---|---|---|
| 9:63 | error | Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. | PostHogBase.EnDash |
| 9:116 | error | Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. | PostHogBase.EnDash |
| 17:14 | warning | Use 'project token' instead of 'project API key'. The project token (phc_) is not an API key. | PostHogBase.ProjectToken |
| 27:211 | error | Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. | PostHogBase.EnDash |
| 31:280 | error | Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. | PostHogBase.EnDash |
| 31:318 | warning | Capitalize 'Logs' for PostHog's product. Use 'logs' for the general industry concept. | PostHogBase.ProductNames |
| 55:110 | error | Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. | PostHogBase.EnDash |
| 78:51 | warning | Use the Oxford comma before 'and' or 'or' in a list of three or more items. | PostHogBase.OxfordComma |
| 108:48 | warning | 'OAuth' is a possible misspelling. | PostHogBase.Spelling |
| 123:1 | warning | 'untrusted' is a possible misspelling. | PostHogBase.Spelling |
| 134:75 | error | Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. | PostHogBase.EnDash |
| 141:93 | error | Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. | PostHogBase.EnDash |
| 144:83 | error | Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. | PostHogBase.EnDash |
| 145:76 | error | Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. | PostHogBase.EnDash |
| 146:77 | error | Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. | PostHogBase.EnDash |
| 167:115 | error | Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. | PostHogBase.EnDash |
Contributor
Bundle reportTotal JS (gzip)6.21 MiB (+0.0 KiB / +0.0%) Eager graph (static-import closure per entrypoint)
Largest modules in the
|
| Module | Size |
|---|---|
css ./node_modules/.pnpm/css-loader@5.2.7_webpack@5.101.3/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[8].oneOf[1].use[1]!./node_modules/.pnpm/postcss-loader@4.3.0_postcss@8.5.6_webpack@5.101.3/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[8].oneOf[1].use[2]!./src/styles/global.css |
710.3 KiB |
./src/components/Stickers/Stickers.tsx |
696.4 KiB |
./.cache/caches/gatsby-plugin-mdx/mdx-scopes-dir/31a094f140f119e73085d847ae81b99b.js + 2 modules |
531.0 KiB |
./node_modules/.pnpm/@radix-ui+react-icons@1.3.2_react@18.3.1/node_modules/@radix-ui/react-icons/dist/react-icons.esm.js |
481.4 KiB |
./node_modules/.pnpm/@codemirror+view@6.38.2/node_modules/@codemirror/view/dist/index.js |
458.1 KiB |
./node_modules/.pnpm/rehype-raw@7.0.0/node_modules/rehype-raw/lib/index.js + 29 modules |
395.1 KiB |
./node_modules/.pnpm/@posthog+icons@0.36.6_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.cjs.js |
364.8 KiB |
./node_modules/.pnpm/@posthog+icons@0.36.6_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js |
354.8 KiB |
./src/hooks/useCustomers.tsx + 54 modules |
353.9 KiB |
./node_modules/.pnpm/react-markdown@8.0.7_@types+react@16.14.66_react@18.3.1/node_modules/react-markdown/lib/react-markdown.js + 88 modules |
351.4 KiB |
./node_modules/.pnpm/cloudinary-core@2.14.0_lodash@4.17.21/node_modules/cloudinary-core/cloudinary-core.js |
281.9 KiB |
./node_modules/.pnpm/@codesandbox+sandpack-react@2.20.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@codesandbox/sandpack-react/dist/index.mjs |
266.6 KiB |
./src/components/ProductComparisonTable/index.tsx + 114 modules |
264.0 KiB |
./node_modules/.pnpm/d3@7.9.0/node_modules/d3/src/index.js + 208 modules |
247.4 KiB |
./src/components/Pricing/PricingSlider/Slider.tsx + 87 modules |
239.9 KiB |
Eager-graph budgets are report-only until a baseline is established. Sizes are gzip of public/**/*.js; eager size is webpack module source bytes.
mcp-handler's streamable-HTTP transport is stateless (sessionIdGenerator is typed undefined — no Mcp-Session-Id), so the earlier "configure a sessionIdGenerator" advice was wrong. Replace it with the real lever: enableConversationId, which stitches a client's calls via $mcp_conversation_id without a persistent connection, plus identify for per-user grouping. Generated-By: PostHog Code Task-Id: b21bc954-5de3-4512-a0d5-6bec2371f782
mcp-handler exports createMcpHandler as a named export
(export { default as createMcpHandler } from "./handler"), per the package
entry and README. Was incorrectly shown as a default import.
Generated-By: PostHog Code
Task-Id: b21bc954-5de3-4512-a0d5-6bec2371f782
…xample @posthog/mcp@0.4.1 re-exports PostHog, so the example imports the client and instrument from one package instead of also importing from posthog-node. Generated-By: PostHog Code Task-Id: b21bc954-5de3-4512-a0d5-6bec2371f782
- Callout now says beta (pre-1.0), API may change incl. breaking changes in 0.x until v1 — drops the stale hardcoded "0.1.x" (package is 0.4.x). - Grouping: lead with identify (group by user; nothing required from the client) as the robust default. Reframe enableConversationId as best-effort and note its prompt-back is a server instruction in the tool result that some clients may ignore or treat as untrusted (prompt-injection wariness). Generated-By: PostHog Code Task-Id: b21bc954-5de3-4512-a0d5-6bec2371f782
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a Next.js / Vercel (
mcp-handler) example to the MCP analytics installation page.vercel/mcp-handlerhands you a standard@modelcontextprotocol/sdkMcpServerin its setup callback, so@posthog/mcp'sinstrument()works with one line — no new code needed. The section also documents the two Vercel-specific caveats: stateless per-request servers (use asessionIdGeneratorfor session continuity) and flushingposthog-nodein serverless.Independent of the Python SDK docs PR (#17827) — this one is ready to merge now since the TypeScript
@posthog/mcpSDK is already published.Mega-issue: PostHog/posthog#64016
Created with PostHog Code