fix(deps): bump dependency @posthog/mcp to ^0.11.0 - #123
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
renovate
Bot
force-pushed
the
renovate/posthog-mcp-0.x
branch
4 times, most recently
from
August 10, 2026 20:49
70446a1 to
6691b3a
Compare
renovate
Bot
force-pushed
the
renovate/posthog-mcp-0.x
branch
from
August 12, 2026 01:04
6691b3a to
ada04d0
Compare
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.
This PR contains the following updates:
^0.10.0→^0.11.0Release Notes
PostHog/posthog-js (@posthog/mcp)
v0.11.4Compare Source
Patch Changes
#4482
9dd5e6cThanks @gesh! - Keep the conversation-id prompt-back out of$mcp_error_message.With
enableConversationIdon, a[SERVER]: Reuse conversation_id=…block is appended to a tool result so the agent echoes the handle back on later calls. The captured error was read from that already-appended result, so a failed call reported"intentional failure [SERVER]: Reuse conversation_id=019f…"— a fresh uuid inside the error message on every call, which splits one recurring failure into a new error group each time it happens.The error is now read from the result as the tool produced it, before the handle is written in. It bites hardest on MCP SDK v2, where a thrown error is flattened into an
isErrorresult before the SDK hands it to us, so that result is the only description of the failure available. The agent still receives the prompt-back on failed calls — that is when it matters most, since otherwise the retry starts a new conversation and the failure and its fix land in different sessions. (2026-08-10)#4466
fe3ea18Thanks @gesh! - GateMcp-Session-Idminting on the protocol revision the request declares.The 2026-07-28 revision removed protocol-level sessions: a server must not mint or echo
Mcp-Session-Idunder it. Until now that held only by accident — the mint hangs off theinitializehandler and 2026-07-28 has no handshake — so compliance depended on an SDK routing detail rather than on anything the SDK checks.The era is now resolved per request, from the version an
initializebody declares or, failing that, from the same fallback chain that resolves client identity. Nothing branches on which SDK major is installed: one v2 server serves both revisions, request by request. An unknown version counts as legacy, so a v1 client that declares nothing keeps the session header it has always had. (2026-08-10)v0.11.3Compare Source
Patch Changes
#4465
9ffdb00Thanks @gesh! - Record the protocol version for 2025-11-25 traffic served by a per-request server.That revision carries the negotiated version at the
initializehandshake, so an MCP SDK v2 server built per HTTP request has no way to know it: the instance handling a latertools/callnever saw the handshake, and a legacy-era request carries no_metaenvelope for the identity chain to read. Those events went out with no$mcp_protocol_version.The chain gains the one carrier that era does have — the
MCP-Protocol-Versionrequest header, which 2025-11-25 requires a client to send on every request afterinitialize. It is read after the protocol-level envelope andparams._metaand before the server's own accessors, so a modern-era request still prefers the value the protocol gives it, and no era is branched on. (2026-08-10)v0.11.2Compare Source
Patch Changes
#4463
b8e5d06Thanks @gesh! - Resolve client name, version and protocol version through a fallback chain, so events from an MCP SDK v2 server carry them.MCP SDK v2 lifts the reserved
io.modelcontextprotocol/*keys —clientInfo,protocolVersion,clientCapabilities— out ofparams._metawhile parsing a request, and puts them on the request envelope. We only readparams._meta, which is empty by the time a handler runs, so$mcp_client_name,$mcp_client_versionand$mcp_protocol_versionwent missing on exactly the modern-era traffic that carries them per request rather than atinitialize.Identity is now resolved field by field through three sources in order: the v2 request envelope, then
params._meta, then the server's owngetClientVersion()and (v2-only)getNegotiatedProtocolVersion(). A chain rather than a branch, because the same v2 server serves 2025-era requests routinely — era is a per-request property, never a module constant — and because a field one source cannot answer may still be known to the next. (2026-08-10)#4464
8b5165eThanks @gesh! - Install and type-check cleanly on a project that has only MCP SDK v2.@modelcontextprotocol/sdk(v1) was a required peer, so installing@posthog/mcpinto a project built on@modelcontextprotocol/server(v2) pulled the entire v1 SDK in as an auto-installed peer — 87 packages where 1 was wanted — and tooling that walks the dependency tree reported it as missing when it was absent. Both majors are now declared and both are optional, which is what the code has always assumed: no@modelcontextprotocol/*package is imported at runtime, and server shapes are detected structurally.Making the peer optional exposed a second half of the same problem. The published type declarations still imported
CallToolResultandListToolsResultfrom@modelcontextprotocol/sdk/types.js, so a consumer without the v1 SDK hitTS2307on an install that otherwise worked — fine at runtime, broken undertscwithoutskipLibCheck. Those MCP wire shapes are now declared structurally intypes.tstoo.The shapes we read are open-ended, so a value typed by either SDK assigns to them. What the package hands back is typed precisely and stays assignable to the SDK's own
CallToolResult, sogetMoreToolsResult()can still be returned straight from a tool callback. (2026-08-10)v0.11.1Compare Source
Patch Changes
#4462
2fc1211Thanks @gesh! - Instrument high-levelMcpServerinstances from MCP TypeScript SDK v2, and read request headers from either SDK major.The compatibility gate required
typeof server.tool === 'function'. SDK v2 dropped the deprecatedtool()in favour ofregisterTool(), so every v2 high-level server failed the check — and sinceinstrument()catches compatibility failures and returns a working-looking handle, it failed silently: no throw, no warning at the call site, and no$mcp_*events at all. The gate now accepts either registration method, and every shape question it asks is answered by a structural probe in the newdetect.tsrather than by a version or protocol constant.Opening the gate is also what first sends v2-shaped request context to header reads, so both halves ship together. The SDK's own reads go through a new
getRequestHeaders(extra), which takes headers from v2'sctx.http.req(a WHATWGRequest, whose headers only answer to.get()) as well as v1'sextra.requestInfo.headers, and returns a plain lowercase-keyed object either way. It is duck-typed on.entriesrather thaninstanceof Headers, so aHeadersfrom another realm — workerd and other edge runtimes — is read correctly.getRequestHeadersis exported, becauseidentify,intentFallback,eventPropertiesandbeforeSendstill receive the SDK'sextraunchanged — we deliberately do not synthesise a v1requestInfoon v2, as a partially faked shape is worse than an absent one. Hosts reading headers in a callback migrate in one line:v0.11.0Compare Source
Minor Changes
#4419
e3be62fThanks @lucasheriques! - Capture the calling client's User-Agent and vendor client header on every auto-captured MCP event, as$mcp_client_user_agentand$mcp_vendor_client.MCP's own
clientInfocan't tell a vendor's products apart — Anthropic reportsclientInfo.name = "claude-code"from the CLI, the Agent SDK, the VS Code extension and the desktop app alike, so$mcp_client_namecollapses them into one bucket. The surface is only visible in the User-Agent parenthetical (claude-code/2.1.0 (cli)vs(sdk-ts)vs(claude-vscode)), so capturing it is what lets you see which of your integrations traffic actually comes from.Automatic on HTTP transports (
instrument()reads the headers per request); stdio and in-memory servers, which have no headers, are unchanged. On thePostHogMCPcustom-dispatcher path, passclientUserAgent/vendorClienton your capture calls. Both values are recorded raw — PostHog resolves them to friendly product labels at query time, so labels keep improving without an SDK upgrade. (2026-08-07)v0.10.9Compare Source
Patch Changes
#4461
f457521Thanks @gesh! - Wrap request handlers registered with a method string, and stop breaking three-argument registrations. MCP TypeScript SDK v2 callssetRequestHandler('tools/call', handler)where v1 passed a Zod schema, soinstrument()could not name those registrations and left them unwrapped — a handler bound afterinstrument()silently replaced the analytics wrapper, and no$mcp_tool_callor$mcp_tools_listwas captured. Frameworks that attach handlers post-construction, such as@rekog/mcp-nest, do exactly this on every request.The patched
setRequestHandlernow also forwards every argument it is given. v2's three-argument form for custom methods —setRequestHandler(method, { params, result }, handler)— previously lost its handler and threwsetRequestHandler: handler is required, taking down the host server rather than just instrumentation. (2026-08-07)#4450
69e47bdThanks @gesh! - Register the synthetictools/callfallback by writing into the server's handler map instead of callingsetRequestHandler. Instrumenting a low-levelServerthat never declared atoolscapability no longer fails withServer does not support toolsand leaves instrumentation half-applied — it now instruments cleanly, and answers a call for a tool no dispatcher claims withUnknown tool: <name>. This also removes the last runtime@modelcontextprotocol/sdkimport from the published bundle; the SDK is now referenced only as a type.(2026-08-07)
v0.10.8Compare Source
Patch Changes
#4433
c514a34Thanks @gesh! - Deliver theconversation_idsession handle on errored tool results, and inject it intothe virtual
get_more_toolstool. A first call that fails no longer sends the agent'sretry into a different conversation, and a reported capability gap now groups with the
work that hit it. (2026-08-06)
#4428
7322893Thanks @gesh! - Use an agent-suppliedconversation_idas the session anchor, so tool calls in oneconversation share a
$session_idacross reconnects, restarts, and per-request serverinstances. Only a handle the SDK could have minted is accepted; a value the agent invented
is replaced with a fresh one, so two callers cannot land in the same session by sending the
same string. (2026-08-06)
#4431
955df8dThanks @gesh! - Mirror theconversation_idsession handle intostructuredContentfor tools whoseoutput schema declares
_mcp_instructions. Clients that read structured results neversaw the handle in
content, so correlation for those tools was zero. (2026-08-06)#4430
e6d9295Thanks @gesh! - Declare an optional_mcp_instructionsproperty on the output schema of tools thatadvertise one, when
enableConversationIdis on. Inert by itself — it is the schemadeclaration that makes a later change able to mirror the conversation handle into
structuredContentwithout failing client-side validation. (2026-08-06)Updated dependencies [
4751b33,64ba193]:v0.10.7Compare Source
Patch Changes
632049cThanks @marandaneto! - Prevent concurrent MCP requests from leaking identity and session attribution.(2026-08-04)
facb4c1]:v0.10.6Compare Source
Patch Changes
1eab19aThanks @marandaneto! - Preserve real missing-capability tools when their names collide with the configured virtual tool.Restore
$mcp_tool_callanalytics for low-level servers that register their tool dispatcher after instrumentation. (2026-08-04)v0.10.5Compare Source
Patch Changes
d2f5041Thanks @marandaneto! - Isolate logger configuration per instrumented MCP server.(2026-08-04)
v0.10.4Compare Source
Patch Changes
4d8df50Thanks @marandaneto! - Preserve tool-owned analytics arguments across event capture, low-level servers, and strict schemas.(2026-08-04)
v0.10.3Compare Source
Patch Changes
57f371eThanks @marandaneto! - Preserve user-definedcontextandconversation_idtool arguments.(2026-08-03)
7c3a9af]:v0.10.2Compare Source
Patch Changes
575c5e7Thanks @marandaneto! - Redact sensitive exception messages and large binary payload encodings from MCP analytics.(2026-07-31)
Configuration
📅 Schedule: (in timezone UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.