@posthog/mcp 0.10.9 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/README.md +39 -0
  2. package/dist/extensions/capture.d.ts.map +1 -1
  3. package/dist/extensions/capture.js +2 -0
  4. package/dist/extensions/capture.mjs +2 -0
  5. package/dist/extensions/compatibility.d.ts.map +1 -1
  6. package/dist/extensions/compatibility.js +14 -18
  7. package/dist/extensions/compatibility.mjs +10 -14
  8. package/dist/extensions/constants.d.ts +2 -0
  9. package/dist/extensions/constants.d.ts.map +1 -1
  10. package/dist/extensions/constants.js +3 -1
  11. package/dist/extensions/constants.mjs +3 -1
  12. package/dist/extensions/context-parameters.d.ts.map +1 -1
  13. package/dist/extensions/conversation-id.d.ts +2 -13
  14. package/dist/extensions/conversation-id.d.ts.map +1 -1
  15. package/dist/extensions/detect.d.ts +45 -0
  16. package/dist/extensions/detect.d.ts.map +1 -0
  17. package/dist/extensions/detect.js +90 -0
  18. package/dist/extensions/detect.mjs +35 -0
  19. package/dist/extensions/headers.d.ts +33 -0
  20. package/dist/extensions/headers.d.ts.map +1 -0
  21. package/dist/extensions/headers.js +54 -0
  22. package/dist/extensions/headers.mjs +17 -0
  23. package/dist/extensions/instrument-highlevel.d.ts.map +1 -1
  24. package/dist/extensions/instrument-lowlevel.d.ts.map +1 -1
  25. package/dist/extensions/instrumentation.d.ts +7 -0
  26. package/dist/extensions/instrumentation.d.ts.map +1 -1
  27. package/dist/extensions/instrumentation.js +7 -2
  28. package/dist/extensions/instrumentation.mjs +7 -2
  29. package/dist/extensions/internal.d.ts.map +1 -1
  30. package/dist/extensions/internal.js +2 -0
  31. package/dist/extensions/internal.mjs +2 -0
  32. package/dist/extensions/output-instructions.d.ts +6 -8
  33. package/dist/extensions/output-instructions.d.ts.map +1 -1
  34. package/dist/extensions/posthog-events.js +4 -0
  35. package/dist/extensions/posthog-events.mjs +4 -0
  36. package/dist/extensions/posthog-mcp.d.ts.map +1 -1
  37. package/dist/extensions/posthog-mcp.js +3 -0
  38. package/dist/extensions/posthog-mcp.mjs +3 -0
  39. package/dist/extensions/request-headers.d.ts +36 -0
  40. package/dist/extensions/request-headers.d.ts.map +1 -0
  41. package/dist/extensions/request-headers.js +62 -0
  42. package/dist/extensions/request-headers.mjs +28 -0
  43. package/dist/extensions/session-token.d.ts.map +1 -1
  44. package/dist/extensions/session-token.js +5 -14
  45. package/dist/extensions/session-token.mjs +2 -11
  46. package/dist/extensions/session.d.ts +4 -3
  47. package/dist/extensions/session.d.ts.map +1 -1
  48. package/dist/extensions/session.js +2 -1
  49. package/dist/extensions/session.mjs +2 -1
  50. package/dist/extensions/sink.d.ts +4 -6
  51. package/dist/extensions/sink.d.ts.map +1 -1
  52. package/dist/extensions/tools.d.ts.map +1 -1
  53. package/dist/extensions/transport-identity.d.ts +64 -0
  54. package/dist/extensions/transport-identity.d.ts.map +1 -0
  55. package/dist/extensions/transport-identity.js +64 -0
  56. package/dist/extensions/transport-identity.mjs +21 -0
  57. package/dist/extensions/truncation.d.ts.map +1 -1
  58. package/dist/extensions/truncation.js +2 -0
  59. package/dist/extensions/truncation.mjs +2 -0
  60. package/dist/index.d.ts +2 -1
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +11 -7
  63. package/dist/index.mjs +2 -1
  64. package/dist/types.d.ts +52 -0
  65. package/dist/types.d.ts.map +1 -1
  66. package/dist/version.d.ts +1 -1
  67. package/dist/version.js +1 -1
  68. package/dist/version.mjs +1 -1
  69. package/package.json +2 -2
  70. package/src/extensions/capture.ts +6 -0
  71. package/src/extensions/compatibility.ts +25 -33
  72. package/src/extensions/constants.ts +2 -0
  73. package/src/extensions/context-parameters.ts +3 -11
  74. package/src/extensions/conversation-id.ts +5 -17
  75. package/src/extensions/detect.ts +78 -0
  76. package/src/extensions/headers.ts +52 -0
  77. package/src/extensions/instrument-highlevel.ts +0 -1
  78. package/src/extensions/instrument-lowlevel.ts +0 -1
  79. package/src/extensions/instrumentation.ts +32 -39
  80. package/src/extensions/internal.ts +6 -5
  81. package/src/extensions/output-instructions.ts +6 -8
  82. package/src/extensions/posthog-events.ts +14 -0
  83. package/src/extensions/posthog-mcp.ts +7 -5
  84. package/src/extensions/request-headers.ts +76 -0
  85. package/src/extensions/session-token.ts +3 -15
  86. package/src/extensions/session.ts +23 -36
  87. package/src/extensions/sink.ts +4 -6
  88. package/src/extensions/tools.ts +3 -6
  89. package/src/extensions/transport-identity.ts +100 -0
  90. package/src/extensions/truncation.ts +4 -0
  91. package/src/index.ts +4 -0
  92. package/src/types.ts +51 -0
  93. package/src/version.ts +1 -1
