@posthog/mcp 0.8.0 → 0.9.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 (74) hide show
  1. package/LICENSE +2 -2
  2. package/README.md +59 -0
  3. package/dist/extensions/capture.d.ts.map +1 -1
  4. package/dist/extensions/compatibility.d.ts.map +1 -1
  5. package/dist/extensions/constants.d.ts.map +1 -1
  6. package/dist/extensions/context-parameters.d.ts.map +1 -1
  7. package/dist/extensions/conversation-id.d.ts.map +1 -1
  8. package/dist/extensions/event-types.d.ts.map +1 -1
  9. package/dist/extensions/exceptions.d.ts.map +1 -1
  10. package/dist/extensions/ids.d.ts.map +1 -1
  11. package/dist/extensions/instrument-highlevel.d.ts.map +1 -1
  12. package/dist/extensions/instrument-lowlevel.d.ts.map +1 -1
  13. package/dist/extensions/instrumentation.d.ts.map +1 -1
  14. package/dist/extensions/instrumentation.js +39 -3
  15. package/dist/extensions/instrumentation.mjs +41 -5
  16. package/dist/extensions/intent.d.ts.map +1 -1
  17. package/dist/extensions/internal.d.ts +4 -2
  18. package/dist/extensions/internal.d.ts.map +1 -1
  19. package/dist/extensions/internal.js +5 -2
  20. package/dist/extensions/internal.mjs +5 -2
  21. package/dist/extensions/logger.d.ts.map +1 -1
  22. package/dist/extensions/mcp-payloads.d.ts.map +1 -1
  23. package/dist/extensions/mcp-sdk-compat.d.ts.map +1 -1
  24. package/dist/extensions/posthog-events.d.ts.map +1 -1
  25. package/dist/extensions/sanitization.d.ts.map +1 -1
  26. package/dist/extensions/session-token.d.ts +46 -0
  27. package/dist/extensions/session-token.d.ts.map +1 -0
  28. package/dist/extensions/session-token.js +122 -0
  29. package/dist/extensions/session-token.mjs +76 -0
  30. package/dist/extensions/session.d.ts +5 -4
  31. package/dist/extensions/session.d.ts.map +1 -1
  32. package/dist/extensions/session.js +25 -33
  33. package/dist/extensions/session.mjs +22 -27
  34. package/dist/extensions/sink.d.ts.map +1 -1
  35. package/dist/extensions/tools.d.ts.map +1 -1
  36. package/dist/extensions/tracing-helpers.d.ts.map +1 -1
  37. package/dist/extensions/truncation.d.ts.map +1 -1
  38. package/dist/index.d.ts +3 -2
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +15 -2
  41. package/dist/index.mjs +2 -1
  42. package/dist/types.d.ts +18 -2
  43. package/dist/types.d.ts.map +1 -1
  44. package/dist/version.d.ts +1 -1
  45. package/dist/version.js +1 -1
  46. package/dist/version.mjs +1 -1
  47. package/package.json +3 -3
  48. package/src/extensions/capture.ts +4 -3
  49. package/src/extensions/compatibility.ts +4 -3
  50. package/src/extensions/constants.ts +4 -3
  51. package/src/extensions/context-parameters.ts +4 -3
  52. package/src/extensions/conversation-id.ts +4 -3
  53. package/src/extensions/event-types.ts +4 -3
  54. package/src/extensions/exceptions.ts +4 -3
  55. package/src/extensions/ids.ts +4 -3
  56. package/src/extensions/instrument-highlevel.ts +4 -3
  57. package/src/extensions/instrument-lowlevel.ts +4 -3
  58. package/src/extensions/instrumentation.ts +85 -9
  59. package/src/extensions/intent.ts +4 -3
  60. package/src/extensions/internal.ts +23 -7
  61. package/src/extensions/logger.ts +4 -3
  62. package/src/extensions/mcp-payloads.ts +4 -3
  63. package/src/extensions/mcp-sdk-compat.ts +4 -3
  64. package/src/extensions/posthog-events.ts +4 -3
  65. package/src/extensions/sanitization.ts +4 -3
  66. package/src/extensions/session-token.ts +168 -0
  67. package/src/extensions/session.ts +42 -40
  68. package/src/extensions/sink.ts +4 -3
  69. package/src/extensions/tools.ts +4 -3
  70. package/src/extensions/tracing-helpers.ts +4 -3
  71. package/src/extensions/truncation.ts +4 -3
  72. package/src/index.ts +14 -4
  73. package/src/types.ts +24 -5
  74. package/src/version.ts +1 -1
package/src/index.ts CHANGED
@@ -1,6 +1,7 @@
1
- // Portions of this file are derived from MCPCat/mcpcat-typescript-sdk
2
- // Copyright (c) 2025 MCPcat
3
- // Licensed under the MIT License: https://github.com/MCPCat/mcpcat-typescript-sdk/blob/main/LICENSE
1
+ // Portions of this file are derived from agentcathq/agentcat-typescript-sdk
2
+ // (formerly MCPCat/mcpcat-typescript-sdk)
3
+ // Copyright (c) 2025 AgentCat, Inc. (formerly MCPcat)
4
+ // Licensed under the MIT License: https://github.com/agentcathq/agentcat-typescript-sdk/blob/main/LICENSE
4
5
 
