
Thechrisgrey
com.thechrisgreyPublished by thechrisgrey.comOfficial publisherv1.0.0Updated Oct 24, 2026
Search Christian Perez's blog, read posts, and ask about his work, podcast, and writing.
Overview
Remote MCP endpoint for Christian Perez's personal site, letting an assistant search his blog and ask about his writing, podcast and work.
- What you can do
- Search and read blog posts from the site's CMS-backed blog
- Ask questions about the author's work, company, podcast and book
- Retrieve background on his biography and military career
- No tool list is published, so exact capabilities are inferred from the site description
- When to use it
- Useful when you want an assistant to look up or summarize content from thechrisgrey.com — blog posts, podcast episodes, the book, or background on Christian Perez — without browsing the site manually.
- Requirements
- A remote streamable HTTP endpoint at mcp.thechrisgrey.com; no packages, environment variables, headers or authentication are declared. The site's own chat backend is rate limited to 20 requests per hour per IP.
Installation
In SourceWeft
- Open Thechrisgrey in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Use with an agent
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/com.thechrisgrey%2Fmcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Other MCP clients
Add this to your client's mcpServers config.
{
"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"
Table of Contents
- Technology Stack
- Features
- Architecture
- AWS Infrastructure
- Getting Started
- Testing
- Environment Variables
- Deployment
- Project Structure
- Key Integrations
- Design System
- License
Technology Stack
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
AI Chat Request Flow
AWS Infrastructure
Getting Started
Prerequisites
- Node.js 20.x (see
.nvmrc) - npm
- AWS CLI (for deployment)
Installation
Development
Build Pipeline
The production build runs these steps in sequence:
Testing
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:
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:
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:
Manual Rebuild
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.
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
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.tswith Date revival
YouTube Data API (Podcast)
Episodes are fetched at build time from the @AltivumPress channel.
generate-podcast-episodes.jsruns during the build step- Fetches channel, uploads playlist, and video details
- Generates
src/data/generatedEpisodes.json - 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
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 effectwidget-open: Chat widget expansion (250ms)
License
Copyright 2026 Christian Perez. All rights reserved.
For inquiries, use the contact form or email via the website.
Source: README.md at commit 20fd493
Tools
0Version history
1- v1.0.0LatestSep 16, 2026
Score
40% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 daysRequired25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declaredRequired10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Declare a license in the repository or the registry entry.