pulse-sdk
MIT TypeScript SDK for content-free MCP analytics and monitoring. / İçerik toplamayan MCP analitiği ve izleme için MIT TypeScript SDK.
Install / Use
claude mcp add selimeneserd -- npx -y github:selimeneserd/pulse-sdkIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
OperationsSupported Platforms
Tags
Our assessment of pulse-sdk
pulse-sdk scores 83/100 on our quality scale, 591st of 742 Operations skills we index.
Its MCP Server is 9.1 KB long, well organised into 8 sections with 4 code examples: a thorough specification that gives an agent plenty to work with.
It has 10 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated today, so pulse-sdk is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 97/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.
AI review by kimi-k2.7-code on 2026-10-08. Automated pattern scan on 2026-10-08. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
pulse-sdk compared with similar skills
All 4 of these similar skills score higher than pulse-sdk; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| pulse-sdk (this skill)by selimeneserd | 83 | 10 | today | MCP Server |
| Agent-Reachby Panniantong | 100 | 93.2k | today | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 74.6k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.3k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 86.2k | today | MCP Server |
Frequently asked questions
- How do I install pulse-sdk?
- Run
claude mcp add selimeneserd -- npx -y github:selimeneserd/pulse-sdk. The install tabs above show the steps for each supported agent. - Which AI agents does pulse-sdk work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is pulse-sdk safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It is MIT-licensed and scores 97/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is pulse-sdk still maintained?
- The repository was last updated today, so pulse-sdk is actively maintained.
Skill content
View source on GitHubPulse SDK — MCP analytics for TypeScript
Open-source analytics for MCP tool handlers. Observe calls locally, then send the same metadata to your own collector or an optional managed backend.
Türkçe · Local quickstart · Documentation · Contributing
Version 0.3.0: Optional, explicitly reported model token usage alongside observed MCP handler completions. No Cloud account or key is needed. Existing construction APIs remain; custom exporters must handle the new event union. Read the migration guide.
recordUsage() accepts numeric usage supplied by your application after a provider response. Pulse does not inspect prompts or results, call a model, estimate tokens, or discover the host's model consumption. See the token usage guide.
npm install --save-exact @reviseflow/pulse@0.3.0 @reviseflow/pulse-core@0.3.0 @modelcontextprotocol/server@2.0.0
Run locally
Use Node.js 24.20.0 and pnpm 11.22.0. Node.js 24.11.1 is also tested; the adapter targets the official MCP TypeScript SDK 2.0.0. See the compatibility matrix for the exact evidence and limitations.
git clone https://github.com/selimeneserd/pulse-sdk.git
cd pulse-sdk
pnpm install --frozen-lockfile
pnpm example:local
node packages/mcp/dist/cli.js dev --file pulse-events.jsonl
This runs a real MCP client/server call through the official in-memory transport, records its handler completion in a bounded JSONL file, and reports the observed tool, duration percentiles and outcome. The example runs with network APIs blocked. Initial dependency installation can require internet; runtime observation needs no Cloud account, write key or Cloud repository.
The CLI writes to stderr, leaving stdout available for MCP stdio. Its local report deduplicates event IDs within the inspected file prefix and reports invalid, omitted and truncated records explicitly.
Add Pulse to a server
Choose an exporter and wrap the server before registering tools. These APIs are also exercised in examples/quickstarts.ts.
import { McpServer } from '@modelcontextprotocol/server';
import { createPulse } from '@reviseflow/pulse';
import { createJsonlExporter } from '@reviseflow/pulse-core/jsonl';
const pulse = createPulse({
environment: 'development',
exporter: createJsonlExporter({ path: './pulse-events.jsonl' }),
});
const server = pulse.wrapServer(
new McpServer({ name: 'my-mcp', version: '1.0.0' }),
);
server.registerTool('health', {}, () => ({
content: [{ type: 'text', text: 'ok' }],
}));
Connect server through your application's existing transport. Call await pulse.shutdown({ timeoutMs: 2_000 }) from its shutdown hook. For a lifecycle boundary that keeps the application running, use await pulse.flush({ timeoutMs: 2_000 }). Neither operation guarantees delivery after a process is frozen or terminated.
After installing the packages in your project, npx --no-install pulse init --dry-run previews a thin integration file. npx --no-install pulse doctor checks the MCP package resolved from that project's Node ESM context, including hoisted installations, and distinguishes static configuration from observed runtime facts. These commands do not install dependencies, upgrade MCP or invoke business tools. See the CLI guide.
Choose where events go
| Exporter | Import | What acceptance means |
| --- | --- | --- |
| Memory | @reviseflow/pulse-core/memory | Retained in bounded process memory. |
| Explicit no-op | createNoopExporter() from /memory | Intentionally discarded. |
| JSONL | @reviseflow/pulse-core/jsonl | Appended locally with rotation; no fsync guarantee. |
| HTTP | @reviseflow/pulse-core/http | A validated acknowledgement from your explicit collector URL. |
| OpenTelemetry | @reviseflow/pulse-otel | Handed to your local tracer; remote delivery belongs to its provider. |
Core has zero third-party runtime dependencies. It owns the bounded dispatcher and receives an exporter; its root entry does not load HTTP, filesystem or OTel exporters. Native Node.js crypto and async context are required.
Without an exporter, observation is disabled and diagnostics report missing_exporter. enabled: false leaves the original server unpatched. There is no default collector URL, hidden fallback request, license check, remote configuration, update check or usage telemetry.
Optional Pulse Cloud
Pulse Cloud is a separate proprietary service for managed storage, analysis and collaboration. It consumes the same public collector contract that an independent implementation can use.
Configure it through the generic HTTP exporter using your existing server-side configuration:
import { createPulse } from '@reviseflow/pulse';
import { createHttpExporter } from '@reviseflow/pulse-core/http';
export function createManagedPulse(endpoint: string, writeKey: string) {
return createPulse({
environment: 'production',
exporter: createHttpExporter({
endpoint, // Explicit, complete collector URL, including /v1/batch.
authorization: `Bearer ${writeKey}`,
}),
});
}
Validate required configuration in your application and keep write keys out of the browser. Before using the 0.2 API with a collector, confirm it accepts the optional adapter_version field. The migration guide covers existing 0.1.0 installations, rollout order and rollback.
What Pulse measures
- Observed handler completions, not every MCP request or business success. Input validation before the handler and failures after it returns fall outside this boundary.
- Handler duration in monotonic milliseconds, with a separate wall-clock completion timestamp.
- Optional provider-reported numeric model usage, recorded separately through
recordUsage; unknown counts stay unknown. - Optional project-scoped account pseudonyms. An account is not a person; self-reported client labels are not verified host identities.
Pulse does not collect raw arguments, results, prompts, error messages, stacks, headers or arbitrary properties. Tool and release names can still reveal business information: map or exclude sensitive labels. Optional HMAC identity is pseudonymous and linkable, not anonymous.
Queues, byte budgets and retries are bounded. Export failure does not replace a handler result. Auth recovery uses reconfigure({ exporter }) or resume() on the existing instance; dropped events do not return. Pulse is best-effort analytics, not a durable audit ledger or an exactly-once delivery system.
Learn through a real MCP workflow
- Build and verify a first TypeScript MCP server: pinned dependencies, a real client call and local JSONL.
- Debug with MCP Inspector: distinguish protocol discovery from observed handler usage.
- Investigate handler latency: compare durations with outcomes and sample counts.
- Export to OpenTelemetry: verify the handler span and provider lifecycle separately.
The Pulse journal has implementation guides. The Cloud demo uses labelled synthetic data and needs no account. For managed retention and team access, review Cloud setup and current pricing. Local SDK use remains free and independent; installing a package does not start a Cloud subscription.
Documentation
| Topic | Guide | | --- | --- | | Reported model token usage | Token usage | | Local development and CLI | Tooling | | Supported runtime, MCP and module formats | Compatibility | | Event/collector contracts and extension authoring | Contracts | | Privacy, identity, lifecycle and diagnostics | Privacy and lifecycle | | OpenTelemetry and Python scope | Integration mapping | | Reproducible performance results | Benchmarks | | API migration and release preparation | Migration · Changelog | | AI-assisted setup | Agent recipe | | Evidence and remaining work | Implementation status |
To validate a contribution, run pnpm check and pnpm verify:pack. The latter creates real archives, installs them in an independent consumer, and checks types, offline MCP calls, HTTP delivery, bundling and duplicate package copies. Packing does not publish packages.
Read CONTRIBUTING.md for the contribution and RFC process. Report ordinary bugs through GitHub issues; consult SECURITY.md before sharing a vulnerability. The SDK is MIT licensed; Cloud code is separate and is not needed to build or test it.
Related Skills
Agent-Reach
93.2kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
74.6kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
CowAgent
47.3kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Scrapling
86.2k🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
