Context

io.github.neuledgePublished by GitHub account neuledgev1.4.2Updated Nov 3, 2026

Local-first documentation for AI agents. Offline, instant, private doc retrieval.

VerifiedSTDIODesktop onlyKnowledge & MemoryDeveloper Tools

Overview

Context's local MCP server; no sign-in required; STDIO.

No AI overview yet: these facts come from the registry entry and the server itself.

Installation

In SourceWeft

  1. Open Context in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Context

Up-to-date docs for AI agents — local, instant, plug and play.

[npm version] [License] [TypeScript] [Maintained by human0]


AI agents are trained on outdated docs. When libraries release new versions, your AI doesn't know — and confidently gives you wrong answers.

js
// Your AI, mass-trained on AI SDK v5 docs, will suggest:import { Experimental_Agent as Agent, stepCountIs } from "ai";
// But v6 changed the API entirely:import { ToolLoopAgent } from "ai";

The fix isn't better prompting. It's giving your AI the right docs.

How It Works

Context is an MCP server backed by a community-driven package registry with 100+ popular libraries already built and ready to use. When your AI agent needs documentation, it searches the registry, downloads the right package, and queries it locally — all automatically.

Install once. Configure once. Then just ask your AI.

[Context demo]

[Maintained by human0]


:rocket: Quick Start

1. Install

bash
npm install -g @neuledge/context

2. Connect to your AI agent

Context works with any MCP-compatible agent. Pick yours:

Claude Code
bash
claude mcp add context -- context serve
Claude Desktop

Add to your config file:

  • Linux: ~/.config/claude/claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
json
{  "mcpServers": {    "context": {      "command": "context",      "args": ["serve"]    }  }}

Restart Claude Desktop to apply changes.

Cursor

Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project-specific):

json
{  "mcpServers": {    "context": {      "command": "context",      "args": ["serve"]    }  }}

Or use Settings > Developer > Edit Config to add the server through the UI.

OpenAI Codex

Either use the CLI

bash
codex mcp add context -- context serve

Or add to ~/.codex/config.toml (global) or .codex/config.toml (project-specific):

toml
[mcp_servers.context]command = "context"args = ["serve"]

Restart OpenAI Codex to apply changes.

VS Code (GitHub Copilot)

Requires VS Code 1.102+ with GitHub Copilot

Add to .vscode/mcp.json in your workspace:

json
{  "servers": {    "context": {      "type": "stdio",      "command": "context",      "args": ["serve"]    }  }}

Click the Start button that appears in the file, then use Agent mode in Copilot Chat.

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

  • Windows: %USERPROFILE%\.codeium\windsurf\mcp_config.json
json
{  "mcpServers": {    "context": {      "command": "context",      "args": ["serve"]    }  }}

Or access via Windsurf Settings > Cascade > MCP Servers.

Zed

Add to your Zed settings.json (press cmd+, or ctrl+, twice):

json
{  "context_servers": {    "context": {      "command": {        "path": "context",        "args": ["serve"]      }    }  }}

Check the Agent Panel settings to verify the server shows a green indicator.

Goose

Run goose configure and select Command-line Extension, or add directly to ~/.config/goose/config.yaml:

yaml
extensions:  context:    type: stdio    command: context    args:      - serve    timeout: 300
OpenCode

Add to ~/.config/opencode/opencode.json:

json
{  "mcp": {    "context": {      "command": ["context", "serve"],      "enabled": true,      "type": "local"    }  }}

3. Ask your AI anything

That's it. Just ask:

"How do I create middleware in Next.js?"

Your agent searches the community registry, downloads the docs, and answers with accurate, version-specific information. Everything happens automatically — no manual context install needed for registry packages.


The Community Registry

The registry is what makes Context plug and play. It's a growing collection of 100+ pre-built documentation packages maintained by the community. Think of it like a package manager, but for AI-ready docs.

Popular packages available today:

CategoryLibraries
FrameworksNext.js, Nuxt, Astro, SvelteKit, Remix, Hono
React ecosystemReact, React Router, TanStack Query, Zustand, Redux Toolkit
Databases & ORMsPrisma, Drizzle, Mongoose, TypeORM
StylingTailwind CSS, shadcn/ui, Styled Components
TestingVitest, Playwright, Jest, Testing Library
APIs & AuthtRPC, GraphQL, NextAuth.js, Passport
AI & LLMsLangChain, AI SDK, OpenAI, Anthropic SDK

Browse the full registry →

Anyone can contribute. If a library you use isn't listed, submit a PR to add it — your contribution helps every Context user.


Why Local?

