github TypeScript re-analysis due

sandraschi/alexa-mcp

github

FastMCP 3.2 server for AI agents to issue verbal commands to Alexa devices

maintainer
sandraschi
licence
first seen
2026-06-07
last seen
2026-07-28
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 7 tools
transport counts 7 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • agentic_alexa_query
  • alexa_mcp_shutdown
  • docs_help
  • interact
  • listen_for_response
  • show_alexa_interaction_status_prefab_card
  • speak_command
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit f8a4904 · analyzer v33 · 1w ago

skills & prompt files 8

code evidence vHEAD · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 105

network 12

  • net sandraschi-alexa-mcp-f8a4904/web_sota/src/common/FleetCard.tsx :23 const resp = await fetch(`http://localhost:${member.port}/api/status`, { signal: controller.signal });
  • net sandraschi-alexa-mcp-f8a4904/web_sota/src/common/api.ts :99 const res = await fetch(`${api.logs}${qs ? `?${qs}` : ""}`);
  • net sandraschi-alexa-mcp-f8a4904/web_sota/src/common/bridge-run.ts :11 const res = await fetch(api.chatBridge, {
  • net sandraschi-alexa-mcp-f8a4904/web_sota/src/pages/audio.tsx :67 const res = await fetch(api.playback, {
  • net sandraschi-alexa-mcp-f8a4904/web_sota/src/pages/dashboard.tsx :8 const r = await fetch(`${API_BASE}/api/health`);
  • net sandraschi-alexa-mcp-f8a4904/web_sota/src/pages/help.tsx :19 fetch(api.status)
  • net sandraschi-alexa-mcp-f8a4904/web_sota/src/pages/presets.tsx :33 const r = await fetch(`${API_BASE}/api/presets`);
  • net sandraschi-alexa-mcp-f8a4904/web_sota/src/pages/schedule.tsx :28 const r = await fetch(`${API_BASE}/api/scheduler/commands`);
  • net sandraschi-alexa-mcp-f8a4904/web_sota/src/pages/settings.tsx :22 fetch(API_BASE + "/api/llm/providers").then(r => r.json()).then(d => {
  • net sandraschi-alexa-mcp-f8a4904/web_sota/src/pages/status.tsx :16 const res = await fetch(api.status);
  • net sandraschi-alexa-mcp-f8a4904/web_sota/src/pages/tools.tsx :38 const res = await fetch(api.tools);
  • net sandraschi-alexa-mcp-f8a4904/web_sota/src/store/llm.ts :33 const r = await fetch(`${API_BASE}/api/llm/discover`);

tool registrations 13

  • show_alexa_interaction_status_prefab_card sandraschi-alexa-mcp-f8a4904/mcpb/src/prefab_tools.py :16
  • docs_help sandraschi-alexa-mcp-f8a4904/mcpb/src/server.py :95
  • speak_command sandraschi-alexa-mcp-f8a4904/mcpb/src/server.py :142
  • listen_for_response sandraschi-alexa-mcp-f8a4904/mcpb/src/server.py :157
  • interact sandraschi-alexa-mcp-f8a4904/mcpb/src/server.py :174
  • agentic_alexa_query sandraschi-alexa-mcp-f8a4904/mcpb/src/server.py :206
  • show_alexa_interaction_status_prefab_card sandraschi-alexa-mcp-f8a4904/src/alexa_mcp/prefab_tools.py :16
  • docs_help sandraschi-alexa-mcp-f8a4904/src/alexa_mcp/server.py :124
  • speak_command sandraschi-alexa-mcp-f8a4904/src/alexa_mcp/server.py :171
  • listen_for_response sandraschi-alexa-mcp-f8a4904/src/alexa_mcp/server.py :193
  • interact sandraschi-alexa-mcp-f8a4904/src/alexa_mcp/server.py :218
  • agentic_alexa_query sandraschi-alexa-mcp-f8a4904/src/alexa_mcp/server.py :257
show 1 more
  • alexa_mcp_shutdown sandraschi-alexa-mcp-f8a4904/src/alexa_mcp/server.py :287

declared dependencies 46

  • @radix-ui/react-dialog@^1.1.15
  • @radix-ui/react-dropdown-menu@^2.1.16
  • @radix-ui/react-label@^2.1.8
  • @radix-ui/react-progress@^1.1.8
  • @radix-ui/react-scroll-area@^1.2.10
  • @radix-ui/react-select@^2.1.6
  • @radix-ui/react-slot@^1.2.4
  • @radix-ui/react-switch@^1.2.6
  • @radix-ui/react-tabs@^1.1.13
  • @radix-ui/react-tooltip@^1.2.8
  • @tanstack/react-query@^5.90.21
  • @tauri-apps/api@^2.2.0
show 28 more
  • class-variance-authority@^0.7.1
  • clsx@^2.1.1
  • framer-motion@^11.15.0
  • lucide-react@^0.563.0
  • react@^19.2.0
  • react-dom@^19.2.0
  • react-router-dom@^7.13.0
  • tailwind-merge@^3.4.0
  • tailwindcss-animate@^1.0.7
  • zustand@^5.0.14
  • @biomejs/biome@^2.4.12
  • @eslint/js@^9.39.1
  • @playwright/test@^1.62.0
  • @types/node@^24.10.1
  • @types/react@^19.2.7
  • @types/react-dom@^19.2.3
  • @vitejs/plugin-react@^5.1.1
  • autoprefixer@^10.4.24
  • eslint@^9.39.1
  • eslint-plugin-react-hooks@^7.0.1
  • eslint-plugin-react-refresh@^0.4.24
  • globals@^16.5.0
  • postcss@^8.5.6
  • tailwindcss@^3.4.17
  • typescript@~5.9.3
  • typescript-eslint@^8.48.0
  • vite@^7.3.1
  • tauri-build@2

6 more not shown — this panel samples each group; the count above is the real total.

perm:untrusted 2

  • untrusted sandraschi-alexa-mcp-f8a4904/web_sota/src/pages/dashboard.tsx :42 fetch(`${API_BASE}/api/logs/stats`).then(r => r.json()).then(d => { if (!cancelled) setLogCount(d.total || 0); }).catch(() => {});
  • untrusted sandraschi-alexa-mcp-f8a4904/web_sota/src/pages/settings.tsx :22 fetch(API_BASE + "/api/llm/providers").then(r => r.json()).then(d => {