Thechrisgrey

com.thechrisgrey由 thechrisgrey.com 發布官方發布者v1.0.0更新於 Oct 24, 2026

Search Christian Perez's blog, read posts, and ask about his work, podcast, and writing.

已驗證Streamable HTTP可網頁執行網頁搜尋與抓取知識與記憶

概覽

AI 產生的概覽

Christian Perez 個人網站的遠端 MCP 端點,讓助理搜尋他的部落格並了解其寫作、播客與工作。

可以做什麼
  • 搜尋並閱讀網站 CMS 部落格中的文章
  • 詢問作者的工作、公司、播客與著作相關資訊
  • 取得其個人簡介與軍旅背景資料
  • 未公布工具清單,實際能力依網站描述推斷
適用情境
當需要讓助理查閱或摘要 thechrisgrey.com 上的內容——部落格文章、播客節目、書籍或 Christian Perez 的背景——而不想手動瀏覽網站時適用。
執行需求
需要連線至 mcp.thechrisgrey.com 的遠端 streamable HTTP 端點;未宣告任何套件、環境變數、標頭或身分驗證。網站本身的聊天後端依 IP 限制為每小時 20 次請求。
安裝前請注意
此伺服器由第三方託管,查詢會傳送到該網站的後端;未宣告身分驗證或憑證處理,應視為唯讀的公開內容。README 另記錄了與連線無關的網站部署密鑰與 AWS 憑證,連線時並不需要。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Thechrisgrey,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/com.thechrisgrey%2Fmcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "thechrisgrey": {
      "type": "http",
      "url": "https://mcp.thechrisgrey.com/"
    }
  }
}

README

thechrisgrey.com

[TypeScript] [React] [Vite] [Tailwind CSS] [AWS Amplify] [Amazon Bedrock] [CI] [License]

Personal website for Christian Perez (@thechrisgrey) | Founder & CEO of Altivum Inc. | Former Green Beret (18D Special Forces Medical Sergeant) | Bronze Star Recipient | Host of The Vector Podcast | Author of "Beyond the Assessment"

https://thechrisgrey.com


Table of Contents


Technology Stack

LayerTechnology
FrontendReact 19, TypeScript 5, Vite 5 (Vitest 4, ESLint 10 flat config)
StylingTailwind CSS 4 (CSS-first @theme config, Oxide engine)
RoutingReact Router 7
CMSSanity.io (blog content)
AI ChatAmazon Bedrock (Claude Haiku 4.5) + RAG
AuthAmazon Cognito (admin panel)
HostingAWS Amplify
CDN/AnalyticsCloudflare Web Analytics
TestingVitest + React Testing Library + Cypress
Code QualityESLint, strict TypeScript

Features

Pages

  • Home : Scroll-based animations with sticky profile sections
  • About : Personal biography and military background
  • Altivum Inc : Company showcase and services
  • The Vector Podcast : YouTube embeds, Spotify player, collapsible episode list
  • Beyond the Assessment : Book information and purchase links
  • Blog : Sanity CMS-powered with categories, tags, series, and reading progress
  • AI Chat : Full-viewport conversational AI with RAG-enhanced responses
  • Claude : AWS certifications and Claude expertise showcase
  • AWS : AWS partnership and community builder profile
  • Admin : Cognito-authenticated KB management and site health dashboard
  • Links : Linktree-style quick links
  • Contact : Contact form, speaking topics, downloadable press kit

Technical Highlights

  • SEO : JSON-LD structured data, Open Graph, dynamic sitemap, RSS feed
  • AI Chat with RAG : Bedrock Knowledge Base retrieval with streaming responses
  • Podcast Auto-Sync : YouTube Data API fetches episodes at build time
  • Chat Widget : Floating chat widget available across all pages
  • Metrics Dashboard : CloudWatch and DynamoDB-backed operational metrics
  • Error Boundaries : Page-level error handling with custom fallback UIs
  • Accessibility : Focus trapping, keyboard navigation, ARIA labels, skip links
  • Performance : Image optimization (Sharp/SVGO), lazy loading, code splitting, manual chunking

Architecture