Context runs entirely on your machine. Docs are downloaded once and stored as compact SQLite databases in ~/.context/packages/. After that, everything is local.

  • Fast — Local SQLite queries return in under 10ms
  • Offline — Works on flights, in coffee shops, anywhere
  • Private — Your queries never leave your machine
  • Free — No subscriptions, no rate limits, no usage caps
  • Reliable — No outages, no API changes, no service shutdowns

Beyond the Registry

The registry covers popular open-source libraries, but Context also works with any documentation source. Use context add to build packages from private repos, internal libraries, websites with llms.txt, or anything not yet in the registry.

bash
# Build from a git repositorycontext add https://github.com/your-company/design-system
# Build from a local directorycontext add ./my-project
# Specific version tagcontext add https://github.com/vercel/next.js/tree/v16.0.0
# Build from a website's llms.txtcontext add https://svelte.dev

Once built, share packages with your team — they're portable .db files that install instantly:

bash
# Export a packagecontext add ./my-project --name my-lib --pkg-version 2.0 --save ./packages/
# Teammate installs it (no build step needed)context add ./packages/[email protected]

Rebuilds and installs stage a replacement beside the destination, then close and validate it before replacing the installed package. A failed build, download, or replacement leaves the previous package available. Temporary files are excluded from package discovery. If the operating system blocks replacement of an open file (for example, on Windows), close the reader and retry the install.

Builds print a one-line ingestion summary (discovered, selected, and indexed documents and sections), listing only the problem kinds that actually occurred — exclusions, duplicates, unreadable files/directories, parse failures, and empty documents. Use --diagnostics ingestion.json for a per-path JSON report and --strict to reject read/parse errors and empty documents before installing. See the ingestion reporting guide for the report schema, strict-failure behavior, and library use.


:whale: Docker

Run Context as a containerized HTTP server for multi-client or Kubernetes deployments:

bash
# Run from the repository root (required for the monorepo lockfile)docker build -t context:local -f packages/context/Dockerfile .docker run --rm -p 8080:8080 context:local

The container starts Context with HTTP transport on port 8080, accessible at http://localhost:8080/mcp. The image uses a multi-stage build with node:22-bookworm-slim for native module compatibility.


:books: CLI Reference

context browse <package>

Search for packages available on the registry server.

bash
# Browse by registry/namecontext browse npm/next
# Output:#   npm/[email protected]           3.4 MB  The React Framework for the Web#   npm/[email protected]           3.2 MB  The React Framework for the Web#   ...##   Found 12 versions. Install with: context install npm/next
# Browse with just a name (defaults to npm)context browse react

context install <registry/name> [version]

Download and install a pre-built package from the registry server.

bash
# Install latest versioncontext install npm/next
# Install a specific versioncontext install npm/next 15.0.4
# Install from other registriescontext install pip/django

context add <source>

Build and install a documentation package from source. Use this for libraries not in the registry, or for private/internal docs. The source type is auto-detected.

From git repository:

Works with GitHub, GitLab, Bitbucket, Codeberg, or any git URL:

bash
# HTTPS URLscontext add https://github.com/vercel/next.jscontext add https://gitlab.com/org/repocontext add https://bitbucket.org/org/repo
# Specific tag or branchcontext add https://github.com/vercel/next.js/tree/v16.0.0
# SSH URLscontext add [email protected]:user/repo.gitcontext add ssh://[email protected]/user/repo.git
# Custom optionscontext add https://github.com/vercel/next.js --path packages/docs --name nextjs

From local directory:

Build a package from documentation in a local folder:

bash
# Auto-detects docs folder (docs/, documentation/, doc/)context add ./my-project
# Specify docs path explicitlycontext add /path/to/repo --path docs
# Custom package name and versioncontext add ./my-lib --name my-library --pkg-version 1.0.0
OptionDescription
--pkg-version <version>Custom version label
--path <path>Path to docs folder in repo/directory
--name <name>Custom package name
--save <path>Save a copy of the package to the specified path

Saving packages for sharing:

bash
# Save to a directory (auto-names as [email protected])context add https://github.com/vercel/next.js --save ./packages/
# Save to a specific filecontext add ./my-docs --save ./my-package.db

From website (llms.txt):

Many websites publish an llms.txt file with AI-ready documentation. Context auto-detects and fetches it. When the site only provides llms.txt (an index of links rather than the inlined llms-full.txt), Context follows each link and fetches the linked document:

