Skip to main content

Local-first MCP server providing fresh Pipecat docs/examples context for Claude Code, Cursor, VS Code, and Zed.

Project description

Pipecat Context Hub

Local-first MCP server providing fresh Pipecat docs and examples context for Claude Code, Cursor, VS Code, and Zed.

Quick links: Client Setup | MCP Tools | Version-Aware Queries | Environment Variables | Report an Issue

What It Does

When your AI coding assistant needs Pipecat context, it calls MCP tools exposed by this server. The server queries a local index (ChromaDB + SQLite FTS5) and returns relevant documentation, code examples, and API source — all with source citations.

IDE/Agent  ←stdio→  pipecat-context-hub serve  ←→  Local index (~/.pipecat-context-hub/)

Install

Run the hub with uv. uvx fetches and runs it on demand; the first invocation downloads the package and local models (allow a few minutes).

Naming: the PyPI package is pipecat-ai-context-hub (official pipecat packages are pipecat-ai*); the command and MCP server name are pipecat-context-hub. Both spellings of the command resolve once installed.

Populate the Local Index

Before the server can answer queries, build the local index:

# First-time setup (downloads docs, clones repos, computes embeddings)
uvx pipecat-ai-context-hub refresh

# Force full re-ingest (ignores cached state)
uvx pipecat-ai-context-hub refresh --force

# Recover from an unhealthy local index
uvx pipecat-ai-context-hub refresh --force --reset-index

Tip: When gh CLI is authenticated, refresh also fetches GitHub release notes for deprecation data. Without it, check_deprecation coverage will be limited.

Start the Server

Run refresh at least once first (see above). serve exits with code 2 if the index is empty or cannot be opened — it will not start against an unusable index, since MCP clients would otherwise hang on zero-hit queries.

uvx pipecat-ai-context-hub serve

Client Setup

Point your IDE's MCP config at uvx pipecat-ai-context-hub serve. Per-client setup guides:

Client Setup Guide
Claude Code docs/setup/claude-code.md
Cursor docs/setup/cursor.md
VS Code docs/setup/vscode.md
Zed docs/setup/zed.md

Example (Claude Code .mcp.json):

{
  "mcpServers": {
    "pipecat-context-hub": {
      "command": "uvx",
      "args": ["pipecat-ai-context-hub", "serve"],
      "env": {}
    }
  }
}

Config templates for all clients are in config/clients/.

Add CLAUDE.md Instructions (Recommended)

Add this to your project's CLAUDE.md (or ~/.claude/CLAUDE.md globally) so your coding agent prefers the MCP tools for Pipecat questions:

## MCP Tools

When pipecat-context-hub MCP is available, always prefer its tools
(`search_docs`, `search_api`, `search_examples`, `get_example`, `get_doc`,
`get_code_snippet`, `check_deprecation`) for Pipecat framework questions.
Do not read `.venv` or source files directly.

- "How do I ...?" → `search_docs`
- "Show me an example of ..." → `search_examples`, then `get_example`
- Class constructors, method signatures, frame types → `search_api`
- Specific code span or symbol → `get_code_snippet`
- Retrieve a specific doc page → `get_doc`
- Check if an import is deprecated → `check_deprecation`

**Multi-concept queries:** Use ` + ` or ` & ` as delimiters
(e.g., `search_docs("TTS + STT")`). Each concept is searched independently
and results are interleaved.

When suggesting commands for Pipecat projects, always use `uv` as the
package manager:
- Install dependencies: `uv sync` (not `pip install`)
- Run scripts: `uv run python bot.py` (not `python bot.py`)
- Add packages: `uv add <package>` (not `pip install <package>`)

MCP Tools

Tool Use when...
search_docs "How do I ...?" — conceptual questions, guides, configuration
get_doc Retrieve a specific doc page by ID or path (e.g. /guides/learn/transports)
search_examples "Show me an example of ..." — find working code by task or component
get_example Retrieve full source files for a specific example
search_api Class definitions, method signatures, frame types, inheritance
get_code_snippet Get targeted code by symbol name, intent, or file path + line range
check_deprecation Verify whether a pipecat import path is deprecated
get_hub_status Index health, reranker runtime state, record counts, framework version, commit SHAs

All search results include an EvidenceReport with confidence scores, source-grounded facts, unresolved questions, and suggested follow-up queries.

Filters

search_examples supports filters to narrow results:

  • domain"backend" (Python), "frontend" (JS/TS), "config", "infra"
  • language"python", "typescript"
  • repo — filter by GitHub repo slug
  • tags — filter by capability tags

search_api supports filters for framework internals:

  • module — module path prefix (e.g. "pipecat.services")
  • class_name — class name prefix (e.g. "DailyTransport")
  • chunk_type"method", "function", "class_overview", "module_overview", "type_definition"
  • yields — methods that yield a specific frame type
  • calls — methods that call a specific method

Multi-Concept Queries

Use + or & to search for multiple concepts at once:

search_docs("TTS + STT")
search_examples("idle timeout + function calling + Gemini")
search_api("BaseTransport + WebSocketTransport")

