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

contextplus

v1.0.8

Published

Semantic Intelligence for Large-Scale Engineering.

Readme

Context+

Semantic Intelligence for Large-Scale Engineering.

Context+ is an MCP server designed for developers who demand 99% accuracy. By combining RAG, Tree-sitter AST, Spectral Clustering, and Obsidian-style linking, Context+ turns a massive codebase into a searchable, hierarchical feature graph.

https://github.com/user-attachments/assets/a97a451f-c9b4-468d-b036-15b65fc13e79

Tools

Discovery

| Tool | Description | | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | get_context_tree | Structural AST tree of a project with file headers and symbol ranges (line numbers for functions/classes/methods). Dynamic pruning shrinks output automatically. | | get_file_skeleton | Function signatures, class methods, and type definitions with line ranges, without reading full bodies. Shows the API surface. | | semantic_code_search | Search by meaning, not exact text. Uses embeddings over file headers/symbols and returns matched symbol definition lines. | | semantic_identifier_search | Identifier-level semantic retrieval for functions/classes/variables with ranked call sites and line numbers. | | semantic_navigate | Browse codebase by meaning using spectral clustering. Groups semantically related files into labeled clusters. |

Analysis

| Tool | Description | | --------------------- | ----------------------------------------------------------------------------------------------------------------------------- | | get_blast_radius | Trace every file and line where a symbol is imported or used. Prevents orphaned references. | | run_static_analysis | Run native linters and compilers to find unused variables, dead code, and type errors. Supports TypeScript, Python, Rust, Go. |

Code Ops

| Tool | Description | | ----------------- | ------------------------------------------------------------------------------------------------------------------------ | | propose_commit | The only way to write code. Validates against strict rules before saving. Creates a shadow restore point before writing. | | get_feature_hub | Obsidian-style feature hub navigator. Hubs are .md files with [[wikilinks]] that map features to code files. |

Version Control

| Tool | Description | | --------------------- | ---------------------------------------------------------------------------------------------------------- | | list_restore_points | List all shadow restore points created by propose_commit. Each captures file state before AI changes. | | undo_change | Restore files to their state before a specific AI change. Uses shadow restore points. Does not affect git. |

Memory & RAG

| Tool | Description | | ------------------------- | -------------------------------------------------------------------------------------------------------- | | upsert_memory_node | Create or update a memory node (concept, file, symbol, note) with auto-generated embeddings. | | create_relation | Create typed edges between nodes (relates_to, depends_on, implements, references, similar_to, contains). | | search_memory_graph | Semantic search with graph traversal — finds direct matches then walks 1st/2nd-degree neighbors. | | prune_stale_links | Remove decayed edges (e^(-λt) below threshold) and orphan nodes with low access counts. | | add_interlinked_context | Bulk-add nodes with auto-similarity linking (cosine ≥ 0.72 creates edges automatically). | | retrieve_with_traversal | Start from a node and walk outward — returns all reachable neighbors scored by decay and depth. |

Setup

Quick Start (npx / bunx)

No installation needed. Add Context+ to your IDE MCP config.

For Claude Code, Cursor, and Windsurf, use mcpServers:

{
  "mcpServers": {
    "contextplus": {
      "command": "bunx",
      "args": ["contextplus"],
      "env": {
        "OLLAMA_EMBED_MODEL": "nomic-embed-text",
        "OLLAMA_CHAT_MODEL": "gemma2:27b",
        "OLLAMA_API_KEY": "YOUR_OLLAMA_API_KEY"
      }
    }
  }
}

For VS Code (.vscode/mcp.json), use servers and inputs:

{
  "servers": {
    "contextplus": {
      "type": "stdio",
      "command": "bunx",
      "args": ["contextplus"],
      "env": {
        "OLLAMA_EMBED_MODEL": "nomic-embed-text",
        "OLLAMA_CHAT_MODEL": "gemma2:27b",
        "OLLAMA_API_KEY": "YOUR_OLLAMA_API_KEY"
      }
    }
  },
  "inputs": []
}