bash
# Auto-fetches llms-full.txt or llms.txt from the sitecontext add https://svelte.devcontext add https://mui.com/material-ui
# Direct URL to a specific llms.txt filecontext add https://svelte.dev/docs/svelte/llms.txt
# Custom package namecontext add https://react-aria.adobe.com --name react-aria

From an arbitrary URL (blog posts, articles, raw Markdown):

If no llms.txt is found, Context falls back to fetching the page directly. HTML pages are run through a readability extractor (defuddle) so subscribe CTAs, navigation, and comment widgets don't end up in the package:

bash
# A blog postcontext add https://overreacted.io/things-i-dont-know-as-of-2018/
# Raw Markdown from GitHubcontext add https://raw.githubusercontent.com/neuledge/context/main/README.md --name context-readme

For subscriber-only content on platforms you have a paid account for, see context auth below.

From URL:

bash
context add https://cdn.example.com/[email protected]

From local file:

bash
context add ./[email protected]

Finding the right documentation repository:

Many popular projects keep their documentation in a separate repository from their main codebase. If you see a warning about few sections found, the docs likely live elsewhere:

bash
# Example: React's docs are in a separate repocontext add https://github.com/facebook/react# ⚠️  Warning: Only 45 sections found...# The warning includes a Google search link to help find the docs repo
# The actual React docs repository:context add https://github.com/reactjs/react.dev

Common patterns for documentation repositories:

  • project-docs (e.g., prisma/docs)
  • project.dev or project.io (e.g., reactjs/react.dev)
  • project-website (e.g., expressjs/expressjs.com)

When the CLI detects few documentation sections, it will show a Google search link to help you find the correct repository.

context list

Show installed packages.

bash
$ context list
Installed packages:
  [email protected]              4.2 MB    847 sections  [email protected]              3.9 MB    790 sections  react@18                 2.1 MB    423 sections
Total: 3 packages (10.2 MB)

Several versions of the same package can be installed side by side; each name is listed newest first. Commands that take a bare name (context query react, context serve --libs react) use the highest installed version.

context remove <name>

Remove a package. Pass name@version to remove a specific version. A bare name is only accepted when a single version of that package is installed — otherwise the command lists the installed versions and asks you to pick one, so nothing is deleted by guesswork.

bash
context remove nextjscontext remove [email protected]

context auth

Store per-platform cookies or headers so context add <url> can fetch subscriber-only content you have a legitimate account for (e.g., a paid Substack or Medium subscription). Credentials are stored in ~/.context/auth.json with 0600 permissions, and matched by domain (with one level of parent-domain fallback for subdomains).

bash
# Store cookies for a domaincontext auth add substack.com --cookies "substack.sid=YOUR_SID"
# Add a custom header toocontext auth add medium.com --cookies "sid=..." --header "x-frontend: web"
# List configured authcontext auth list
# Remove authcontext auth remove substack.com

context serve

Start the MCP server (used by AI agents).

bash
# Stdio transport (default, for single-client MCP integrations)context serve
# HTTP transport (for multi-client access over the network)context serve --httpcontext serve --http 3000context serve --http 3000 --host 0.0.0.0
# Restrict the session to a subset of installed packagescontext serve --libs react [email protected]
OptionDescription
--http [port]Start as HTTP server instead of stdio (default port: 8080)
--host <host>Host to bind to (default: 127.0.0.1)
--libs <names...>Restrict the session to a fixed set of installed libraries. Each entry is a name (react, exposing every installed version) or name@version ([email protected], exposing only that version). When set, search_packages and download_package are hidden so the session is locked to that list. Useful for per-project scoping when you have many packages installed globally.

The HTTP transport uses the MCP Streamable HTTP protocol, enabling multiple clients on the local network to connect to a single server instance. The endpoint is available at http://<host>:<port>/mcp.

Running stdio sessions reload automatically. While a stdio context serve is connected, a separate context add or context remove updates the server's installed-package list and refreshes the get_docs tool, so the connected MCP client picks up the change via a tools/list_changed notification without reconnecting or restarting the server. This live reload is stdio-only: an HTTP server started with --http does not watch the package directory, so restart it to see packages added or removed by the CLI.

context query <library> <topic>

Query documentation directly from the command line. Useful for testing and debugging.

bash
# Query a package (use name@version format from 'context list')context query '[email protected]' 'middleware authentication'
# A bare name queries the highest installed versioncontext query nextjs 'middleware authentication'
# Returns the same JSON format as the MCP get_docs tool

Topics are literal keywords, matched together (AND). Punctuation separates words, so ExecStart=, systemctl --user, and spring.main.banner-mode can be used directly. Underscores stay inside a word, so spring_boot matches the identifier rather than the two words apart. Words such as AND, OR, NOT, and NEAR are searched as text; advanced FTS syntax is not supported.

