dummy-nest-mcp
Integration with PostHog analytics to capture MCP tool calls and session events.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@dummy-nest-mcpanalyze funnel for signup to purchase over last week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
dummy-nest-mcp
A minimal MCP server built with @rekog/mcp-nest (NestJS), instrumented with @posthog/mcp to validate that PostHog's MCP analytics SDK works against a MCP-Nest server.
It exposes two mocked tools — get_trends and get_funnel
How the integration works
MCP-Nest creates the underlying @modelcontextprotocol/sdk McpServer for you. It exposes
that instance through the serverMutator option on McpModule.forRoot():
// src/app.module.ts
McpModule.forRoot({
name: 'dummy-nest-mcp',
version: '0.1.0',
// Stateful Streamable HTTP: one McpServer / one session spans the whole
// connection, so `initialize` and every tool call share an `mcp-session-id`.
// Without this combo (stateless mode, or no propagated session) each request
// stands alone — every tool call is its own session and identify() has no
// stable session to attribute events to.
transport: McpTransportType.STREAMABLE_HTTP,
streamableHttp: { enableJsonResponse: true },
serverMutator: instrumentationMutator, // <- the hook @posthog/mcp plugs into
})// src/posthog.ts
export const instrumentationMutator = (server) => {
instrument(server, posthog, { logger, identify });
return server;
};instrument() accepts the high-level McpServer, is idempotent per server instance, and wraps
its request handlers so tool calls / listings / initialize / identity get auto-captured.
⚠️ Subtle bit: because this server is stateful, MCP-Nest builds a fresh
McpServerfor every session, soserverMutator(and thereforeinstrument()) runs once per session, not once at boot. Keep thePostHogclient a shared singleton outside the mutator — see Gotcha 2 below.
Related MCP server: mcp-nestjs
Setup
npm install
cp .env.example .env # then put your key in .envSet in .env:
POSTHOG_PROJECT_TOKEN— your Project token (phc_…), shown under "Project token & ID" in the PostHog UI. This is the value the SDK ingests events with. (POSTHOG_API_KEYis still accepted as a fallback name. Don't use a personal key,phx_….)POSTHOG_HOST— optional. Defaults to PostHog Cloud US (https://us.i.posthog.com). EU:https://eu.i.posthog.com; local dev stack:http://localhost:8010.PORT— optional, defaults to3000.
Run
npm start
# -> server.ready http://localhost:3000/mcpTool-call logs (get_trends …) and [posthog] capture lines go to stderr — leave it running.
Test it (curl)
Streamable HTTP is stateful here, so propagate the mcp-session-id returned by initialize:
B=http://localhost:3000/mcp
H='Accept: application/json, text/event-stream'
# initialize → grab the session id from the response header
SID=$(curl -s -D /tmp/h.txt -o /dev/null -H "$H" -H 'Content-Type: application/json' -X POST "$B" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"curl","version":"1.0.0"}}}'; \
grep -i '^mcp-session-id:' /tmp/h.txt | awk '{print $2}' | tr -d '\r')
curl -s -H "$H" -H 'Content-Type: application/json' -H "mcp-session-id: $SID" -X POST "$B" \
-d '{"jsonrpc":"2.0","method":"notifications/initialized"}'
curl -s -H "$H" -H 'Content-Type: application/json' -H "mcp-session-id: $SID" -X POST "$B" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_trends","arguments":{"event":"pageview","days":3}}}'Connect from Claude Desktop
Bridge stdio → HTTP with mcp-remote (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"dummy-nest-mcp": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:3000/mcp", "--transport", "http-only"]
}
}
}This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for Statsig API - interact with Statsig's feature flags, experiments, and analytics
MCP server for building and testing AI agents with multi-model experimentation and insights.
Hosted MCP server for Google Ads and LinkedIn Ads analysis.
- SupabaseOAuthcom.supabase
MCP server for interacting with the Supabase platform
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA demonstration implementation of Model Context Protocol (MCP) using NestJS framework, allowing developers to build MCP-compatible applications with playground testing capabilities.185 npmMIT
- AlicenseNot gradedqualityCmaintenanceA NestJS module for building Model Context Protocol (MCP) servers using decorators to expose services as tools, resources, and prompts. It features auto-discovery, a built-in playground UI, and support for multiple transports including SSE and Stdio.12 npmMIT
- AlicenseNot gradedqualityBmaintenanceA minimal NestJS MCP server skeleton for experimenting with the Model Context Protocol. Currently a placeholder with no implemented tools or resources.6 npmMIT
- FlicenseNot gradedqualityDmaintenanceA sample MCP server built with NestJS and TypeScript, demonstrating a ping tool for testing connectivity with MCP clients.19 npm-