
Security News
Happy Birthday, Shai-Hulud
It has been one year since Shai-Hulud made its first appearance on npm.
@praveenc/llmstxt-doc-search
Advanced tools
BM25 search over llms.txt doc indexes (Strands, Kiro, AWS); sources addable at runtime.
An MCP server that BM25-searches any number of llms.txt documentation indexes (Strands, Kiro, AWS user/dev guides, and any you add at runtime), then fetches full doc content on demand. Built on the search engine from @praveenc/mcp-docs-server, generalized to a registry of sources.
llms.txt files are curated link indexes some doc sites publish. They can be huge (AWS Bedrock's is ~1,000 docs). This server indexes only the titles at first use (fast, tiny), ranks queries with BM25 + Porter stemming + bigrams + markdown-aware weighting, and fetches the full markdown/HTML of a result on demand. So you get current docs with near-zero local storage - the right model for broad, fast-moving reference (vs. snapshotting docs into a local vault).
| Tool | Purpose |
|---|---|
docs_home() | Orientation: registered sources + how to search/fetch. Call first. |
list_doc_sources() | List sources (name, llms.txt url, index status). |
search_docs(query, source?, k?) | BM25 search; omit source to search all, or scope to one. Returns {source,url,title,score,snippet}. |
fetch_doc(url) | Full content of a result url (must belong to a registered source). |
add_doc_source(name, llms_txt_url) | Register + index a new llms.txt at runtime (persisted). |
remove_doc_source(name) | Remove a source. |
refresh_doc_source(name) | Re-index a source (pick up changes). |
strands, kiro, aws-bedrock-userguide, aws-agentic-ai-lens, aws-bedrock-agentcore-devguide.
Registry is persisted at ~/.config/llmstxt-doc-search/sources.json (override with LLMSTXT_REGISTRY_PATH).
Published to npm as @praveenc/llmstxt-doc-search. No local build needed - run it via npx:
{
"mcpServers": {
"llmstxt-doc-search": {
"command": "npx",
"args": ["-y", "@praveenc/llmstxt-doc-search"]
}
}
}
npm install
npm run build # -> dist/
npm test # offline unit tests
npm run typecheck
MCP client config (from a local build):
{
"mcpServers": {
"llmstxt-doc-search": {
"command": "node",
"args": ["/ABS/PATH/llmstxt-doc-search/dist/index.js"]
}
}
}
Dev (no build): "command": "npx", "args": ["tsx", "/ABS/PATH/src/index.ts"].
| Var | Default | Meaning |
|---|---|---|
LLMSTXT_REGISTRY_PATH | ~/.config/llmstxt-doc-search/sources.json | Where sources are persisted. |
LLMSTXT_SNIPPET_HYDRATE_MAX | 5 | How many top hits to fetch for snippets. |
LLMSTXT_LOG_LEVEL | info | debug/info/warn/error (stderr only). |
This server fetches user-supplied URLs at runtime, so the SSRF surface is guarded in depth:
fetch_doc only fetches URLs under a registered source's origin + path prefix (matched on a path boundary, not a raw string prefix) - no arbitrary fetch.http(s) schemes are rejected.ipaddr.js), covering decimal/octal/hex IPv4, IPv4-mapped IPv6, loopback, link-local, unique-local, carrier-grade NAT, and other reserved ranges - not just a hostname regex.MIT
FAQs
BM25 search over llms.txt doc indexes (Strands, Kiro, AWS); sources addable at runtime.
The npm package @praveenc/llmstxt-doc-search receives a total of 11 weekly downloads. As such, @praveenc/llmstxt-doc-search popularity was classified as not popular.
We found that @praveenc/llmstxt-doc-search demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
It has been one year since Shai-Hulud made its first appearance on npm.

Research
/Security News
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.

Security News
GitHub Actions now supports cache-mode, a least-privilege control on the Actions cache aimed at the cache poisoning technique behind recent compromises.