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

@sakasegawa/ncli

v0.3.3

Published

CLI for Notion — MCP + REST API support

Readme

ncli

npm version license node

Disclaimer: ncli is an unofficial, community-built tool. It is not developed, endorsed, or supported by Notion Labs, Inc.

日本語

CLI for Notion — MCP + REST API support. Read and write Notion from the terminal.

Designed for both humans and coding agents (Claude Code, Codex, etc.). All output is structured JSON with recovery hints on errors.

Features

  • Full Notion workspace access: search, pages, databases, views, comments, users, teams, meeting notes
  • REST API direct access: ncli rest for arbitrary Notion API calls
  • File upload: ncli file upload for attaching files to pages
  • Dual auth: OAuth (MCP commands) + integration token (NOTION_API_KEY env var or ncli rest login)
  • OAuth 2.0 + PKCE authentication (browser-based, zero-config)
  • Agent-first design: --json output, structured error hints (What + Why + Hint)
  • Escape hatch: ncli api <tool> [json] for direct MCP tool access
  • Single bundled ESM binary, Node.js >= 18

Install

npm install -g @sakasegawa/ncli

Quick Start

# Authenticate (opens browser, one-time)
ncli login

# Search and fetch
ncli search "project plan"
ncli fetch <id>

# Create and update pages
ncli page create --title "New Page" --parent <page-id>
ncli page update <id> --prop "Status=Done"

# Database workflow
ncli db create --title "Tasks" --parent <page-id> \
  --prop "Name:title" --prop "Status:select=Open,Done"
ncli page create --parent collection://<ds-id> \
  --title "Task 1" --prop "Status=Open"

REST API

# REST API setup (integration token)
ncli rest login

# Call REST API directly
ncli rest GET /users/me
ncli rest GET /pages/<page-id>

# Upload a file
ncli file upload ./image.png

Commands

| Command | Description | |---|---| | ncli login | Log in to Notion via OAuth | | ncli logout | Log out from Notion | | ncli whoami | Show current Notion user info | | ncli search <query> | Search pages, databases, and users across workspace | | ncli fetch <url-or-id> | Retrieve a page, database, or data source by URL or ID | | ncli page create | Create a page (with --title, --parent, --prop, --body) | | ncli page update <id> | Update page properties or content | | ncli page move <id...> --to <parent> | Move pages to a new parent | | ncli page duplicate <id> | Duplicate a page | | ncli db create | Create a database (with --title, --parent, --prop, or --schema) | | ncli db update <id> | Update database schema or metadata | | ncli db query <view-url> | Query a database view | | ncli view create | Create a database view (via --data) | | ncli view update | Update a database view (via --data) | | ncli comment create <id> | Add a comment to a page | | ncli comment list <id> | List comments on a page | | ncli user list | List and search workspace users | | ncli team list | List and search workspace teams | | ncli meeting-notes query | Query meeting notes with filters | | ncli rest login | Save REST API integration token | | ncli rest logout | Remove saved REST API token | | ncli rest <METHOD> <path> [json] | Call any Notion REST API endpoint directly | | ncli file upload <file-path> | Upload a file (returns file_upload_id for attaching to pages) | | ncli api <tool> [json] | Call any MCP tool directly (escape hatch) |

Run ncli <command> --help for detailed usage, examples, and tips.

Common Workflows

Search, fetch, and update

ncli search "Project Plan"               # Find pages/databases
ncli fetch <id>                           # Get content and metadata
ncli page update <id> --prop "Status=Done"  # Update properties

Create a database and add entries

# Create a database under a page
ncli db create --title "Tasks" --parent <page-id> \
  --prop "Name:title" --prop "Status:select=Open,Done"

# Response includes data_source_id (collection://...)
# Create entries using that ID
ncli page create --parent collection://<ds-id> \
  --title "Task 1" --prop "Status=Open"

# Create a view and query
ncli view create --data '{"database_id":"<db-id>","data_source_id":"collection://<ds-id>","type":"table","name":"All"}'
ncli db query "https://www.notion.so/<db-id>?v=<view-id>"

Pipe content from stdin

echo "# Meeting Notes" | ncli page create --title "Notes" --parent <id> --body -

Global Flags

| Flag | Description | |---|---| | --json | Output as JSON (structured, parseable) | | --raw | Output raw MCP response (full server payload) | | --verbose | Verbose output | | --no-color | Disable colors |

Agent Usage

This CLI is optimized for coding agents. Key patterns:

  • Use --json for structured, parseable output
  • Errors include recovery hints: What happened, Why, and what to do next
  • Workflow: searchfetch (get IDs/schema) → create/update/query
  • For databases: always ncli fetch <db-id> first to get data_source_id

Error example:

Error: notion-create-pages failed
  Why: Could not find page with ID: abc123...
  Hint: If adding to a database, use --data with "parent":{"data_source_id":"<ds-id>",...}.
        Run "ncli fetch <db-id>" to get the data_source_id

Escape Hatch

For advanced use or unsupported operations, call any MCP tool directly:

ncli api notion-search '{"query":"test","page_size":3}'
echo '{"query":"test"}' | ncli api notion-search

Requirements

  • Node.js >= 18
  • A Notion account (OAuth authentication via browser)
  • Notion integration token (for REST API commands — get at https://www.notion.so/profile/integrations)

Legal

License

MIT