Each concept is searched independently and results are interleaved for balanced coverage.

Version-Aware Queries

If your project targets a specific pipecat version, pass pipecat_version to get results scored for compatibility:

search_examples("TTS pipeline", pipecat_version="0.0.96", domain="backend")
search_api("DailyTransport", pipecat_version="0.0.96")

Results are annotated with version_compatibility: "compatible", "newer_required", "older_targeted", or "unknown". Use version_filter="compatible_only" to exclude results requiring a newer version.

You can also pin the framework index to a specific version:

uvx pipecat-ai-context-hub refresh --framework-version v0.0.96
# or via env var:
PIPECAT_HUB_FRAMEWORK_VERSION=v0.0.96 uvx pipecat-ai-context-hub refresh

Environment Variables

Variable Default Description
PIPECAT_HUB_EXTRA_REPOS (empty) Comma-separated repo slugs to ingest alongside defaults
PIPECAT_HUB_FRAMEWORK_VERSION (empty) Pin framework repo to a specific git tag (e.g. v0.0.96)
PIPECAT_HUB_TAINTED_REPOS (empty) Comma-separated repo slugs to skip entirely
PIPECAT_HUB_TAINTED_REFS (empty) Comma-separated org/repo@ref entries to skip
PIPECAT_HUB_STALE_AFTER_DAYS 7 Index age (days) after which tool responses carry an index_staleness field with a refresh hint. 0 disables
PIPECAT_HUB_RERANKER_ENABLED 1 Set to 0 to disable cross-encoder reranking
PIPECAT_HUB_RERANKER_MODEL cross-encoder/ms-marco-MiniLM-L-6-v2 Swap reranker model. Allowed: cross-encoder/ms-marco-MiniLM-L-6-v2 (~80 MB), cross-encoder/ms-marco-MiniLM-L-12-v2 (~130 MB), cross-encoder/ms-marco-TinyBERT-L-2-v2 (~17 MB)
PIPECAT_HUB_IDLE_TIMEOUT_SECS 1800 Idle backstop: exit serve if no MCP request arrives for this many seconds. Auto-disabled when serve has reliable client-death detection (direct-parent launch, or uv run with a resolvable grandparent) — it would otherwise reap a warm hub mid-session. Stays armed when detection is unavailable (Windows, parent-watch disabled, unresolved grandparent). Set an explicit value (incl. 0) to override the auto-decision.
PIPECAT_HUB_PARENT_WATCH_INTERVAL 2.0 Hidden tuning knob (primarily for tests): poll interval (seconds) for the parent-death watchdog. Floored at 0.1s when non-zero. Set to 0 to disable the watchdog.
PIPECAT_HUB_WARMUP 1 Pre-warm embedding + cross-encoder at serve boot so the first MCP query doesn't pay the cold-start cost (matters most on Windows CPU, where cold loads can take 30-130s). Set to 0 to skip (faster boot, slower first query).

See .env.example for curated repo bundles you can copy into your .env.

MCP Client Configuration

Two ways to point an MCP client (Claude Code, Cursor, Zed, etc.) at this hub. Both exit cleanly within ~2s when the client goes away; they differ only in convenience.

Note: an MCP server is a subprocess the client spawns over stdio — it cannot restart itself. If you want the hub back after it exits, that is the MCP client's job (most clients respawn on the next request). The hub's contribution is to (a) stay alive for the whole session and (b) exit cleanly so the client can respawn without errors.

Recommended — persistent install (instant orphan cleanup):

uv tool install pipecat-ai-context-hub
{
  "mcpServers": {
    "pipecat-context-hub": {
      "command": "pipecat-context-hub",
      "args": ["serve"]
    }
  }
}

The installed pipecat-context-hub binary is the immediate child of the MCP client. When the client dies or restarts, the parent-death watchdog fires within ~2s and the hub exits cleanly, releasing the Chroma + SQLite handles. Re-run uv tool install --upgrade pipecat-ai-context-hub to update.

Alternative — uvx (zero install):

{
  "mcpServers": {
    "pipecat-context-hub": {
      "command": "uvx",
      "args": ["pipecat-ai-context-hub", "serve"]
    }
  }
}

Convenient (nothing to install — uvx fetches and runs the package on demand). uvx stays alive as an intermediate parent, so getppid() never flips when the client dies — but serve detects the uvx launcher and watches the grandparent (the real client) directly, so it still exits within ~2s of the client going away. The idle timeout is auto-disabled in this case (it is no longer needed for cleanup), so the hub stays warm through quiet stretches of an active session. Set PIPECAT_HUB_IDLE_TIMEOUT_SECS if you still want an idle backstop.

Data Sources

The default index includes:

  • Pipecat documentationdocs.pipecat.ai (200+ pages)
  • Pipecat frameworkpipecat-ai/pipecat (Python AST-indexed: classes, methods, imports, call graphs)
  • Pipecat examplespipecat-ai/pipecat-examples (project-level code examples)
  • Pipecat Flowspipecat-ai/pipecat-flows (conversation flow framework, Python AST-indexed)
  • Daily Python SDKdaily-co/daily-python (.pyi stubs + RST type definitions)
  • TypeScript SDKspipecat-client-web, pipecat-client-web-transports, pipecat-client-react-native-transports, voice-ui-kit, pipecat-prebuilt (tree-sitter-indexed)

