Power your agent
คำสั่งของผู้เผยแพร่เอง ไม่ใช่เอนด์พอยต์ของ PlugMCP
Host a copy with our keys and logs.
npx -y @cosmocoder/[email protected]Claude Code ไม่มีลิงก์ติดตั้งสำหรับคำสั่งแบบโลคัล ให้คัดลอกคำสั่งด้านล่างแล้วรันในเทอร์มินัล
claude mcp add cosmocoder-mcp-web-docs -- npx -y @cosmocoder/mcp-web-docs@2.2.36รันในเทอร์มินัล
{ "mcpServers": { "cosmocoder-mcp-web-docs": { "command": "npx", "args": [ "-y", "@cosmocoder/[email protected]" ] } }}claude_desktop_config.json
URL แบบรีโมตหรือคำสั่งบนเครื่องของคุณ? การติดตั้งสองแบบต่างกันอย่างไร
รันบน PlugMCP
A new server you create. It is not this listing's official endpoint. Use the publisher install when you want their URL and their credentials.
เปิดIndex Any Documentation. Search Locally. Stay Private.
A self-hosted Model Context Protocol (MCP) server that crawls, indexes, and searches documentation from any website. Unlike remote MCP servers limited to GitHub repos or pre-indexed libraries, web-docs gives you full control over what gets indexed — including private documentation behind authentication.
Features • Installation • Quick Start • Tools • Tips • Troubleshooting • Contributing
AI assistants struggle with documentation:
MCP Web Docs crawls and indexes documentation from ANY website locally:
npm install -g @cosmocoder/mcp-web-docs
No installation required - just configure your MCP client to use npx (see below).
# Clone the repository
git clone https://github.com/cosmocoder/mcp-web-docs.git
cd mcp-web-docs
# Install dependencies (automatically installs Playwright browsers)
npm install
# Build
npm run build
Add to your Cursor MCP settings (~/.cursor/mcp.json):
Using npx (no install required):
{
"mcpServers": {
"web-docs": {
"command": "npx",
"args": ["-y", "@cosmocoder/mcp-web-docs"]
}
}
}
Using global install:
{
"mcpServers": {
"web-docs": {
"command": "mcp-web-docs"
}
}
}
Using local build:
{
"mcpServers": {
"web-docs": {
"command": "node",
"args": ["/path/to/mcp-web-docs/build/index.js"]
}
}
}
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
Using npx:
{
"mcpServers": {
"web-docs": {
"command": "npx",
"args": ["-y", "@cosmocoder/mcp-web-docs"]
}
}
}
Using global install:
{
"mcpServers": {
"web-docs": {
"command": "mcp-web-docs"
}
}
}
Add to .vscode/mcp.json in your workspace:
Using npx:
{
"servers": {
"web-docs": {
"command": "npx",
"args": ["-y", "@cosmocoder/mcp-web-docs"]
}
}
}
Using global install:
{
"servers": {
"web-docs": {
"command": "mcp-web-docs"
}
}
}
Add to ~/.codeium/windsurf/mcp_config.json:
Using npx:
{
"mcpServers": {
"web-docs": {
"command": "npx",
"args": ["-y", "@cosmocoder/mcp-web-docs"]
}
}
}
Using global install:
{
"mcpServers": {
"web-docs": {
"command": "mcp-web-docs"
}
}
}
Add to ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json:
Using npx:
{
"mcpServers": {
"web-docs": {
"command": "npx",
"args": ["-y", "@cosmocoder/mcp-web-docs"],
"disabled": false,
"autoApprove": []
}
}
}
Using global install:
{
"mcpServers": {
"web-docs": {
"command": "mcp-web-docs",
"disabled": false,
"autoApprove": []
}
}
}
Global configuration: Open RooCode → Click MCP icon → "Edit Global MCP"
Project-level configuration: Create .roo/mcp.json at your project root
Using npx:
{
"mcpServers": {
"web-docs": {
"command": "npx",
"args": ["-y", "@cosmocoder/mcp-web-docs"]
}
}
}
Using global install:
{
"mcpServers": {
"web-docs": {
"command": "mcp-web-docs"
}
}
}
Index the LanceDB documentation from https://lancedb.com/docs/
The AI assistant will call add_documentation and begin crawling.
How do I create a table in LanceDB?
The AI will use search_documentation to find relevant content.
I need to index private documentation at https://internal.company.com/docs/
It requires authentication.
A browser window will open for you to log in. The session is saved for future crawls.
add_documentationAdd a new documentation site for indexing.
add_documentation({
url: 'https://docs.example.com/',
title: 'Example Docs', // Optional
id: 'example-docs', // Optional custom ID
tags: ['frontend', 'mycompany'], // Optional tags for categorization
version: '2.0', // Optional version for versioned packages
auth: {
// Optional authentication
requiresAuth: true,
// browser auto-detected from OS settings if omitted
loginTimeoutSecs: 300,
},
});
For GitHub tree URLs, the first segment after /tree/ is the branch and any remaining segments are the crawl root. Encode / as %2F in branch names (for example, /tree/feature%2Fdocs).
search_documentationSearch through indexed documentation using hybrid search (FTS + semantic).
search_documentation({
query: 'how to configure authentication',
url: 'https://docs.example.com/', // Optional: filter to specific site
tags: ['frontend', 'mycompany'], // Optional: filter by tags
limit: 10, // Optional: max results
});
authenticateOpen a browser window for interactive login to protected sites. Your default browser is automatically detected from OS settings.
authenticate({
url: 'https://private-docs.example.com/',
// browser auto-detected from OS settings - only specify to override
loginTimeoutSecs: 300, // Optional: timeout in seconds
});
list_documentationList all indexed documentation sites with their metadata including tags.
set_tagsSet or update tags for a documentation site. Tags help categorize and filter documentation.
set_tags({
url: 'https://docs.example.com/',
tags: ['frontend', 'react', 'mycompany'], // Replaces existing tags
});
list_tagsList all available tags with usage counts. Useful to see what tags exist across your indexed docs.
reindex_documentationRe-crawl and re-index a specific documentation site.
get_indexing_statusGet the current status of indexing operations.
delete_documentationDelete an indexed documentation site and all its data.
clear_authClear saved authentication session for a domain.
Collections let you group related documentation sites together for project-based organization. Unlike tags (which categorize individual docs), collections create named workspaces like "My React Project" containing React + Next.js + TypeScript docs.
create_collectionCreate a new collection to group documentation sites.
create_collection({
name: 'My React Project',
description: 'React, Next.js, and TypeScript docs for my project', // Optional
});
add_to_collectionAdd indexed documentation sites to a collection.
add_to_collection({
name: 'My React Project',
urls: ['https://react.dev/', 'https://nextjs.org/docs/', 'https://www.typescriptlang.org/docs/'],
});
search_collectionSearch within a specific collection. Uses the same hybrid search as search_documentation but limited to docs in the collection.
search_collection({
name: 'My React Project',
query: 'server components data fetching',
limit: 10, // Optional
});
list_collectionsList all collections with their document counts.
get_collectionGet details of a specific collection including all its documentation sites.
get_collection({
name: 'My React Project',
});
update_collectionRename a collection or update its description.
update_collection({
name: 'My React Project',
newName: 'Frontend Stack', // Optional
description: 'Updated description', // Optional
});
remove_from_collectionRemove documentation sites from a collection. The sites remain indexed, just removed from the collection.
remove_from_collection({
name: 'My React Project',
urls: ['https://old-library.dev/docs/'],
});
delete_collectionDelete a collection. The documentation sites in the collection are not deleted, only the collection grouping.
delete_collection({
name: 'Old Project',
});
The search uses hybrid full-text and semantic search. For best results:
Be specific - Include unique terms from what you're looking for
"Button props""Button props onClick disabled loading"Use exact phrases - Wrap in quotes for exact matching
"authentication middleware" finds that exact phraseInclude context - Add related terms to narrow results
"GET /users endpoint authentication headers""webpack config entry output plugins"To avoid typing search instructions in every prompt, add a rule to your MCP client:
Cursor (Cursor Settings > Rules):
When I ask about library documentation or need code examples,
use the web-docs MCP server to search indexed documentation.
Windsurf (.windsurfrules):
Always use web-docs search_documentation when I ask about
API references, configuration, or library usage.
If you have multiple sites indexed, filter by URL or tags:
// Filter by specific site URL
search_documentation({
query: 'routing',
url: 'https://nextjs.org/docs/',
});
// Filter by tags (searches all docs with matching tags)
search_documentation({
query: 'Button component',
tags: ['frontend', 'mycompany'], // Only docs tagged with BOTH tags
});
Tags help organize documentation when you have multiple related sites. Add tags when indexing:
// Index frontend package docs
add_documentation({
url: 'https://docs.mycompany.com/ui-components/',
tags: ['frontend', 'mycompany', 'react'],
});
// Index backend API docs
add_documentation({
url: 'https://docs.mycompany.com/api/',
tags: ['backend', 'mycompany', 'api'],
});
Later, search across all frontend docs:
search_documentation({
query: 'authentication',
tags: ['frontend'], // Searches all frontend-tagged docs
});
You can also add tags to existing documentation with set_tags.
Collections provide a higher-level grouping than tags — they let you organize documentation by project or context, making it easy to switch between different work contexts.
Create a collection for your project:
create_collection({
name: 'E-commerce Backend',
description: 'All docs for the backend rewrite project',
});
Add relevant documentation:
add_to_collection({
name: 'E-commerce Backend',
urls: ['https://fastapi.tiangolo.com/', 'https://docs.sqlalchemy.org/', 'https://redis.io/docs/'],
});
Search within your project context:
search_collection({
name: 'E-commerce Backend',
query: 'connection pooling best practices',
});
Collections vs Tags:
You can use both together — a document can have tags AND belong to multiple collections.
When indexing documentation for versioned packages (React, Vue, Python libraries, etc.), you can specify the version to track which version you've indexed:
// Index React 18 docs
add_documentation({
url: 'https://18.react.dev/',
title: 'React 18 Docs',
version: '18',
});
// Index React 19 docs (different URL)
add_documentation({
url: 'https://react.dev/',
title: 'React 19 Docs',
version: '19',
});
The version is displayed in list_documentation output and preserved when re-indexing. Version formats are flexible — use whatever makes sense for your package (e.g., "18", "v6.4", "3.11", "latest").
Note: Version is optional and mainly useful for software packages with multiple versions. For internal documentation, wikis, or single-version products, you can skip the version field.
Indexing reports N skipped when the extractor found nothing indexable on those pages — they are left out of the index and the rest of the site is still stored. If most pages are skipped the run fails instead, and nothing is stored, since that usually means extraction is broken rather than the site being empty. Try:
authenticate before add_documentationbrowser: "firefox", for example, if neededIf browsers aren't installed, run:
npx playwright install
All data is stored locally in ~/.mcp-web-docs/:
~/.mcp-web-docs/
├── docs.db # SQLite database for document metadata
├── vectors/ # LanceDB vector database
├── sessions/ # Saved authentication sessions
└── crawlee/ # Crawlee crawl state (request queues)
MIT License - see LICENSE for details.
MCP server for crawling and indexing web documentation - works with any website
{ "mcpServers": { "cosmocoder-mcp-web-docs": { "command": "npx", "args": [ "-y", "@cosmocoder/[email protected]" ] } }}เครื่องมือ
ยังไม่มีรายการเครื่องมือ เซิร์ฟเวอร์แบบรีโมตจะได้รายการหลังการตรวจสอบสถานะครั้งแรก
FAQ
คัดลอกคอนฟิก stdio สำหรับ Cursor, Claude Desktop, Claude Code หรือ VS Code ได้ในหน้านี้ คอนฟิกนี้ใช้การติดตั้งของผู้เผยแพร่ ไม่ใช่พร็อกซีของ PlugMCP
ระเบียนนี้ไม่ได้ระบุตัวแปรสภาพแวดล้อมที่จำเป็น
@cosmocoder/mcp Web Docs ทำงานแบบโลคัลผ่าน stdio
ตรวจสอบล่าสุดเมื่อ 2026-11-13 MCP server for crawling and indexing web documentation - works with any website