┌─────────────────────────────────────────────────────────────────┐│                        FRONTEND (React)                         ││  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐           ││  │   Home   │ │  Podcast │ │   Blog   │ │   Chat   │   ...     ││  └──────────┘ └──────────┘ └──────────┘ └──────────┘           │└─────────────────────────────────────────────────────────────────┘        │               │              │              │        ▼               ▼              ▼              ▼┌───────────┐   ┌───────────┐   ┌───────────┐   ┌───────────────┐│  Amplify  │   │  YouTube  │   │  Sanity   │   │    Bedrock    ││  Hosting  │   │  Data API │   │    CMS    │   │  + RAG (KB)   │└───────────┘   └───────────┘   └───────────┘   └───────────────┘                (build-time)     (runtime)       (Lambda stream)

AI Chat Request Flow

User Message    │    ▼Lambda Function URL (streaming)    │    ├──> Bedrock Knowledge Base (retrieve context)    │         │    │         ▼    │    S3 Vectors (autobiography chunks)    │    ├──> Bedrock Guardrails (content filtering)    │    └──> Bedrock ConverseStream API (Claude Haiku 4.5)              │              ▼         Streaming Response -> Client

AWS Infrastructure

ServiceResourceRegionPurpose
Amplifyd3du8eg39a9peous-east-2Hosting, CI/CD
Lambdathechrisgrey-chat-streamus-east-1AI chat streaming
Lambdathechrisgrey-contact-emailus-east-2Contact form
Lambdathechrisgrey-newsletter-subscriptionus-east-2Newsletter
Lambdathechrisgrey-kb-syncus-east-1KB auto-sync on S3 changes
Lambdathechrisgrey-kb-builderus-east-1KB admin CRUD operations
Lambdathechrisgrey-metricsus-east-1Metrics collection and reporting
Bedrock KBARFYABW8HPus-east-1RAG knowledge base
CognitoUser Poolus-east-1Admin authentication
S3thechrisgrey-kb-sourceus-east-1KB source documents
S3thechrisgrey-vectorsus-east-1Vector embeddings
DynamoDBthechrisgrey-chat-ratelimitus-east-1Rate limiting (20 req/hr/IP)
Secrets Managerthechrisgrey/youtube-api-keyus-east-1YouTube API key
CloudWatchtcg-AI-chatus-east-1Bedrock invocation logs

Getting Started

Prerequisites

  • Node.js 20.x (see .nvmrc)
  • npm
  • AWS CLI (for deployment)

Installation

bash
git clone https://github.com/thechrisgrey/thechrisgrey.gitcd thechrisgreynpm install

Development

bash
npm run dev             # Start dev server at http://localhost:5173npm run build           # Full production buildnpm run preview         # Preview production buildnpm run lint            # Run ESLint

Build Pipeline

The production build runs these steps in sequence:

validate-env -> podcast-episodes -> lint -> tsc -> vite build -> sitemap -> rss

Testing

FrameworkScopeCommand
VitestUnit + Integrationnpm test
VitestWatch modenpm run test:watch
VitestCoverage reportnpm run test:coverage
CypressE2E (headless)npm run cy:run
CypressE2E (interactive)npm run cy:open
node:testLambda unit + contractnpm run test:lambda

The test suite includes unit tests for components, hooks, and utilities; integration tests for page-level behavior; and end-to-end tests covering navigation, chat, blog, and contact flows.

Live-API contract tests (opt-in)

Critical external boundaries — Cognito admin auth, the live Sanity client, Bedrock KB retrieval, and the Bedrock guardrail — are also covered by opt-in contract tests that exercise the real services (green mocks alone can drift from reality). They skip cleanly during npm run test:lambda and CI, and only run when their flag + AWS/Sanity credentials are present:

bash
COGNITO_CONTRACT_TESTS=1 COGNITO_CLIENT_ID=… COGNITO_TEST_EMAIL=… COGNITO_TEST_PASSWORD=… \  node --test lambda/shared/__tests__/cognito-contract.test.mjsSANITY_CONTRACT_TESTS=1      node --test lambda/chat-stream/__tests__/sanity-contract.test.mjsKB_RETRIEVE_CONTRACT_TESTS=1 node --test lambda/chat-stream/__tests__/kb-retrieve-contract.test.mjsBEDROCK_CONTRACT_TESTS=1     node --test lambda/blueprint/__tests__/guardrail-contract.test.mjs

