
search-mcp
Updated 6d agosearch-mcp
Open-source toolkit for Cloudflare AI Search:
- MCP Worker (
src/mcp.ts) -- bearer-gated Streamable-HTTP MCP with asearchtool for agents. - Query Worker (
src/index.ts) -- CORS + Turnstile + rate-limitedPOST /askthat streams answers for a browser widget. - Corpus sync (
scripts/sync.mjs,scripts/sync-runner.mjs) -- git-tracked sources to R2, with extension remapping so TypeScript, Dockerfiles, and other text AI Search would otherwise skip get indexed.
git repos -> sync.mjs -> R2 bucket -> AI Search instance -> /ask + /mcp
Install (npm)
The corpus sync CLIs and ask-widget assets ship on npm as @skyphusion/search-mcp (the unscoped name search-mcp is taken by another project).
npm install @skyphusion/search-mcp
# or run without installing:
npx --package=@skyphusion/search-mcp search-mcp-sync corpus --dry-run
| Command | Role |
|---|---|
search-mcp-sync | Upload git-tracked corpus files to R2 for one target |
search-mcp-sync-run | Clone/fetch repos, sync all targets, optional reindex |
Put targets.json in your project root (copy from node_modules/@skyphusion/search-mcp/scripts/targets.json.example) or set SEARCH_MCP_TARGETS. Clone roots default to the current working directory; override with SYNC_REPO_ROOT.
Widget assets after install:
cp node_modules/@skyphusion/search-mcp/public/ask-widget.{js,css} ./docs/
Workers (src/) deploy from a git clone; see docs/DEPLOY.md.
Quick start (from source)
npm install
cp wrangler.toml.example wrangler.toml
cp wrangler.mcp.toml.example wrangler.mcp.toml
cp scripts/targets.json.example scripts/targets.json
# edit the three files for your account, instance, bucket, and repos
npm run typecheck # src + index.test.ts (Workers types) AND scripts/**/*.test.ts (Node types)
npm test
Provision R2 + AI Search, sync your corpus, deploy both Workers. Step-by-step: docs/DEPLOY.md.
Skyphusion production
This repo is the production home for three AI Search surfaces:
| Surface | Host | Worker config |
|---|---|---|
| Public docs / marketing | search.vivijure.com | secret SKYPHUSION_WRANGLER_TOML → wrangler.toml at CI |
| Internal MCP | search-internal.vivijure.com | secret SKYPHUSION_WRANGLER_MCP_TOML |
| Rockenhaus court records | search.rockenhaus.net | committed wrangler.rockenhaus.toml |
Do not commit wrangler.toml, wrangler.mcp.toml, or scripts/targets.json (gitignored).
Rockenhaus is the exception: its wrangler file is public and tracked.
- Operator runbook -- secrets, topology shape, escrow, reindex
- Cutover record (2026-07-08) -- migration history (historical)
Workers
| Worker | Entry | Endpoint | Auth |
|---|---|---|---|
| Query (public) | wrangler.toml | POST /ask, GET /health | Turnstile (optional) + CORS allowlist |
| MCP (internal) | wrangler.mcp.toml | POST /mcp, GET /health | Authorization: Bearer (fail closed) |
| Query (rockenhaus) | wrangler.rockenhaus.toml | POST /ask, GET /health | CORS allowlist (court-record origins) |
Deploy separately so browser traffic and agent traffic can bind different AI Search instances.
Related servers

n8n
Updated todayby n8n-io
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

mcp-server-fetch
OfficialUpdated 14d agoA Model Context Protocol server providing tools to fetch and convert web content for usage by LLMs

@modelcontextprotocol/server-everything
OfficialUpdated 14d agoMCP server that exercises all the features of the MCP protocol