npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

dev-diary-mcp

v1.0.0

Published

MCP server that turns a folder of Markdown files into a searchable work journal for any LLM

Readme

dev-diary-mcp

License: MIT Node MCP

A Model Context Protocol server that turns a plain folder of Markdown files into a searchable work journal any LLM can read and write.

No database. No app. Your work log is just diary/2026-08-22.md — human-readable, diffable, git-friendly — and your AI assistant gets four tools to use it:

| Tool | What it does | |---|---| | log_work | Appends a timestamped entry (with tags) to today's file | | search_diary | Full-text search across all entries, optional tag filter | | daily_summary | Everything logged on a given day | | stats | Totals, active days, current streak, top tags |

Why

"Log what I did today" is the task everyone abandons after a week. But your AI assistant already knows what you did — it helped you do it. Give it tools against a Markdown folder and keeping a work journal becomes a byproduct of working with AI.

Run the demo

The repo ships a real MCP client that drives the server end-to-end (handshake → listTools → tool calls), so you can verify everything without an editor:

npm install
npm run build
npm run demo

Output:

=== 1. listTools ===
 • log_work — Append a timestamped entry...
 • search_diary — Full-text search across every entry...
 • daily_summary — Everything logged on a given date...
 • stats — Totals, active days, streaks, top tags...

=== 2. log_work x3 ===
Logged to 2026-08-22.md at 19:05 (tags: bugfix, websocket)
...

=== 5. stats ===
📊 1 entries across 2 day(s)
🔥 Streak: 2 consecutive day(s)
🏷️ Top tags: #bugfix (1), #websocket (1)

Then look at diary/*.md — that's your data. Plain Markdown.

Connect it to your editor / agent

Claude Desktop / Cursor / any MCP client

{
  "mcpServers": {
    "dev-diary": {
      "command": "node",
      "args": ["/absolute/path/to/dev-diary-mcp/dist/server.js"],
      "env": { "DIARY_DIR": "/absolute/path/to/your/diary" }
    }
  }
}

Hermes Agent

hermes mcp add dev-diary --command node --args /path/to/dist/server.js

Inspect it interactively

npx @modelcontextprotocol/inspector node dist/server.js

The storage format

One file per day (diary/YYYY-MM-DD.md), entries as H2 headings with embedded tags:

## 14:32 #bugfix #websocket
Fixed the race condition in the WebSocket broadcast queue

## 16:10 #testing
Wrote E2E test covering two-client sync

Because it's just files, you can grep it, back it up, edit it by hand, or commit it. The server reads whatever is on disk on every call — no cache to invalidate.

How it works (~190 lines of TypeScript)

Built with the official @modelcontextprotocol/server SDK (2026-07-28 spec):

  • McpServer + registerTool(name, { description, inputSchema }, handler) — schemas are Standard Schema; this project uses Zod v4
  • StdioServerTransport — the editor spawns the process and talks JSON-RPC over stdin/stdout
  • Tool handlers read/write Markdown under DIARY_DIR (default: ./diary)

Companion article: "I Built an MCP Server That Keeps My Work Journal — Here's Everything I Learned" (draft in this repo).

License

MIT