5
6
  import type { PostHog } from 'posthog-node'
6
7
  import { isCompatibleServerType, isHighLevelServer } from './extensions/compatibility'
@@ -191,7 +192,16 @@ async function captureCustomEvent(lowLevelServer: MCPServerLike, eventData: Capt
191
192
  log(`Captured event "${eventData.event}" for session ${trackingData.sessionId}`)
192
193
  }
193
194
 
194
- export { deriveSessionIdFromMCPSession }
195
+ export { deriveSessionIdFromMCPSession, newSessionId }
196
+ // Session tokens for stateless / multi-pod servers. Minted and decoded
197
+ // automatically on JSON-mode StreamableHTTP; SSE servers set the header
198
+ // themselves with `encodeSessionId`.
199
+ export {
200
+ MCP_SESSION_HEADER,
201
+ decodeSessionId,
202
+ encodeSessionId,
203
+ type SessionTokenPayload,
204
+ } from './extensions/session-token'
195
205
  export {
196
206
  POSTHOG_MCP_ANALYTICS_SOURCE,
197
207
  PostHogMCPAnalyticsEvent,
package/src/types.ts CHANGED
@@ -1,6 +1,7 @@
1
- // Portions of this file are derived from MCPCat/mcpcat-typescript-sdk
2
- // Copyright (c) 2025 MCPcat
3
- // Licensed under the MIT License: https://github.com/MCPCat/mcpcat-typescript-sdk/blob/main/LICENSE
1
+ // Portions of this file are derived from agentcathq/agentcat-typescript-sdk
2
+ // (formerly MCPCat/mcpcat-typescript-sdk)
3
+ // Copyright (c) 2025 AgentCat, Inc. (formerly MCPcat)
4
+ // Licensed under the MIT License: https://github.com/agentcathq/agentcat-typescript-sdk/blob/main/LICENSE
4
5
 
5
6
  import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js'
6
7
  import type { ErrorTracking } from '@posthog/core'
@@ -69,6 +70,8 @@ export interface MCPAnalyticsOptions {
69
70
  /**
70
71
  * Identify the calling user. Returning a non-null value sets `distinct_id` and `$set`
71
72
  * on subsequent events for the session. Object form is treated as a static identity.
73
+ * A standalone `$identify` event is published once per session — at `initialize`, or
74
+ * when a long-lived server sees the identity appear or change — never per tool call.
72
75
  */
73
76
  identify?:
74
77
  | ((request: MCPRequestLike, extra?: CompatibleRequestHandlerExtra) => Promise<UserIdentity | null>)
@@ -179,9 +182,17 @@ export interface Event {
179
182
  /** A partially-built MCP event as it flows through the SDK before capture. */
180
183
  export type McpEvent = Partial<Event>
181
184
 
185
+ /** HTTP request info the SDK's Streamable HTTP transports attach per request. */
186
+ export interface CompatibleRequestInfoLike {
187
+ headers?: Record<string, string | string[] | undefined>
188
+ [key: string]: unknown
189
+ }
190
+
182
191
  export interface CompatibleRequestHandlerExtra {
183
192
  headers?: Record<string, string | string[]>
184
193
  sessionId?: string
194
+ /** Present on HTTP transports only — headers ride every request, unlike `clientInfo`. */
195
+ requestInfo?: CompatibleRequestInfoLike
185
196
  [key: string]: unknown
186
197
  }
187
198
 
@@ -199,9 +210,17 @@ export interface HighLevelMCPServerLike {
199
210
  tool?(name: string, description: string, paramsSchema: unknown, cb: ToolCallback): void
200
211
  }
201
212
 
213
+ /** The connected transport as exposed by the SDK's `Protocol.transport` getter. */
214
+ export interface CompatibleTransportLike {
215
+ sessionId?: string
216
+ [key: string]: unknown
217
+ }
218
+
202
219
  export interface MCPServerLike {
203
220
  _requestHandlers: Map<string, (request: MCPRequestLike, extra?: CompatibleRequestHandlerExtra) => Promise<unknown>>
204
221
  _serverInfo?: ServerClientInfoLike
222
+ /** Optional so older SDKs (and bare test doubles) still validate. */
223
+ transport?: CompatibleTransportLike
205
224
  getClientVersion(): ServerClientInfoLike | undefined
206
225
  setRequestHandler(
207
226
  schema: unknown,
@@ -245,11 +264,11 @@ export interface MCPAnalyticsData {
245
264
  sink: McpEventSink | undefined
246
265
  identifiedSessions: IdentityCache
247
266
  lastActivity: Date
248
- lastMcpSessionId?: string
249
267
  options: MCPAnalyticsOptions
250
268
  sessionId: string
251
269
  sessionInfo: SessionInfo
252
- sessionSource: 'generated' | 'mcp'
270
+ /** `token` = recovered from a self-encoded `Mcp-Session-Id` token (see session-token.ts). */
271
+ sessionSource: 'generated' | 'mcp' | 'token'
253
272
  toolCategories: Map<string, string>
254
273
  toolDescriptions: Map<string, string>
255
274
  }
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '0.8.0'
1
+ export const version = '0.9.1'