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

@nself/ntask-mcp

v0.1.0

Published

ɳTask MCP server — expose task/list operations as MCP tools for AI agents (Claude, Cursor, etc.)

Readme

ɳTask MCP Server

An MCP server that exposes ɳTask task/list operations as tools, so AI agents (Claude, Cursor, etc.) can manage tasks directly. Built on the same client library as the ɳTask CLI (@nself/ntask-cli), so agent and terminal behavior stay in sync.

Install

npm install -g @nself/ntask-mcp

Point an MCP client at it, for example in Claude Desktop's config:

{
  "mcpServers": {
    "ntask": {
      "command": "npx",
      "args": ["-y", "@nself/ntask-mcp"],
      "env": {
        "NTASK_API_URL": "https://api.task.nself.org/v1/graphql",
        "NTASK_AUTH_URL": "https://auth.task.nself.org",
        "NTASK_EMAIL": "[email protected]",
        "NTASK_PASSWORD": "…"
      }
    }
  }
}

From a checkout of this repo instead:

pnpm install
pnpm --filter @nself/ntask-cli build   # mcp depends on the built cli lib
pnpm --filter @nself/ntask-mcp build

Running standalone

NTASK_TOKEN=<bearer-token> \
NTASK_API_URL=http://localhost:8080/v1/graphql \
NTASK_AUTH_URL=http://localhost:4000 \
node apps/mcp/dist/index.js

The server communicates over stdio (JSON-RPC), so it's normally launched by an MCP client, not run interactively.

Authentication

Resolved once at process start, in priority order:

  1. NTASK_TOKEN — use this bearer token directly.
  2. NTASK_EMAIL + NTASK_PASSWORD — sign in on start via hasura-auth.
  3. The ɳTask CLI's stored credentials (~/.config/ntask/credentials.json, written by ntask login), optionally scoped with NTASK_PROFILE.

If none of these resolve, every tool call fails with an actionable error telling you to set NTASK_TOKEN or run ntask login first.

Environment variables

| Variable | Purpose | |---|---| | NTASK_API_URL | GraphQL endpoint (default: http://localhost:8080/v1/graphql) | | NTASK_AUTH_URL | Auth endpoint (default: http://localhost:4000) | | NTASK_ENDPOINT | Named preset: local | staging | prod | | NTASK_TOKEN | Bearer token (skips login) | | NTASK_EMAIL / NTASK_PASSWORD | Login-on-start credentials | | NTASK_PROFILE | Named CLI credentials profile to read, if using stored credentials |

Tools

| Tool | Description | |---|---| | list_lists | Return all task lists | | list_create | Create a new list | | task_list | List tasks (optionally scoped to a list by name, or filtered by completion) | | task_add | Create a task (title, list, priority, due date, notes) | | task_complete | Mark a task complete or reopen it (matches by id or fuzzy title) | | task_search | Search task titles | | task_update | Update fields on an existing task |

All tools accept a task/list identifier as either a UUID or a case-insensitive fuzzy title match, and return both a text block and structuredContent (JSON) for clients that support structured tool output.

Client configuration

Claude Desktop / Claude Code (claude_desktop_config.json or .mcp.json)

{
  "mcpServers": {
    "ntask": {
      "command": "node",
      "args": ["/absolute/path/to/ntask/mcp/dist/index.js"],
      "env": {
        "NTASK_TOKEN": "<bearer-token>",
        "NTASK_API_URL": "http://localhost:8080/v1/graphql",
        "NTASK_AUTH_URL": "http://localhost:4000"
      }
    }
  }
}

Cursor (.cursor/mcp.json)

{
  "mcpServers": {
    "ntask": {
      "command": "node",
      "args": ["/absolute/path/to/ntask/mcp/dist/index.js"],
      "env": {
        "NTASK_EMAIL": "[email protected]",
        "NTASK_PASSWORD": "your-password",
        "NTASK_ENDPOINT": "staging"
      }
    }
  }
}

Development

pnpm --filter @nself/ntask-mcp dev     # run from source via tsx
pnpm --filter @nself/ntask-mcp typecheck
pnpm --filter @nself/ntask-mcp test
pnpm --filter @nself/ntask-mcp build

To exercise the built server directly over stdio (no MCP client needed), send newline-delimited JSON-RPC requests to its stdin — e.g. initialize, then tools/list, then tools/call with a tool name + arguments.