See .env.example for the full list of flags and required permissions. Run these before a release (or on a scheduled job) to catch response-shape/schema drift that unit mocks can't.


Environment Variables

Set in AWS Amplify console or in a local .env file:

VariableDescriptionRequired
VITE_CHAT_ENDPOINTLambda Function URL for AI chatYes
VITE_CONTACT_ENDPOINTLambda Function URL for contact formYes
VITE_NEWSLETTER_ENDPOINTLambda Function URL for newsletterYes
VITE_COGNITO_USER_POOL_IDCognito User Pool ID (admin auth)Yes
VITE_COGNITO_CLIENT_IDCognito App Client IDYes
VITE_KB_BUILDER_ENDPOINTLambda Function URL for KB adminYes
VITE_CHAT_SIGNING_KEYHMAC signing key for chat requestsYes
VITE_METRICS_ENDPOINTLambda Function URL for metricsYes
YOUTUBE_API_KEYYouTube Data API v3 key (build-time only)Yes

VITE_ prefixed variables are bundled into the frontend. YOUTUBE_API_KEY is only used during the build step.


Deployment

Automatic (Recommended)

Push to main triggers automatic Amplify deployment:

bash
git push origin main

Manual Rebuild

bash
aws amplify start-job \  --app-id d3btl94rm91y13 \  --branch-name main \  --job-type RELEASE \  --region us-east-2 \  --profile personal-dev   # Delta Centric 512880383078, the site's home

Lambda Deployment

Each Lambda function is deployed independently via a single verified script. The script installs from the lockfile, dereferences the lambda-shared symlink into the bundle, and verifies the entire module graph resolves before upload — so a deploy can no longer ship a Lambda that crashes on cold start.

bash
# Verify the bundle builds and resolves, without uploading:npm run deploy:lambda -- chat-stream --dry-run
# Deploy for real (runs as profile personal-dev and refuses unless the caller# account is Delta Centric 512880383078):npm run deploy:lambda -- chat-stream

Works for any Lambda under lambda/ (e.g. chat-stream, blueprint, kb-builder, metrics, kb-sync, mcp-server). Pass --region <r> to override the default (us-east-1). Do not hand-build function.zip — the manual zip glob omits the sibling modules each handler imports and produces a broken artifact.


Project Structure