If you prefer npx, use:

  • "command": "npx"
  • "args": ["-y", "contextplus"]

Or generate the MCP config file directly in your current directory:

npx -y contextplus init claude
bunx contextplus init cursor
npx -y contextplus init opencode

Supported coding agent names: claude, cursor, vscode, windsurf, opencode.

Config file locations:

| IDE | Config File | | ----------- | -------------------- | | Claude Code | .mcp.json | | Cursor | .cursor/mcp.json | | VS Code | .vscode/mcp.json | | Windsurf | .windsurf/mcp.json | | OpenCode | opencode.json |

CLI Subcommands

  • init [target] - Generate MCP configuration (targets: claude, cursor, vscode, windsurf, opencode).
  • skeleton [path] or tree [path] - (New) View the structural tree of a project with file headers and symbol definitions directly in your terminal.
  • [path] - Start the MCP server (stdio) for the specified path (defaults to current directory).

From Source

npm install
npm run build

Architecture

Three layers built with TypeScript over stdio using the Model Context Protocol SDK:

Core (src/core/) - Multi-language AST parsing (tree-sitter, 43 extensions), gitignore-aware traversal, Ollama vector embeddings with disk cache, wikilink hub graph, in-memory property graph with decay scoring.

Tools (src/tools/) - 17 MCP tools exposing structural, semantic, operational, and memory graph capabilities.

Git (src/git/) - Shadow restore point system for undo without touching git history.

Runtime Cache (.mcp_data/) - created on server startup; stores reusable file, identifier, and call-site embeddings to avoid repeated GPU/CPU embedding work. A realtime tracker refreshes changed files/functions incrementally.

Config

| Variable | Type | Default | Description | | --------------------------------------- | ------------------------- | ------------------ | ------------------------------------------------------------- | | OLLAMA_EMBED_MODEL | string | nomic-embed-text | Embedding model | | OLLAMA_API_KEY | string | - | Ollama Cloud API key | | OLLAMA_CHAT_MODEL | string | llama3.2 | Chat model for cluster labeling | | CONTEXTPLUS_EMBED_BATCH_SIZE | string (parsed as number) | 8 | Embedding batch size per GPU call, clamped to 5-10 | | CONTEXTPLUS_EMBED_CHUNK_CHARS | string (parsed as number) | 2000 | Per-chunk chars before merge, clamped to 256-8000 | | CONTEXTPLUS_MAX_EMBED_FILE_SIZE | string (parsed as number) | 51200 | Skip non-code text files larger than this many bytes | | CONTEXTPLUS_EMBED_NUM_GPU | string (parsed as number) | - | Optional Ollama embed runtime num_gpu override | | CONTEXTPLUS_EMBED_MAIN_GPU | string (parsed as number) | - | Optional Ollama embed runtime main_gpu override | | CONTEXTPLUS_EMBED_NUM_THREAD | string (parsed as number) | - | Optional Ollama embed runtime num_thread override | | CONTEXTPLUS_EMBED_NUM_BATCH | string (parsed as number) | - | Optional Ollama embed runtime num_batch override | | CONTEXTPLUS_EMBED_NUM_CTX | string (parsed as number) | - | Optional Ollama embed runtime num_ctx override | | CONTEXTPLUS_EMBED_LOW_VRAM | string (parsed as boolean)| - | Optional Ollama embed runtime low_vram override | | CONTEXTPLUS_EMBED_TRACKER | string (parsed as boolean)| true | Enable realtime embedding refresh on file changes | | CONTEXTPLUS_EMBED_TRACKER_MAX_FILES | string (parsed as number) | 8 | Max changed files processed per tracker tick, clamped to 5-10 | | CONTEXTPLUS_EMBED_TRACKER_DEBOUNCE_MS | string (parsed as number) | 700 | Debounce window before tracker refresh |

Test

npm test
npm run test:demo
npm run test:all