CLI usage (pipecat init, pipecat cloud deploy) is covered by the indexed docs.pipecat.ai pages (/api-reference/cli/*); the pipecat-ai/pipecat-cli repo itself is opt-in (it adds only CLI-internal source). Add more repos via PIPECAT_HUB_EXTRA_REPOS (full org/repo slugs, e.g. pipecat-ai/pipecat-cli, pipecat-ai/pipecat-mcp-server, pipecat-ai/pipecat-flows-editor, pipecat-ai/pipecat-krisp). Only Python, TypeScript, and RST are parsed — Swift/Kotlin/C++ client SDKs (iOS, Android, cxx, esp32) clone but yield zero source/API chunks (only a few README/config fallback chunks), so they don't surface in search_api / get_code_snippet.

Security

Troubleshooting

  • Empty results — run uvx pipecat-ai-context-hub refresh to populate the index
  • Stale results — run uvx pipecat-ai-context-hub refresh --force to re-ingest from latest upstream
  • Index corruption — run uvx pipecat-ai-context-hub refresh --force --reset-index to wipe and rebuild
  • serve exits immediately with code 2 — the index is empty or unopenable. Run uvx pipecat-ai-context-hub refresh (or refresh --force --reset-index if the error message mentions a failed open) and try again. This is deliberate: prior versions started anyway and MCP clients hung on every query.
  • Stale serve processesserve polls its parent PID every 2s and exits cleanly when the MCP client disappears (look for Shutting down: parent_died original_ppid=… current_ppid=1 in the trace). Under uv run (where the immediate parent is uv, not the client), it instead watches the grandparent and logs Shutting down: client_died client_pid=…. If you still see orphans (older versions, an unrecognized lingering launcher, or Windows where the watchdog is disabled), pkill -f "pipecat-context-hub serve" is safe to run between sessions.
  • Idle watchdog disabled: watching … for client exit on boot — this INFO line is expected and benign. It means serve has reliable client-death detection (direct parent, or uv/uvx/poetry/… with a resolved grandparent), so the idle timeout is switched off to keep the hub warm through quiet stretches of an active session. No action needed; set PIPECAT_HUB_IDLE_TIMEOUT_SECS if you want an idle backstop anyway.
  • Diagnosing degraded starts — on serve boot, look for pipecat-context-hub vX.Y.Z starting: … (INFO) to confirm the running version and index content-type counts. If reranking is off, a Reranker disabled at startup: reason=… (WARNING) line names the cause (config_disabled | not_cached) and, for not_cached, the exact HF cache directory probed.

Windows

  • Refresh appears to hang or returns zero code results — a prior refresh may have left a clone half-initialised (common after an interrupted run or antivirus quarantine). pipecat-context-hub now detects this on the next refresh and re-clones automatically; look for Recovered N corrupt clone(s): … in the summary. As a manual remedy you can delete %LOCALAPPDATA%\pipecat-context-hub\repos\.
  • UnicodeEncodeError in the refresh summary — the summary table uses box-drawing characters that some Windows code pages (cp1252, cp1254, etc.) cannot encode. The server falls back to ASCII automatically. To opt into the full Unicode output, set PYTHONIOENCODING=utf-8 before invoking refresh, or use Windows Terminal (which defaults to UTF-8).

If the server returns poor or missing results, file a retrieval quality issue — the issue template includes a diagnostic prompt your coding agent can run to generate a structured report.

Contributing

See CONTRIBUTING.md for architecture, development workflow, benchmarking, and project structure.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pipecat_ai_context_hub-0.2.1.tar.gz (1.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pipecat_ai_context_hub-0.2.1-py3-none-any.whl (162.6 kB view details)

Uploaded Python 3

File details

Details for the file pipecat_ai_context_hub-0.2.1.tar.gz.

File metadata

  • Download URL: pipecat_ai_context_hub-0.2.1.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for pipecat_ai_context_hub-0.2.1.tar.gz
Algorithm Hash digest
SHA256 60a5ca426968784d91850beff36904a5b746a37423dd03340d70137ef4365eea
MD5 a9146127b4efc95401dc7b4cabe51e1b
BLAKE2b-256 f6384f51a04f3dac8c83bf5bb8581c287f0ecd55514076e19e8104171ff6cf7d

See more details on using hashes here.

File details

Details for the file pipecat_ai_context_hub-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: pipecat_ai_context_hub-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 162.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for pipecat_ai_context_hub-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e1c7ea80692cb8676d79abaaf193a98d70aa3bf108e040759de85818fc07a51f
MD5 8e9882a7ba404af20e6ef1e0be4c27bf
BLAKE2b-256 7a3f4622d768010a0b4b6a9fc5b5154c1e5e30df148cbe20df8f1da11375032c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page