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

@iflow-mcp/raintree-technology-docpull

v0.2.0

Published

MCP server for fetching and searching documentation with semantic search

Readme

docpull-mcp

MCP server for fetching and searching documentation on-demand. Uses docpull to pull docs and pgvector for semantic search.

Features

  • Fetch docs on-demand - Pull documentation for any library
  • Semantic search - Find concepts even when you don't know exact terms
  • Exact matching - Grep-like search for known function/method names
  • Built-in sources - React, Next.js, Hono, Supabase, and more
  • Custom sources - Add your own documentation URLs
  • 7-day cache - Automatic refresh of stale docs

Install

git clone https://github.com/raintree-technology/docpull-mcp
cd docpull-mcp
bun install

# Requires docpull CLI
pip install docpull

For semantic search (optional but recommended)

# PostgreSQL with pgvector
psql $DATABASE_URL -f schema.sql

# Set environment variables
export DATABASE_URL="postgresql://user:pass@localhost:5432/docs"
export OPENAI_API_KEY="sk-..."

Usage

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "docpull": {
      "command": "bun",
      "args": ["run", "/path/to/docpull-mcp/src/server.ts"],
      "env": {
        "DATABASE_URL": "postgresql://...",
        "OPENAI_API_KEY": "sk-..."
      }
    }
  }
}

Claude Code

Add to ~/.claude/settings.json:

{
  "mcpServers": {
    "docpull": {
      "command": "bun",
      "args": ["run", "/path/to/docpull-mcp/src/server.ts"],
      "env": {
        "DATABASE_URL": "postgresql://...",
        "OPENAI_API_KEY": "sk-..."
      }
    }
  }
}

Tools

ensure_docs

Fetch and index documentation for a library.

ensure_docs(source: "react")              # Fetch and index
ensure_docs(source: "https://...")        # Direct URL
ensure_docs(source: "react", force: true) # Force refresh
ensure_docs(source: "react", index: false) # Fetch only, no indexing

search_docs

Semantic search for concepts (requires DATABASE_URL + OPENAI_API_KEY).

search_docs(query: "how to stream responses", library: "anthropic")
search_docs(query: "row level security", library: "supabase")

grep_docs

Fast exact pattern matching (requires DATABASE_URL).

grep_docs(pattern: "onConflictDoUpdate", library: "drizzle")
grep_docs(pattern: "usePrefetchQuery")

list_sources

List available documentation sources.

list_sources()                     # All sources
list_sources(category: "frontend") # Filter by category

list_indexed

List libraries that have been indexed for search.

list_indexed()

Built-in Sources

| Name | Category | Description | |------|----------|-------------| | react | frontend | React documentation | | nextjs | frontend | Next.js documentation | | tailwindcss | frontend | Tailwind CSS | | vite | frontend | Vite build tool | | hono | backend | Hono web framework | | fastapi | backend | FastAPI framework | | express | backend | Express.js framework | | anthropic | ai | Anthropic Claude API | | openai | ai | OpenAI API | | langchain | ai | LangChain framework | | supabase | database | Supabase documentation | | drizzle | database | Drizzle ORM | | prisma | database | Prisma ORM |

Custom Sources

Add to ~/.config/docpull-mcp/sources.yaml:

sources:
  my-docs:
    url: "https://docs.example.com"
    description: "My documentation"
    category: "internal"
    maxPages: 200

Manual Ingestion

To ingest docs without the MCP server:

# Ingest all fetched docs
bun run ingest

# Ingest specific library
bun run ingest react

Environment Variables

| Variable | Required | Description | |----------|----------|-------------| | DATABASE_URL | For search | PostgreSQL connection string with pgvector | | OPENAI_API_KEY | For search | OpenAI API key for embeddings | | DOCS_DIR | No | Custom docs directory (default: ~/.local/share/docpull-mcp/docs) |

Cost

  • Fetching: Free (uses docpull)
  • Indexing: ~$0.10 per 50,000 words (OpenAI embeddings)
  • Searching: ~$0.0001 per query

License

MIT