Use paired double quotes for a phrase, for example context query nextjs '"server components" rendering'. Phrase words must appear next to each other in order, with the usual search stemming. An unmatched double quote is ignored and the remaining words are searched as keywords. Empty or punctuation-only topics return no results. These rules also apply to MCP get_docs.


:gear: Architecture

┌─────────────────────────────────────────────────────────┐│                     Your Machine                        ││                                                         ││  ┌──────────┐    ┌──────────────────┐    ┌────────────┐ ││  │    AI    │    │   Context MCP    │    │ ~/.context │ ││  │  Agent   │───▶│     Server       │───▶│  /packages │ ││  │          │    │                  │    └────────────┘ ││  └──────────┘    └────────┬─────────┘         │         ││                           │            ┌──────────┐     ││                           │            │  SQLite  │     ││                           │            │   FTS5   │     ││                           │            └──────────┘     │└───────────────────────────┼─────────────────────────────┘                            │ (first use only)                            ▼                   ┌────────────────┐                   │   Community    │                   │   Registry     │                   └────────────────┘

First time you ask about a library:

  1. The MCP server searches the community registry
  2. Downloads the pre-built documentation package (a SQLite .db file)
  3. Stores it locally in ~/.context/packages/

Every time after:

  1. FTS5 full-text search finds relevant sections locally
  2. Smart filtering keeps results within token budget
  3. Your AI gets focused, accurate documentation in under 10ms

:question: FAQ

Can I use Context with non-JavaScript frameworks like Spring Boot, Django, or Rails?

Yes! Context is language-agnostic. It natively supports Markdown (.md, .mdx), AsciiDoc (.adoc), reStructuredText (.rst), and HTML — no conversion needed.

bash
# Python - FastAPI (Markdown)context add https://github.com/fastapi/fastapi --path docs/en/docs
# Python - Django (reStructuredText)context add https://github.com/django/django --path docs
# Java - Spring Boot (AsciiDoc)context add https://github.com/spring-projects/spring-boot --path spring-boot-project/spring-boot-docs/src/docs
# Rust - The Rust Bookcontext add https://github.com/rust-lang/book --path src

Point Context at the docs folder with --path and it handles the rest.

Can I contribute package definitions for new ecosystems?

Yes! The registry/ directory has YAML definitions organized by package manager:

  • registry/npm/ — JavaScript/TypeScript (Next.js, React, Tailwind, etc.)
  • registry/pip/ — Python (FastAPI, Flask, Django, Pydantic)
  • registry/maven/ — Java (Spring Boot, JUnit, Micrometer)
  • registry/go/ — Go modules, by full module path (Cobra)

To add a package, create a YAML file. Two source types are supported:

Git source — clone a repo at a version tag:

yaml
# registry/pip/my-library.yamlname: my-librarydescription: "Short description of the library"repository: https://github.com/org/my-library
versions:  - min_version: "2.0.0"    source:      type: git      url: https://github.com/org/my-library      docs_path: docs    tag_pattern: "v{version}"

ZIP source — download HTML docs from a URL (supports {version} placeholder):

yaml
# registry/python/python.yamlname: pythondescription: "Python programming language official documentation"
versions:  - versions: ["3.14", "3.13", "3.12"]    source:      type: zip      url: "https://docs.python.org/3/archives/python-{version}-docs-html.zip"      docs_path: "python-{version}-docs-html"      exclude_paths:        - "whatsnew/**"        - "changelog.html"

Version discovery is supported for npm, PyPI, Maven Central, Hex, and the Go module proxy. See existing definitions for examples.


:wrench: Development

bash
# Install dependenciespnpm install
# Buildpnpm build
# Testpnpm test
# Lintpnpm lint

:page_facing_up: License

Apache-2.0

Source: README.md at commit e737fda

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

14
  1. v1.4.2LatestNov 3, 2026
  2. v1.4.1Nov 1, 2026
  3. v1.4.0Oct 31, 2026
  4. v1.3.7Oct 29, 2026
  5. v1.3.5Oct 26, 2026
  6. v1.3.4Oct 22, 2026
  7. v1.3.3Oct 17, 2026
  8. v1.3.2Oct 15, 2026
  9. v1.3.1Oct 13, 2026
  10. v1.3.0Oct 5, 2026
  11. v1.2.11Oct 3, 2026
  12. v1.2.10Sep 30, 2026
  13. v1.2.9Sep 28, 2026
  14. v0.2.3Sep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts