mcp-astgl-knowledge
npm
v1.3.1
Published by jmeg8r — no publish provenance, so origin is unverified, but the source is public: the repository link below is self-declared yet readable, so you can inspect the code before adopting it.
MCP server with 7 tools for searching, citing, and exploring ASTGL content about MCP servers, local AI, and AI automation — includes tutorials, comparisons, freshness tracking, and rate-limited API access
The grade answers one question — how safe is this server for you to adopt — so it is computed in two auditable stages. Nothing below is an opinion or an LLM's guess; every line is a real term the deterministic engine applied, and the same input always yields the same number.
1. Threat score — 100 − 6.3 = 94. What the published surface and source actually contain:
| Points | What was found | Category |
|---|---|---|
| −6.3 | Untrusted input concatenated into a command sink MTC-SRC-009 | injection |
2. Client adoption risk — 94 − 11 = 83. Three small, subtract-only factors that reflect your risk in adopting it — a clean scan proves less on a powerful, unverified or barely-inspectable package, so the grade says so plainly:
| Points | Adoption-risk factor |
|---|---|
| −10 | capability blast radius (critical) — client exposure if the model is manipulated |
| −1 | publisher verification (public source) — no provenance, but the source is public and inspectable |
Capability observations and info notes are shown under Findings but never scored.
Open any row's finding below for the file, line and evidence behind a deduction.
In the server's implementation (`dist/build-mcpb.js:24`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: port { execFile } from "child_process"; import { promisify } from "util"; import { existsSync, mkdirSync, rmSync, cpSync
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server dist/build-mcpb.js
In the server's implementation (`dist/pipeline.js:12`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: port { execSync } from "child_process"; import { join } from "path"; const PROJECT_DIR = join(import.meta.dirname, "..")
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server dist/pipeline.js
In the server's implementation (`dist/publish-rewrite.js:21`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: import { spawn } from "child_process"; import { existsSync, readFileSync } from "fs"; import { join } from "path"; impo
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server dist/publish-rewrite.js
Untrusted-input tools ([list_ideas]) co-exist with external-action tools ([export_topic_roundup]). A prompt injection could cause unwanted external actions, though no direct sensitive-data leak path was found.
Evidence: untrusted [list_ideas] → sinks [export_topic_roundup]
Fix: Require confirmation for state-changing/egress actions triggered after processing untrusted content.
Location: flow list_ideas → export_topic_roundup
In the server's implementation (`dist/alerts.js:273`): A hardcoded outbound call to a fixed external host inside server code is a classic exfiltration/telemetry channel — especially paired with reads of local data. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: const resp = await fetch(`https://registry.smithery.ai/servers?q=${encodeURIComponent(term)}&pageSize=10`, {
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server dist/alerts.js
In the server's implementation (`dist/citation-test-auto.js:85`): A hardcoded outbound call to a fixed external host inside server code is a classic exfiltration/telemetry channel — especially paired with reads of local data. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: ; const res = await fetch("https://api.perplexity.ai/chat/completions", { method: "POST", headers: {
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server dist/citation-test-auto.js
In the server's implementation (`dist/freshness.js:200`): A hardcoded outbound call to a fixed external host inside server code is a classic exfiltration/telemetry channel — especially paired with reads of local data. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: const resp = await fetch(`https://registry.npmjs.org/-/package/${encodedPkg}/dist-tags`, { signal: AbortSignal.time
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server dist/freshness.js
In the server's implementation (`dist/publish-drift.js:172`): A hardcoded outbound call to a fixed external host inside server code is a classic exfiltration/telemetry channel — especially paired with reads of local data. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: const resp = await fetch(`https://registry.npmjs.org/${encoded}`, { headers: { Accept: "application/json" }
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server dist/publish-drift.js
In the server's implementation (`dist/rewrite-queue.js:133`): A hardcoded outbound call to a fixed external host inside server code is a classic exfiltration/telemetry channel — especially paired with reads of local data. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: const resp = await fetch(`https://api.telegram.org/bot${token}/sendMessage`, { method: "POST", head
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server dist/rewrite-queue.js
In the server's implementation (`dist/rewriter.js:148`): A hardcoded outbound call to a fixed external host inside server code is a classic exfiltration/telemetry channel — especially paired with reads of local data. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: const resp = await fetch("https://api.anthropic.com/v1/messages", { method: "POST", headers: {
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server dist/rewriter.js
In the server's implementation (`dist/pipeline.js:20`): A shell/process command assembled from concatenated or interpolated values is command injection when any part is attacker-influenced — the OWASP canonical RCE flow. Verify what reaches the interpolated value. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: ep(script) { return execSync(`"${TSX_BIN}" ${script}`, { cwd: PROJECT_DIR, encoding: "utf-8",
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server dist/pipeline.js
Each tool and what it can reach — statically extracted from the published source.
export_topic_roundupnetwork egresslist_ideasingests untrusted inputadd_ideano sensitive capabilitycompare_topicsno sensitive capabilityexport_articleno sensitive capabilityexport_ideasno sensitive capabilityexport_qa_compilationno sensitive capabilityfind_articlesno sensitive capabilitygenerate_dashboard_datano sensitive capabilityget_answerno sensitive capabilityget_latestno sensitive capabilityget_tutorialno sensitive capabilitylist_tagsno sensitive capabilitylist_topicsno sensitive capabilityregisterno sensitive capabilitysearch_articlesno sensitive capabilitysuggest_ideasno sensitive capabilityCross-tool combinations that form a data-exfiltration primitive (untrusted input → sensitive source → external sink).
Scan history per published version. The engine is deterministic — the same version always yields the same score, so a changed score means the package itself changed.
| Version | Score | Findings | Engine | Scanned |
|---|---|---|---|---|
v1.3.1 latest |
B 83/100 | 11 | 1.13.0 | 2026-09-07 |
v1.3.0 |
B 83/100 | 9 | 1.12.1 | 2026-08-01 |
v1.1.0 |
B 87/100 | 4 | 1.12.1 | 2026-07-29 |
Show this server's live Trust Score in your README, docs or website. The badge is served straight from the registry and updates automatically after every rescan — no API key needed. It links back to this page, so anyone who sees the grade can also read the findings behind it instead of taking a number on faith.
The score above is reproducible: the same package version always yields the same result. Run it locally or over the free API — no account, no LLM, fully deterministic.
npx mcptrustchecker scan mcp-astgl-knowledge --online
Agent IP: MCP server with patents search tools
MCP server for searching the Agent Almanac — the public catalog of 9,000+ Model Context Protocol servers. Find, install, and discover MCP servers from inside Claude Desktop, Cursor, Continue, Zed, or any MCP-aware agent.
Search agents & MCP servers by capability, with daily-observed pricing, liveness and market data.
Verified merchants accepting agentic payments on Lightning/L402/BOLT12/USDT — search, verify, pay.
Airframe MCP Client - Connect agents to Airframe's product intelligence
Amazon product search demand over time, with growth for any keyword. Free key at trendsmcp.ai