Atlas / MCP servers / hatmanstack / RAGStack

RAGStackBLOCK

mcp/hatmanstack/ragstack

Search, chat, upload, and scrape a serverless RAGStack knowledge base on AWS.

Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
15 11r · 4w · 0d
Transport
stdio
License
Apache-2.0
Stars
25
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

Serverless document and media processing with AI chat. Scale-to-zero architecture — no vector database fees, no idle costs. Upload documents, images, video, and audio — extract text with OCR or transcription — query using Amazon Bedrock or your AI assistant via MCP.

QUESTIONS?

Features

  • ☁️ Fully serverless architecture (Lambda, Step Functions, S3, DynamoDB)
  • 🧠 NEW Amazon Nova multimodal embeddings for text and image vectorization
  • 📄 Document processing & vectorization (PDF, images, Office docs, HTML, CSV, JSON, XML, EML, EPUB
Read from source at commit e4662e8b8b27OBSERVED · 2026-10-09
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code (pypi)
claude mcp add ragstack-mcp -- uvx ragstack-mcp==0.1.8
03

Exposed tools (15)

11 read · 4 write · 0 destructive.

ToolRiskDescription
analyze_metadataread
chat_with_knowledge_baseread
check_key_similarityread
generate_image_captionread
get_configurationread
get_filter_examplesread
get_key_libraryread
get_metadata_statsread
get_scrape_job_statusread
list_scrape_jobsread
search_knowledge_baseread
start_scrape_jobwrite
submit_imagewrite
upload_document_urlwrite
upload_image_urlwrite
04

Trust audit

BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (6 observation(s))
Network
declared (11 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
found

Findings (24)

HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
src/ui/src/components/Settings/index.tsx:625
Amazon Q: ~/.aws/amazonq/mcp.json • Cursor: Settings → MCP Servers
Why it matters. touches a credential store
HIGHNetwork egress · net.metadata_ip · CWE-200, CWE-319
src/lambda/scrape_start/index.py:54
"169.254.169.254",
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
HIGHNetwork egress · net.metadata_ip · CWE-200, CWE-319
src/lambda/scrape_start/index.py:55
"metadata.google.internal",
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
HIGHNetwork egress · net.metadata_ip · CWE-200, CWE-319
src/lambda/scrape_start/index.py:84
if "169.254.169.254" in url:
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
src/ui/src/components/Settings/index.test.tsx:61
apiKey: 'da2-test-api-key-12345',
LOWInventory / provenance · inv.hidden_file · CWE-1104
.pre-commit-config.yaml
.pre-commit-config.yaml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
docs/.drift-report.md
.drift-report.md
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
src/ragstack-chat/.eslintrc.js
.eslintrc.js
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
src/ui/.env.template
.env.template
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
scripts/build_layer.sh:14
cp -r ../../../lib/ragstack_common python/
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/ragstack-chat/scripts/inject-amplify-config.js:24
const REPO_ROOT_THEME_PATH = path.join(__dirname, '../../../theme_config.json');
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/ragstack-chat/src/components/__tests__/ChatInterface.test.tsx:10
import { mockScrollIntoView, mockSessionStorage, cleanupTestUtils } from '../../test-utils';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/ragstack-chat/src/components/__tests__/ChatInterface.test.tsx:19
vi.mock('../../utils/fetchCDNConfig', () => ({
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/ragstack-chat/src/components/__tests__/ChatInterface.test.tsx:30
import { iamFetch } from '../../utils/iamAuth';
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
lib/requirements.txt
boto3, PyMuPDF, Pillow, httpx, beautifulsoup4, markdownify, lxml, PyYAML
Why it matters. 11 requirement(s) not pinned with ==
Fix. pin exact versions
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@playwright/test, @vitest/ui, happy-dom, typescript, vitest
Why it matters. 5 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
requirements.txt
boto3, Pillow, PyMuPDF, httpx, beautifulsoup4, markdownify, lxml, pytest
Why it matters. 19 requirement(s) not pinned with ==
Fix. pin exact versions
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
src/lambda/configuration_resolver/requirements.txt
boto3
Why it matters. 1 requirement(s) not pinned with ==
Fix. pin exact versions
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
src/lambda/kb_custom_resource/requirements.txt
boto3
Why it matters. 1 requirement(s) not pinned with ==
Fix. pin exact versions
INFOInventory / provenance · inv.oversize · CWE-1104
ragstack_banner_resized.png
ragstack_banner_resized.png
Why it matters. 1666364 bytes not read
INFOPrompt injection · prompt.authority_framing · CWE-94, CWE-1427
.claude/skills/pipeline/final_reviewer.md:3
You are a principal architect conducting a final, holistic review of a complete feature implementation.
INFOPrompt injection · prompt.authority_framing · CWE-94, CWE-1427
.claude/skills/pipeline/reviewer.md:3
You are a senior code reviewer evaluating a phase implementation.
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
docs/plans/2026-03-12-codebase-remediation/Phase-1.md:145
- Read the handler to understand what environment variables it needs (likely `CONFIGURATION_TABLE_NAME` or similar).
Why it matters. asks the agent to read credentials
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
docs/plans/2026-03-12-codebase-remediation/Phase-1.md:310
- Read the handler to identify environment variables and boto3 clients used.
Why it matters. asks the agent to read credentials

Gates applied: no_behavioural_pass.

Audited 2026-10-09 · audit v0.4.1 · source sha e4662e8b8b27full audit observations/trust-audit/mcp-server/hatmanstack__ragstack.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-09e4662e8b8b27BLOCKD69first audit
06

Questions

What is the RAGStack MCP server?

Search, chat, upload, and scrape a serverless RAGStack knowledge base on AWS.

What tools does RAGStack expose?

15 in total: 11 read-only, 4 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is RAGStack safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (69/100) and found 4 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does RAGStack need?

It reads ADMIN_PASSWORD, METADATA_KEY_LIBRARY_TABLE, RAGSTACK_API_KEY and SAM_GRAPHQL_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does RAGStack run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as ragstack-ui at 1.0.0.

How current is this page?

The grade is for one exact copy of the source (e4662e8b8b27), read on 2026-10-09. The repository is watched and re-audited when it changes.

Advertisement