thechrisgrey/├── public/                          # Static assets (served as-is)│   ├── assets/documents/            # Downloadable PDFs│   ├── press-kit/                   # Press materials + archive│   ├── .well-known/security.txt│   ├── robots.txt│   ├── og.png                       # Open Graph image│   └── favicon.png│├── src/│   ├── components/│   │   ├── admin/                   # Admin panel (login, KB entries, site health)│   │   ├── chat/                    # AI chat (message, input, suggestions, widget)│   │   ├── ui/                      # Base UI (Button, FormInput, IconButton)│   │   ├── Navigation.tsx│   │   ├── Footer.tsx│   │   ├── SEO.tsx                  # Meta tags + JSON-LD│   │   ├── ErrorBoundary.tsx│   │   ├── ErrorFallbacks.tsx│   │   ├── EpisodeCard.tsx│   │   ├── NewsletterForm.tsx│   │   ├── ReadingProgressBar.tsx│   │   └── ...│   ││   ├── pages/                       # Route-level page components│   │   ├── Home.tsx, About.tsx, Altivum.tsx, Podcast.tsx│   │   ├── BeyondTheAssessment.tsx, Blog.tsx, BlogPost.tsx│   │   ├── Chat.tsx, Claude.tsx, AWS.tsx, Admin.tsx│   │   ├── Contact.tsx, Links.tsx, Privacy.tsx│   │   └── NotFound.tsx│   ││   ├── hooks/                       # Custom React hooks│   │   ├── useAuth.ts               # Cognito authentication│   │   ├── useChatEngine.ts         # Chat state and streaming│   │   ├── useFocusTrap.ts          # Modal focus management│   │   ├── useKbAdmin.ts            # KB admin operations│   │   ├── usePageContext.ts        # Page-level context for chat│   │   ├── useSessionStorage.ts     # Typed sessionStorage with Date revival│   │   └── useSiteHealth.ts         # Site health monitoring│   ││   ├── sanity/                      # Sanity CMS client, queries, types, cache│   ├── utils/                       # Typography, schemas, validators, web vitals│   ├── constants/                   # Social links│   ├── types/                       # TypeScript interfaces│   ├── data/                        # Podcast episode data (generated + fallback)│   ├── assets/                      # Optimized images (Vite processed)│   ││   ├── __tests__/│   │   ├── integration/             # Page-level integration tests│   │   └── setup.ts│   ││   ├── App.tsx                      # Routes, layout, error boundaries│   ├── main.tsx                     # Entry point│   └── index.css                    # Tailwind directives│├── lambda/│   ├── shared/                      # Shared utilities (auth, rate limiting, response)│   ├── chat-stream/                 # Bedrock streaming Lambda│   ├── kb-sync/                     # Knowledge Base auto-sync│   ├── kb-builder/                  # KB admin CRUD│   └── metrics/                     # Metrics collection│├── scripts/│   ├── validate-env.js              # Build-time env validation│   ├── generate-podcast-episodes.js # YouTube API fetch│   ├── generate-sitemap.js          # Sitemap from Sanity│   └── generate-rss.js             # RSS feed from Sanity│├── cypress/                         # E2E tests│   ├── e2e/                         # Test specs│   ├── fixtures/                    # Test data│   └── support/                     # Custom commands│├── docs/                            # Internal documentation and plans├── .github/workflows/ci.yml        # GitHub Actions CI├── amplify.yml                      # Amplify build config├── tailwind.config.js├── vite.config.ts├── vitest.config.ts├── cypress.config.ts└── tsconfig.json

Key Integrations

Sanity CMS (Blog)

  • Project ID: k5950b3w | Dataset: production
  • Content includes blog posts with categories, tags, series, and Portable Text rich content
  • Client-side caching via postCache.ts with Date revival

YouTube Data API (Podcast)

Episodes are fetched at build time from the @AltivumPress channel.

  1. generate-podcast-episodes.js runs during the build step
  2. Fetches channel, uploads playlist, and video details
  3. Generates src/data/generatedEpisodes.json
  4. Falls back to static data if the API is unavailable

Amazon Bedrock (AI Chat)

  • Model: Claude Haiku 4.5 (us.anthropic.claude-haiku-4-5-20251001-v1:0)
  • Knowledge Base: ARFYABW8HP (autobiography chunks)
  • Guardrail: 5kofhp46ssob (content filtering)
  • Rate Limit: 20 requests/hour per IP (DynamoDB-backed)
  • Streaming responses via Lambda Function URL with RAG retrieval (5 chunks per query)

Cloudflare Web Analytics

Privacy-friendly, cookie-free analytics with no personal data collection.


Design System

Color Palette

NameHexUsage
altivum-dark#0A0F1CBackgrounds
altivum-navy#1A2332Cards, nav
altivum-blue#2E4A6BAccents
altivum-slate#4A5A73Borders, muted
altivum-silver#9BA6B8Body text
altivum-gold#C5A572Highlights, CTAs

Typography

SF Pro Display with system font fallbacks. Ultra-light weight (200) throughout. Defined in src/utils/typography.ts.

Animations

  • animate-fade-in : Hero entrance (1.2s)
  • animate-nav-fade-in : Nav delayed entrance (0.8s, 2s delay)
  • shimmer : Background shimmer effect
  • widget-open : Chat widget expansion (250ms)

License

Copyright 2026 Christian Perez. All rights reserved.

For inquiries, use the contact form or email via the website.

來源:README.md,提交 20fd493

工具

0
SourceWeft 尚未讀取此伺服器的工具。

版本歷史

1
  1. v1.0.0最新Sep 16, 2026

評分

已滿足適用檢查項的 40%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式必需10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。