@@ -0,0 +1,64 @@
1
+ import type { CompatibleRequestHandlerExtra, McpEvent } from '../types';
2
+ /**
3
+ * Transport-level client identity: the two request headers that say *which
4
+ * product* is calling, where `clientInfo` only says which client library is.
5
+ *
6
+ * MCP's own identity fields are too coarse to attribute usage to a surface. A
7
+ * vendor ships many products on one client: Anthropic reports
8
+ * `clientInfo.name = "claude-code"` from the CLI, the Agent SDK, the VS Code
9
+ * extension, the desktop app and more, so `$mcp_client_name` collapses all of
10
+ * them into one bucket. The distinguishing detail exists only in the User-Agent
11
+ * parenthetical — `claude-code/2.1.0 (cli)` vs `claude-code/2.1.0 (sdk-ts)` vs
12
+ * `claude-code/2.1.0 (claude-vscode)` — alongside vendor-specific headers like
13
+ * `x-anthropic-client`. Capturing them is the only way a server owner can tell
14
+ * their surfaces apart.
15
+ *
16
+ * We capture the raw strings and classify nothing. No vendor table, no product
17
+ * labels: friendly names are resolved at query time server-side, so labels can
18
+ * improve (and new surfaces can appear) without waiting on an SDK release, and
19
+ * there is exactly one resolver rather than one per installed SDK version.
20
+ *
21
+ * This is deliberately separate from `client-identity.ts`. That module reads the
22
+ * request body's `_meta` and therefore works on every transport, including stdio
23
+ * and in-memory. Headers exist only on HTTP transports, so everything here is a
24
+ * silent no-op elsewhere and those events stay byte-identical to before.
25
+ */
26
+ /** Header carrying the client's product/surface, e.g. `claude-code/2.1.0 (cli)`. */
27
+ export declare const CLIENT_USER_AGENT_HEADER = "user-agent";
28
+ /**
29
+ * Vendor-specific client header. Anthropic's clients send it alongside the
30
+ * User-Agent; it is captured verbatim as a second, independent signal rather
31
+ * than merged into one, so a query-time resolver can prefer whichever the
32
+ * vendor keeps stable.
33
+ */
34
+ export declare const VENDOR_CLIENT_HEADER = "x-anthropic-client";
35
+ export interface TransportIdentity {
36
+ clientUserAgent?: string;
37
+ vendorClient?: string;
38
+ }
39
+ /**
40
+ * Reads the transport identity headers off the request. Returns `undefined`
41
+ * when the request carries neither — including every stdio and in-memory
42
+ * request, which has no HTTP headers at all. Never throws.
43
+ *
44
+ * Sourced through `getRequestHeaders` rather than `extra.requestInfo.headers`
45
+ * directly: MCP SDK v2 puts the request at `extra.http.req` as a WHATWG
46
+ * `Request`, so a v1-shaped read finds nothing and this whole feature would be
47
+ * silently inert on exactly the servers being adopted now.
48
+ */
49
+ export declare function readTransportIdentity(extra: CompatibleRequestHandlerExtra | undefined): TransportIdentity | undefined;
50
+ /**
51
+ * Stamps the transport identity onto the event being built for *this* request,
52
+ * so it carries `$mcp_client_user_agent` and `$mcp_vendor_client`.
53
+ *
54
+ * Headers are per-request, so this writes to the event — a per-request object —
55
+ * and never to the server-wide `sessionInfo`. One instrumented server can
56
+ * multiplex concurrent requests from different clients, and caching a header
57
+ * into shared state would attribute one client's surface to another's event.
58
+ * `client-identity.ts` and `capture.ts` guard the same hazard.
59
+ *
60
+ * Values are capped downstream by `truncateEvent`, which runs on every capture
61
+ * path, so a hostile 1MB header cannot inflate an event.
62
+ */
63
+ export declare function stampTransportIdentity(event: McpEvent, extra: CompatibleRequestHandlerExtra | undefined): void;
64
+ //# sourceMappingURL=transport-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport-identity.d.ts","sourceRoot":"","sources":["../../src/extensions/transport-identity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAIvE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,oFAAoF;AACpF,eAAO,MAAM,wBAAwB,eAAe,CAAA;AAEpD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,uBAAuB,CAAA;AAExD,MAAM,WAAW,iBAAiB;IAChC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,6BAA6B,GAAG,SAAS,GAAG,iBAAiB,GAAG,SAAS,CAkBrH;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,6BAA6B,GAAG,SAAS,GAAG,IAAI,CAW9G"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ VENDOR_CLIENT_HEADER: ()=>VENDOR_CLIENT_HEADER,
28
+ stampTransportIdentity: ()=>stampTransportIdentity,
29
+ CLIENT_USER_AGENT_HEADER: ()=>CLIENT_USER_AGENT_HEADER,
30
+ readTransportIdentity: ()=>readTransportIdentity
31
+ });
32
+ const external_headers_js_namespaceObject = require("./headers.js");
33
+ const external_request_headers_js_namespaceObject = require("./request-headers.js");
34
+ const CLIENT_USER_AGENT_HEADER = 'user-agent';
35
+ const VENDOR_CLIENT_HEADER = 'x-anthropic-client';
36
+ function readTransportIdentity(extra) {
37
+ const headers = (0, external_request_headers_js_namespaceObject.getRequestHeaders)(extra);
38
+ if (!headers) return;
39
+ const result = {};
40
+ const clientUserAgent = (0, external_headers_js_namespaceObject.readHeaderValue)(headers, CLIENT_USER_AGENT_HEADER);
41
+ if (clientUserAgent) result.clientUserAgent = clientUserAgent;
42
+ const vendorClient = (0, external_headers_js_namespaceObject.readHeaderValue)(headers, VENDOR_CLIENT_HEADER);
43
+ if (vendorClient) result.vendorClient = vendorClient;
44
+ return result.clientUserAgent || result.vendorClient ? result : void 0;
45
+ }
46
+ function stampTransportIdentity(event, extra) {
47
+ const identity = readTransportIdentity(extra);
48
+ if (!identity) return;
49
+ if (identity.clientUserAgent) event.clientUserAgent = identity.clientUserAgent;
50
+ if (identity.vendorClient) event.vendorClient = identity.vendorClient;
51
+ }
52
+ exports.CLIENT_USER_AGENT_HEADER = __webpack_exports__.CLIENT_USER_AGENT_HEADER;
53
+ exports.VENDOR_CLIENT_HEADER = __webpack_exports__.VENDOR_CLIENT_HEADER;
54
+ exports.readTransportIdentity = __webpack_exports__.readTransportIdentity;
55
+ exports.stampTransportIdentity = __webpack_exports__.stampTransportIdentity;
56
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
57
+ "CLIENT_USER_AGENT_HEADER",
58
+ "VENDOR_CLIENT_HEADER",
59
+ "readTransportIdentity",
60
+ "stampTransportIdentity"
61
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
62
+ Object.defineProperty(exports, '__esModule', {
63
+ value: true
64
+ });
@@ -0,0 +1,21 @@
1
+ import { readHeaderValue } from "./headers.mjs";
2
+ import { getRequestHeaders } from "./request-headers.mjs";
3
+ const CLIENT_USER_AGENT_HEADER = 'user-agent';
4
+ const VENDOR_CLIENT_HEADER = 'x-anthropic-client';
5
+ function readTransportIdentity(extra) {
6
+ const headers = getRequestHeaders(extra);
7
+ if (!headers) return;
8
+ const result = {};
9
+ const clientUserAgent = readHeaderValue(headers, CLIENT_USER_AGENT_HEADER);
10
+ if (clientUserAgent) result.clientUserAgent = clientUserAgent;
11
+ const vendorClient = readHeaderValue(headers, VENDOR_CLIENT_HEADER);
12
+ if (vendorClient) result.vendorClient = vendorClient;
13
+ return result.clientUserAgent || result.vendorClient ? result : void 0;
14
+ }
15
+ function stampTransportIdentity(event, extra) {
16
+ const identity = readTransportIdentity(extra);
17
+ if (!identity) return;
18
+ if (identity.clientUserAgent) event.clientUserAgent = identity.clientUserAgent;
19
+ if (identity.vendorClient) event.vendorClient = identity.vendorClient;
20
+ }
21
+ export { CLIENT_USER_AGENT_HEADER, VENDOR_CLIENT_HEADER, readTransportIdentity, stampTransportIdentity };
@@ -1 +1 @@
1
- {"version":3,"file":"truncation.d.ts","sourceRoot":"","sources":["../../src/extensions/truncation.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAmB,KAAK,EAAc,QAAQ,EAAE,MAAM,UAAU,CAAA;AAG5E,eAAO,MAAM,SAAS,KAAK,CAAA;AAC3B,eAAO,MAAM,WAAW,MAAM,CAAA;AAC9B,eAAO,MAAM,iBAAiB,QAAS,CAAA;AACvC,eAAO,MAAM,eAAe,SAAU,CAAA;AAgBtC;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,OAAO,EACd,KAAK,GAAE,MAAkB,EACzB,UAAU,GAAE,MAAoB,EAChC,eAAe,GAAE,MAA0B,GAC1C,OAAO,CAGT;AAkXD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,KAAK,GAAG,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAoCrE"}
1
+ {"version":3,"file":"truncation.d.ts","sourceRoot":"","sources":["../../src/extensions/truncation.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAmB,KAAK,EAAc,QAAQ,EAAE,MAAM,UAAU,CAAA;AAG5E,eAAO,MAAM,SAAS,KAAK,CAAA;AAC3B,eAAO,MAAM,WAAW,MAAM,CAAA;AAC9B,eAAO,MAAM,iBAAiB,QAAS,CAAA;AACvC,eAAO,MAAM,eAAe,SAAU,CAAA;AAgBtC;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,OAAO,EACd,KAAK,GAAE,MAAkB,EACzB,UAAU,GAAE,MAAoB,EAChC,eAAe,GAAE,MAA0B,GAC1C,OAAO,CAGT;AAkXD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,KAAK,GAAG,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAwCrE"}
@@ -250,6 +250,8 @@ function truncateEvent(event) {
250
250
  result.serverVersion = truncateString(result.serverVersion, MAX_METADATA_LENGTH);
251
251
  result.clientName = truncateString(result.clientName, MAX_METADATA_LENGTH);
252
252
  result.clientVersion = truncateString(result.clientVersion, MAX_METADATA_LENGTH);
253
+ result.clientUserAgent = truncateString(result.clientUserAgent, MAX_METADATA_LENGTH);
254
+ result.vendorClient = truncateString(result.vendorClient, MAX_METADATA_LENGTH);
253
255
  result.errorType = truncateString(result.errorType, MAX_METADATA_LENGTH);
254
256
  if (null != result.error && 'object' == typeof result.error) result.error = truncateExceptionList(result.error);
255
257
  result.response = truncateResponseContent(result.response);
@@ -217,6 +217,8 @@ function truncateEvent(event) {
217
217
  result.serverVersion = truncateString(result.serverVersion, MAX_METADATA_LENGTH);
218
218
  result.clientName = truncateString(result.clientName, MAX_METADATA_LENGTH);
219
219
  result.clientVersion = truncateString(result.clientVersion, MAX_METADATA_LENGTH);
220
+ result.clientUserAgent = truncateString(result.clientUserAgent, MAX_METADATA_LENGTH);
221
+ result.vendorClient = truncateString(result.vendorClient, MAX_METADATA_LENGTH);
220
222
  result.errorType = truncateString(result.errorType, MAX_METADATA_LENGTH);
221
223
  if (null != result.error && 'object' == typeof result.error) result.error = truncateExceptionList(result.error);
222
224
  result.response = truncateResponseContent(result.response);
package/dist/index.d.ts CHANGED
@@ -50,11 +50,12 @@ declare function instrumentMutator<TServer>(posthog: PostHog, options?: MCPAnaly
50
50
  export { deriveSessionIdFromMCPSession, newSessionId };
51
51
  export { MCP_SESSION_HEADER, decodeSessionId, encodeSessionId, type SessionTokenPayload, } from './extensions/session-token';
52
52
  export { POSTHOG_MCP_ANALYTICS_SOURCE, PostHogMCPAnalyticsEvent, PostHogMCPAnalyticsProperty, } from './extensions/constants';
53
+ export { getRequestHeaders } from './extensions/request-headers';
53
54
  export { PostHogMCP, type PostHogMCPOptions } from './extensions/posthog-mcp';
54
55
  export { getMoreToolsResult } from './extensions/tools';
55
56
  export { setLogger } from './extensions/logger';
56
57
  export { PostHog, type PostHogOptions } from 'posthog-node';
57
- export type { BeforeSendFn, CaptureEventData, InitializeCaptureData, McpAnalytics, McpCaptureCommon, MCPAnalyticsContextOptions, MCPAnalyticsIntentSource, MCPAnalyticsOptions, MissingCapabilityCaptureData, PreparedToolCall, PrepareToolListOptions, ToolCallCaptureData, ToolsListCaptureData, UserIdentity, } from './types';
58
+ export type { BeforeSendFn, CaptureEventData, InitializeCaptureData, McpAnalytics, McpCaptureCommon, MCPAnalyticsContextOptions, MCPAnalyticsIntentSource, MCPAnalyticsOptions, MissingCapabilityCaptureData, PreparedToolCall, PrepareToolListOptions, RequestHeaderBag, ToolCallCaptureData, ToolsListCaptureData, UserIdentity, } from './types';
58
59
  export type IdentifyFunction = MCPAnalyticsOptions['identify'];
59
60
  export { instrument, instrumentMutator };
60
61
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAQ3C,OAAO,EAAE,6BAA6B,EAAkB,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGlG,OAAO,KAAK,EAGV,YAAY,EAEZ,mBAAmB,EAGpB,MAAM,SAAS,CAAA;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,iBAAS,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,mBAAwB,GAAG,YAAY,CAiCtG;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,iBAAS,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAKjH;AAuFD,OAAO,EAAE,6BAA6B,EAAE,YAAY,EAAE,CAAA;AAItD,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,KAAK,mBAAmB,GACzB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAI/C,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AAC3D,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,0BAA0B,EAC1B,wBAAwB,EACxB,mBAAmB,EACnB,4BAA4B,EAC5B,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,GACb,MAAM,SAAS,CAAA;AAChB,MAAM,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAQ3C,OAAO,EAAE,6BAA6B,EAAkB,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGlG,OAAO,KAAK,EAGV,YAAY,EAEZ,mBAAmB,EAGpB,MAAM,SAAS,CAAA;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,iBAAS,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,mBAAwB,GAAG,YAAY,CAiCtG;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,iBAAS,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAKjH;AAuFD,OAAO,EAAE,6BAA6B,EAAE,YAAY,EAAE,CAAA;AAItD,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,KAAK,mBAAmB,GACzB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAA;AAG/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAI/C,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AAC3D,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,0BAA0B,EAC1B,wBAAwB,EACxB,mBAAmB,EACnB,4BAA4B,EAC5B,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,GACb,MAAM,SAAS,CAAA;AAChB,MAAM,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAA"}
package/dist/index.js CHANGED
@@ -24,20 +24,21 @@ var __webpack_require__ = {};
24
24
  var __webpack_exports__ = {};
25
25
  __webpack_require__.r(__webpack_exports__);
26
26
  __webpack_require__.d(__webpack_exports__, {
27
- setLogger: ()=>logger_js_namespaceObject.setLogger,
28
27
  PostHog: ()=>external_posthog_node_namespaceObject.PostHog,
29
- PostHogMCP: ()=>posthog_mcp_js_namespaceObject.PostHogMCP,
30
28
  POSTHOG_MCP_ANALYTICS_SOURCE: ()=>constants_js_namespaceObject.POSTHOG_MCP_ANALYTICS_SOURCE,
31
29
  deriveSessionIdFromMCPSession: ()=>session_js_namespaceObject.deriveSessionIdFromMCPSession,
32
- instrument: ()=>instrument,
33
30
  decodeSessionId: ()=>session_token_js_namespaceObject.decodeSessionId,
34
- newSessionId: ()=>session_js_namespaceObject.newSessionId,
35
31
  MCP_SESSION_HEADER: ()=>session_token_js_namespaceObject.MCP_SESSION_HEADER,
36
- instrumentMutator: ()=>instrumentMutator,
37
32
  PostHogMCPAnalyticsEvent: ()=>constants_js_namespaceObject.PostHogMCPAnalyticsEvent,
33
+ getRequestHeaders: ()=>request_headers_js_namespaceObject.getRequestHeaders,
34
+ PostHogMCPAnalyticsProperty: ()=>constants_js_namespaceObject.PostHogMCPAnalyticsProperty,
35
+ PostHogMCP: ()=>posthog_mcp_js_namespaceObject.PostHogMCP,
36
+ newSessionId: ()=>session_js_namespaceObject.newSessionId,
37
+ instrument: ()=>instrument,
38
+ instrumentMutator: ()=>instrumentMutator,
39
+ setLogger: ()=>logger_js_namespaceObject.setLogger,
38
40
  encodeSessionId: ()=>session_token_js_namespaceObject.encodeSessionId,
39
- getMoreToolsResult: ()=>tools_js_namespaceObject.getMoreToolsResult,
40
- PostHogMCPAnalyticsProperty: ()=>constants_js_namespaceObject.PostHogMCPAnalyticsProperty
41
+ getMoreToolsResult: ()=>tools_js_namespaceObject.getMoreToolsResult
41
42
  });
42
43
  const compatibility_js_namespaceObject = require("./extensions/compatibility.js");
43
44
  const sink_js_namespaceObject = require("./extensions/sink.js");
@@ -51,6 +52,7 @@ const instrument_lowlevel_js_namespaceObject = require("./extensions/instrument-
51
52
  const instrument_highlevel_js_namespaceObject = require("./extensions/instrument-highlevel.js");
52
53
  const session_token_js_namespaceObject = require("./extensions/session-token.js");
53
54
  const constants_js_namespaceObject = require("./extensions/constants.js");
55
+ const request_headers_js_namespaceObject = require("./extensions/request-headers.js");
54
56
  const posthog_mcp_js_namespaceObject = require("./extensions/posthog-mcp.js");
55
57
  const tools_js_namespaceObject = require("./extensions/tools.js");
56
58
  const external_posthog_node_namespaceObject = require("posthog-node");
@@ -150,6 +152,7 @@ exports.decodeSessionId = __webpack_exports__.decodeSessionId;
150
152
  exports.deriveSessionIdFromMCPSession = __webpack_exports__.deriveSessionIdFromMCPSession;
151
153
  exports.encodeSessionId = __webpack_exports__.encodeSessionId;
152
154
  exports.getMoreToolsResult = __webpack_exports__.getMoreToolsResult;
155
+ exports.getRequestHeaders = __webpack_exports__.getRequestHeaders;
153
156
  exports.instrument = __webpack_exports__.instrument;
154
157
  exports.instrumentMutator = __webpack_exports__.instrumentMutator;
155
158
  exports.newSessionId = __webpack_exports__.newSessionId;
@@ -165,6 +168,7 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
165
168
  "deriveSessionIdFromMCPSession",
166
169
  "encodeSessionId",
167
170
  "getMoreToolsResult",
171
+ "getRequestHeaders",
168
172
  "instrument",
169
173
  "instrumentMutator",
170
174
  "newSessionId",
package/dist/index.mjs CHANGED
@@ -10,6 +10,7 @@ import { instrumentLowLevelServer } from "./extensions/instrument-lowlevel.mjs";
10
10
  import { instrumentHighLevelServer } from "./extensions/instrument-highlevel.mjs";
11
11
  import { MCP_SESSION_HEADER, decodeSessionId, encodeSessionId } from "./extensions/session-token.mjs";
12
12
  import { POSTHOG_MCP_ANALYTICS_SOURCE, PostHogMCPAnalyticsEvent, PostHogMCPAnalyticsProperty } from "./extensions/constants.mjs";
13
+ import { getRequestHeaders } from "./extensions/request-headers.mjs";
13
14
  import { PostHogMCP } from "./extensions/posthog-mcp.mjs";
14
15
  import { getMoreToolsResult } from "./extensions/tools.mjs";
15
16
  import { PostHog } from "posthog-node";
@@ -99,4 +100,4 @@ async function captureCustomEvent(lowLevelServer, eventData) {
99
100
  await captureEvent(lowLevelServer, event, trackingData.logger);
100
101
  trackingData.logger(`Captured event "${eventData.event}" for session ${trackingData.sessionId}`);
101
102
  }
102
- export { MCP_SESSION_HEADER, POSTHOG_MCP_ANALYTICS_SOURCE, PostHog, PostHogMCP, PostHogMCPAnalyticsEvent, PostHogMCPAnalyticsProperty, decodeSessionId, deriveSessionIdFromMCPSession, encodeSessionId, getMoreToolsResult, instrument, instrumentMutator, newSessionId, setLogger };
103
+ export { MCP_SESSION_HEADER, POSTHOG_MCP_ANALYTICS_SOURCE, PostHog, PostHogMCP, PostHogMCPAnalyticsEvent, PostHogMCPAnalyticsProperty, decodeSessionId, deriveSessionIdFromMCPSession, encodeSessionId, getMoreToolsResult, getRequestHeaders, instrument, instrumentMutator, newSessionId, setLogger };
package/dist/types.d.ts CHANGED
@@ -128,6 +128,15 @@ export type BeforeSendFn = (event: PostHogCaptureEvent) => MaybePromise<PostHogC
128
128
  export interface Event {
129
129
  actorId?: string;
130
130
  clientName?: string;
131
+ /**
132
+ * Raw `user-agent` request header → `$mcp_client_user_agent`. HTTP transports
133
+ * only. The only place a client's *surface* is distinguishable: one vendor
134
+ * ships many products under a single `clientName` (Anthropic's CLI, Agent SDK
135
+ * and VS Code extension all report `claude-code`), and only the User-Agent
136
+ * parenthetical tells them apart. Captured verbatim — surfaces are resolved to
137
+ * friendly labels at query time, never in this SDK.
138
+ */
139
+ clientUserAgent?: string;
131
140
  clientVersion?: string;
132
141
  conversationId?: string;
133
142
  duration?: number;
@@ -176,6 +185,12 @@ export interface Event {
176
185
  toolDescription?: string;
177
186
  userIntent?: string;
178
187
  userIntentSource?: MCPAnalyticsIntentSource;
188
+ /**
189
+ * Raw vendor client header (`x-anthropic-client`) → `$mcp_vendor_client`. HTTP
190
+ * transports only. A second, independent surface signal alongside
191
+ * {@link Event.clientUserAgent}; captured verbatim, never classified.
192
+ */
193
+ vendorClient?: string;
179
194
  }
180
195
  /** A partially-built MCP event as it flows through the SDK before capture. */
181
196
  export type McpEvent = Partial<Event>;
@@ -184,13 +199,32 @@ export interface CompatibleRequestInfoLike {
184
199
  headers?: Record<string, string | string[] | undefined>;
185
200
  [key: string]: unknown;
186
201
  }
202
+ /**
203
+ * The HTTP request an MCP SDK v2 server attaches to the handler context, as a
204
+ * WHATWG `Request` — so `headers` answers to `.get()`, not to indexing.
205
+ */
206
+ export interface CompatibleHttpRequestLike {
207
+ req?: {
208
+ headers?: unknown;
209
+ [key: string]: unknown;
210
+ };
211
+ [key: string]: unknown;
212
+ }
187
213
  export interface CompatibleRequestHandlerExtra {
188
214
  headers?: Record<string, string | string[]>;
189
215
  sessionId?: string;
190
216
  /** Present on HTTP transports only — headers ride every request, unlike `clientInfo`. */
191
217
  requestInfo?: CompatibleRequestInfoLike;
218
+ /** Where MCP SDK v2 puts the same thing. Read both through `getRequestHeaders`. */
219
+ http?: CompatibleHttpRequestLike;
192
220
  [key: string]: unknown;
193
221
  }
222
+ /**
223
+ * HTTP headers normalised to lowercase keys, as `getRequestHeaders` returns
224
+ * them — a plain bag, so a host's existing `headers['authorization']` keeps
225
+ * working when only the source of the headers changes.
226
+ */
227
+ export type RequestHeaderBag = Record<string, string | string[]>;
194
228
  export interface ServerClientInfoLike {
195
229
  name?: string;
196
230
  version?: string;
@@ -310,6 +344,24 @@ export interface McpCaptureCommon {
310
344
  * not just the initialize event — the `PostHogMCP` client holds no per-session state.
311
345
  */
312
346
  protocolVersion?: string;
347
+ /**
348
+ * Raw `user-agent` request header → `$mcp_client_user_agent`. The
349
+ * `instrument()` path reads this off the transport automatically; a custom
350
+ * dispatcher has no `extra`, so pass `req.headers['user-agent']` yourself.
351
+ *
352
+ * Worth wiring up: it is the only signal that separates a vendor's surfaces
353
+ * (Anthropic's CLI, Agent SDK and VS Code extension all report
354
+ * `clientName: "claude-code"`, and only the User-Agent parenthetical —
355
+ * `(cli)` / `(sdk-ts)` / `(claude-vscode)` — tells them apart). Send it raw;
356
+ * PostHog resolves friendly product labels at query time.
357
+ */
358
+ clientUserAgent?: string;
359
+ /**
360
+ * Raw vendor client header → `$mcp_vendor_client`. Anthropic's clients send
361
+ * `x-anthropic-client`; pass it as a second, independent surface signal
362
+ * alongside {@link McpCaptureCommon.clientUserAgent}. Sent verbatim.
363
+ */
364
+ vendorClient?: string;
313
365
  /** Person properties → `$set` (e.g. `{ name, email, plan }`). */
314
366
  setProperties?: JsonRecord;
315
367
  /** Group memberships → `$groups`. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const version = "0.10.9";
1
+ export declare const version = "0.11.1";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -26,7 +26,7 @@ __webpack_require__.r(__webpack_exports__);
26
26
  __webpack_require__.d(__webpack_exports__, {
27
27
  version: ()=>version
28
28
  });
29
- const version = '0.10.9';
29
+ const version = '0.11.1';
30
30
  exports.version = __webpack_exports__.version;
31
31
  for(var __webpack_i__ in __webpack_exports__)if (-1 === [
32
32
  "version"
package/dist/version.mjs CHANGED
@@ -1,2 +1,2 @@
1
- const version = '0.10.9';
1
+ const version = '0.11.1';
2
2
  export { version };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@posthog/mcp",
3
- "version": "0.10.9",
3
+ "version": "0.11.1",
4
4
  "bugs": {
5
5
  "url": "https://github.com/PostHog/posthog-js/issues"
6
6
  },
@@ -28,7 +28,7 @@
28
28
  "module": "dist/index.mjs",
29
29
  "types": "dist/index.d.ts",
30
30
  "dependencies": {
31
- "@posthog/core": "^1.46.9"
31
+ "@posthog/core": "^1.47.0"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@babel/preset-env": "^7.27.1",
@@ -60,6 +60,12 @@ export function captureEvent(
60
60
  // over sessionInfo, so concurrent stateless requests stay isolated.
61
61
  clientName: eventInput.clientName ?? sessionInfo.clientName,
62
62
  clientVersion: eventInput.clientVersion ?? sessionInfo.clientVersion,
63
+ // Read from this request's headers only — there is deliberately no
64
+ // sessionInfo fallback to coalesce with. Headers ride every HTTP request, so
65
+ // a remembered value would just be a chance to attribute a sibling request's
66
+ // client surface to this event.
67
+ clientUserAgent: eventInput.clientUserAgent,
68
+ vendorClient: eventInput.vendorClient,
63
69
  identifyActorGivenId: sessionInfo.identifyActorGivenId,
64
70
  identifyActorData: sessionInfo.identifyActorData,
65
71
  groups: sessionInfo.identifyActorGroups,
@@ -4,6 +4,16 @@
4
4
  // Licensed under the MIT License: https://github.com/agentcathq/agentcat-typescript-sdk/blob/main/LICENSE
5
5
 
6
6
  import type { HighLevelMCPServerLike, MCPServerLike } from '../types'
7
+ import {
8
+ canRegisterTools,
9
+ canSetRequestHandler,
10
+ hasClientVersionAccessor,
11
+ hasNestedLowLevelServer,
12
+ hasRequestHandlerMap,
13
+ hasServerInfo,
14
+ hasToolRegistry,
15
+ isBareServerShape,
16
+ } from './detect'
7
17
  import type { LoggerFn } from './logger'
8
18
 
9
19
  type ServerRecord = Record<string, unknown>
@@ -21,26 +31,20 @@ type ServerRecord = Record<string, unknown>
21
31
  * - Server info structure
22
32
  */
23
33
 
24
- // Function to log compatibility information
25
34
  export function logCompatibilityWarning(logger: LoggerFn): void {
26
35
  logger(
27
36
  'PostHog MCP analytics SDK Compatibility: This version only supports Model Context Protocol TypeScript SDK v1.11 and above. Please upgrade if using an older version.'
28
37
  )
29
38
  }
30
39
 
31
- // Check if server has high-level structure (wrapper with .server property)
32
40
  export function isHighLevelServer(server: unknown): server is ServerRecord & { server: ServerRecord } {
33
- return (
34
- !!server && typeof server === 'object' && 'server' in server && !!server.server && typeof server.server === 'object'
35
- )
41
+ return hasNestedLowLevelServer(server)
36
42
  }
37
43
 
38
- // Check if server has low-level structure (no .server property)
39
44
  export function isLowLevelServer(server: unknown): server is ServerRecord {
40
- return !!server && typeof server === 'object' && !('server' in server)
45
+ return isBareServerShape(server)
41
46
  }
42
47
 
43
- // Type guard function that validates server compatibility and returns typed server
44
48
  export function isCompatibleServerType(server: unknown, logger: LoggerFn): MCPServerLike | HighLevelMCPServerLike {
45
49
  if (!server || typeof server !== 'object') {
46
50
  logCompatibilityWarning(logger)
@@ -50,32 +54,32 @@ export function isCompatibleServerType(server: unknown, logger: LoggerFn): MCPSe
50
54
  }
51
55
 
52
56
  if (isHighLevelServer(server)) {
53
- // Validate high-level server requirements
54
- if (!server._registeredTools || typeof server._registeredTools !== 'object') {
57
+ if (!hasToolRegistry(server)) {
55
58
  logCompatibilityWarning(logger)
56
59
  throw new Error(
57
60
  'PostHog MCP analytics SDK compatibility error: High-level server must have _registeredTools object. This requires MCP SDK v1.11 or higher.'
58
61
  )
59
62
  }
60
- if (typeof server.tool !== 'function') {
63
+ // Either registration method is enough. v1 has both; v2 dropped the
64
+ // deprecated tool() and kept registerTool(). Demanding tool() rejected every
65
+ // v2 high-level server, and instrument() swallows the rejection — so the
66
+ // integration looked healthy and captured nothing.
67
+ if (!canRegisterTools(server)) {
61
68
  logCompatibilityWarning(logger)
62
69
  throw new Error(
63
- 'PostHog MCP analytics SDK compatibility error: High-level server must have tool() method. This requires MCP SDK v1.11 or higher.'
70
+ 'PostHog MCP analytics SDK compatibility error: High-level server must have a registerTool() or tool() method. This requires MCP SDK v1.11 or higher.'
64
71
  )
65
72
  }
66
73
 
67
- // Validate the underlying low-level server
68
74
  const targetServer = server.server
69
75
  validateLowLevelServer(targetServer, logger)
70
76
 
71
77
  return server as unknown as HighLevelMCPServerLike
72
78
  }
73
- // Direct low-level server validation
74
79
  validateLowLevelServer(server, logger)
75
80
  return server as MCPServerLike
76
81
  }
77
82
 
78
- // Helper function to validate low-level server requirements
79
83
  function validateLowLevelServer(server: unknown, logger: LoggerFn): void {
80
84
  if (!server || typeof server !== 'object') {
81
85
  logCompatibilityWarning(logger)
@@ -84,42 +88,30 @@ function validateLowLevelServer(server: unknown, logger: LoggerFn): void {
84
88
  )
85
89
  }
86
90
 
87
- const serverRecord = server as ServerRecord
88
-
89
- if (typeof serverRecord.setRequestHandler !== 'function') {
91
+ if (!canSetRequestHandler(server)) {
90
92
  logCompatibilityWarning(logger)
91
93
  throw new Error(
92
94
  'PostHog MCP analytics SDK compatibility error: Server must have a setRequestHandler method. This requires MCP SDK v1.11 or higher.'
93
95
  )
94
96
  }
95
97
 
96
- if (!(serverRecord._requestHandlers && serverRecord._requestHandlers instanceof Map)) {
98
+ // A real Map with a working get(), which is what the handler patch reads and
99
+ // writes. Both majors keep it.
100
+ if (!hasRequestHandlerMap(server)) {
97
101
  logCompatibilityWarning(logger)
98
102
  throw new Error(
99
103
  'PostHog MCP analytics SDK compatibility error: Server._requestHandlers is not accessible. This requires MCP SDK v1.11 or higher.'
100
104
  )
101
105
  }
102
106
 
103
- // Validate that _requestHandlers contains functions with compatible signatures
104
- if (typeof serverRecord._requestHandlers.get !== 'function') {
105
- logCompatibilityWarning(logger)
106
- throw new Error(
107
- 'PostHog MCP analytics SDK compatibility error: Server._requestHandlers must be a Map with a get method. This requires MCP SDK v1.11 or higher.'
108
- )
109
- }
110
-
111
- if (typeof serverRecord.getClientVersion !== 'function') {
107
+ if (!hasClientVersionAccessor(server)) {
112
108
  logCompatibilityWarning(logger)
113
109
  throw new Error(
114
110
  'PostHog MCP analytics SDK compatibility error: Server.getClientVersion must be a function. This requires MCP SDK v1.11 or higher.'
115
111
  )
116
112
  }
117
113
 
118
- if (
119
- !serverRecord._serverInfo ||
120
- typeof serverRecord._serverInfo !== 'object' ||
121
- !('name' in serverRecord._serverInfo)
122
- ) {
114
+ if (!hasServerInfo(server)) {
123
115
  logCompatibilityWarning(logger)
124
116
  throw new Error(
125
117
  'PostHog MCP analytics SDK compatibility error: Server._serverInfo is not accessible or missing name. This requires MCP SDK v1.11 or higher.'
@@ -38,6 +38,7 @@ export type PostHogMCPAnalyticsEvent = (typeof PostHogMCPAnalyticsEvent)[keyof t
38
38
 
39
39
  export const PostHogMCPAnalyticsProperty = {
40
40
  ClientName: '$mcp_client_name',
41
+ ClientUserAgent: '$mcp_client_user_agent',
41
42
  ClientVersion: '$mcp_client_version',
42
43
  ConversationId: '$mcp_conversation_id',
43
44
  DurationMs: '$mcp_duration_ms',
@@ -58,6 +59,7 @@ export const PostHogMCPAnalyticsProperty = {
58
59
  ToolCategory: '$mcp_tool_category',
59
60
  ToolDescription: '$mcp_tool_description',
60
61
  ToolName: '$mcp_tool_name',
62
+ VendorClient: '$mcp_vendor_client',
61
63
  } as const
62
64
 
63
65
  export type PostHogMCPAnalyticsProperty = (typeof PostHogMCPAnalyticsProperty)[keyof typeof PostHogMCPAnalyticsProperty]