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

@screenest/mcp-server

v1.1.2

Published

MCP server for ScreeNest — query your activity tracking data, AI-generated daily/weekly reports, and Long-Term Memory from Claude Desktop, Cursor, and other MCP-compatible clients.

Readme

@screenest/mcp-server

MCP (Model Context Protocol) server for ScreeNest — Access your activity tracking data and Long-Term Memory from Claude Desktop, Claude Code, Cursor, and other MCP-compatible clients.

Prerequisites

  • ScreeNest installed and running (Windows only — ScreeNest is a WPF desktop app)
  • Node.js 18 or higher

Quick Setup (Windows)

No API token needed — just add the JSON snippet to your MCP client config.

Claude Code

Add to your settings JSON (~/.claude.json or project .mcp.json):

{
  "mcpServers": {
    "screenest": {
      "command": "cmd",
      "args": ["/c", "npx", "-y", "@screenest/mcp-server"]
    }
  }
}

Or via CLI:

npm i -g @screenest/mcp-server
claude mcp add screenest -- screenest-mcp

Claude Desktop

Edit %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "screenest": {
      "command": "cmd",
      "args": ["/c", "npx", "-y", "@screenest/mcp-server"]
    }
  }
}

Then completely quit and restart Claude Desktop (closing the window is not enough — also exit from the system tray).

Cursor IDE

Edit .cursor/mcp.json in your project (or ~/.cursor/mcp.json for global):

{
  "mcpServers": {
    "screenest": {
      "command": "cmd",
      "args": ["/c", "npx", "-y", "@screenest/mcp-server"]
    }
  }
}

Then restart Cursor completely.

Alternative: Global Installation

For faster startup (no download on each launch):

npm install -g @screenest/mcp-server

Then use the binary name directly:

{
  "mcpServers": {
    "screenest": {
      "command": "screenest-mcp"
    }
  }
}

Available Tools

| Tool | Purpose | |------|---------| | get_daily_memory | AI-generated daily/hourly reports for a given date | | get_weekly_memory | Weekly summary: daily reports, app breakdown, trends | | get_activity | Raw activity data: app timeline, keystrokes, clipboard, browser visits | | read_ltm | Read the user's Long-Term Memory (optionally a single section) | | update_ltm | Append or replace a section of the Long-Term Memory | | get_agent_history | Coding agent (Claude Code / Cursor) conversation history |

get_daily_memory

Returns AI-analyzed hourly and daily reports for a specific date. Use this for questions like "What did I do today?" or "Summarize yesterday's work".

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | date | string | today | Target date in YYYY-MM-DD format (local timezone) |

Returns: Markdown text listing each AI report with title, type, timestamp, and formatted content.


get_weekly_memory

Returns a weekly summary — daily AI reports, daily breakdown, top apps, and trends. Does NOT include raw per-entry logs (optimized for efficient context usage over longer ranges).

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | end_date | string | today | End date in YYYY-MM-DD format (local timezone) | | days | number | 7 | Number of days to look back (1–30) | | include | array | all | Sections: daily_reports, daily_breakdown, top_apps, trends |

Returns: Text summary.


get_activity

Returns the raw activity timeline for a given date — app usage, keystrokes per region (editor / terminal / AI sidebar), clipboard history, and browser visits. Use this when you need granular per-app data.

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | date | string | today | Target date in YYYY-MM-DD format (local timezone) | | app_filter | string | — | Filter to a specific application name |

Returns: Markdown text with an activity timeline, clipboard, and browser sections.


read_ltm

Reads the user's Long-Term Memory (LTM) — persistent context that the ScreeNest app maintains about the user's work style, tools, expertise, and current context.

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | section | string | — | Section name to read. Omit for full content. |

Common sections: Work Style, Toolbox & Stack, Expertise, Communication, Interests, Current Context.

Returns: The requested LTM content as Markdown.


update_ltm

Updates the user's Long-Term Memory. Appends to a section by default, or replaces it entirely when replace: true. Importance tags like [Priority: High] [Weight: 5] can be included in the content.

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | section | string | required | Section name to update | | content | string | required | Markdown content to write | | replace | boolean | false | true to replace the section, false to append |

Returns: Confirmation message with action type and total character count.


get_agent_history

Returns coding agent (Claude Code / Cursor) conversation history from the user's local machine. Use to understand what the user has been working on with AI coding assistants.

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | date | string | today | Target date in YYYY-MM-DD format (local timezone) | | source | string | all | Filter by agent: ClaudeCode or Cursor | | project | string | — | Filter by project name (partial match) | | max_sessions | number | 7 | Max sessions to return (max: 50) | | max_turns | number | 5 | Max turns per session (max: 100) | | max_chars | number | 200 | Max characters per Q/A field (max: 2000) |

Returns: Markdown text with session summaries and Q&A turns.


Response Size Limit

To avoid context overflow in the calling AI, responses are truncated at ~80,000 characters. If a response is truncated, narrow the query with app_filter or a more specific date.

Example Usage

After setup, ask Claude or Cursor:

  • "What did I work on today?"
  • "Summarize my last week"
  • "Which apps did I use most yesterday?"
  • "What was I typing in VS Code this morning?"
  • "Read my Long-Term Memory current context"
  • "Update my LTM: I started working on the MCP server today"

Timezone Note

ScreeNest stores all timestamps in UTC internally. Date parameters (date, end_date) should be specified in your local timezone (e.g., 2026-02-22). The ScreeNest app handles UTC conversion automatically on the server side.

Privacy & Data Handling

This MCP server exposes sensitive local data from the ScreeNest desktop app to your connected AI client. Before using it, please understand what is shared and with whom.

What data can be accessed

Depending on which tool is invoked, the server can read:

  • Activity data (get_activity): app usage timeline, keystrokes grouped by application, clipboard history, browser visit URLs
  • AI memory (get_daily_memory, get_weekly_memory): daily / weekly reports generated by ScreeNest, including titles and summaries of your work
  • Long-Term Memory (read_ltm, update_ltm): your work style, tools, expertise, current context — and the ability to modify it

How the data flows

ScreeNest app (local SQLite DB)
        ↓
  localhost:18080 (loopback only — no external access)
        ↓
@screenest/mcp-server   ← this package
        ↓
  stdio (Claude Desktop / Cursor / other MCP client)
        ↓
  the client's backing LLM provider (Anthropic, OpenAI, etc.)

When you invoke a tool from your MCP client, the requested data is handed to the client over stdio, and the client may forward it to its configured LLM provider as conversation context. That forwarding is governed by the privacy policy of the MCP client and its LLM provider — not by this package.

Security model

The ScreeNest local API only accepts connections from localhost (loopback interface). Remote connections are rejected with 403 Forbidden. No API token is required — the localhost restriction ensures only processes on your own machine can access the data.

What this server does NOT do

  • No telemetry: the server makes no network calls except to localhost:18080 (the ScreeNest app) and to its stdio parent (the MCP client). No analytics, no phone-home, no crash reporting.
  • No third-party services: no external APIs are contacted directly from this package.
  • No persistent logging of your data: nothing is written to disk by this package. Log messages (if enabled) are emitted to stderr only for the lifetime of the process.

You can verify these claims by reading build/index.js after npm install — the compiled source is not minified.

Recommendations

  • Treat update_ltm carefully: anything you pass to this tool is persisted in ScreeNest's Long-Term Memory and becomes part of future AI reports.
  • Before sharing activity data via chat, remember that the LLM provider your client uses may log or retain the input per its own terms.
  • If your MCP client supports per-tool approval prompts, consider enabling them so you can review what's being sent for each call.

Environment Variables

All variables are optional and rarely need changing. Pass them via the env block of your MCP client config:

{
  "mcpServers": {
    "screenest": {
      "command": "npx",
      "args": ["-y", "@screenest/mcp-server"],
      "env": {
        "SCREENEST_LOG_LEVEL": "debug",
        "SCREENEST_TIMEOUT_MS": "120000"
      }
    }
  }
}

| Variable | Required | Default | Description | |----------|----------|---------|-------------| | SCREENEST_API_URL | No | http://localhost:18080 | ScreeNest local API endpoint. Change this only if ScreeNest is running on a non-default port. | | SCREENEST_LOG_LEVEL | No | info | Logger verbosity. One of debug, info, warn, error. Logs go to stderr only (stdout is reserved for the MCP protocol). | | SCREENEST_TIMEOUT_MS | No | 60000 | HTTP request timeout in milliseconds. Increase for very large weekly reports over slow disks. |

Platform support

This package ships with "os": ["win32"] because the ScreeNest desktop application is Windows-only (WPF). npm install / npx will refuse to install on macOS or Linux.

Development

# Install dependencies
npm install

# Build
npm run build

# Run locally (for testing)
npm start

Troubleshooting

"ScreeNest is not running"

The MCP server requires the ScreeNest desktop application to be running. Start ScreeNest first, then retry the MCP tool call.

MCP server not showing in Claude / Cursor

  1. Check JSON syntax in your config file
  2. Restart the application completely (not just close window)
  3. Check logs:
    • Claude Desktop (Mac): ~/Library/Logs/Claude/mcp*.log
    • Claude Desktop (Windows): %APPDATA%\Claude\logs\
    • Cursor: Output panel → MCP

License

MIT