Migrate MCP server from ECS/Docker to Vercel serverless#836
Merged
gsharp-aai merged 9 commits intomainfrom Mar 27, 2026
Merged
Conversation
Contributor
- Replace Express server with Vercel mcp-handler serverless function - Bundle doc data as JSON imports instead of filesystem reads - Extract log utility to standalone module - Delete Dockerfile, .dockerignore, Express entry point - Update CI/CD from ECS deploy to Vercel deploy - Modernize tsconfig (ES2024, NodeNext, strict checks) - Update README for Vercel deployment
- Switch to app/api/[transport]/route.ts (dynamic transport segment) - Add Next.js framework deps (next, react, react-dom) - Set tsconfig to bundler module resolution (webpack compat) - Remove .js extensions from local imports (webpack convention) - Keep .js on @modelcontextprotocol/sdk imports (actual .js in node_modules) - Set vercel.json framework to nextjs with next build command - Add next.config.js, next-env.d.ts, .next/ to gitignore
- Add security section to README documenting public/read-only posture - Generate version.json during ingest (git SHA, timestamp, content counts) - Expose version metadata as assemblyai://server/version MCP resource
dlange-aai
approved these changes
Mar 27, 2026
a2911ee to
50120a3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
Migrates the docs MCP server from an ECS/Docker deployment to a Vercel serverless function using the
mcp-handlerpackage. This eliminates the need for Docker, ECR, ECS, Terraform, and IAM/OIDC configuration.Per team discussion, Vercel is the preferred hosting for this type of simple stateless service.
What changed
Added:
app/api/mcp/route.ts— Vercel serverless entry point usingmcp-handlervercel.json— Vercel deployment configsrc/log.ts— standalone logging utilityRemoved:
Dockerfile— no longer needed.dockerignore— no longer neededsrc/index.ts— Express server, session management, rate limiting (all handled by Vercel/mcp-handler)Modified:
src/server.ts— data loaded via JSON imports (bundled at deploy time) instead of filesystem readssrc/tools/*.ts— log import path updatedpackage.json—expressreplaced withmcp-handlertsconfig.json— modernized (ES2024, NodeNext, stricter checks)publish-docs.yml— ECS deploy replaced withvercel deploy --prodREADME.md— updated for VercelNet: 291 lines added, 509 deleted.
How it works
The doc content (~150KB of JSON) is bundled directly into the serverless function at deploy time. No filesystem, no Docker image, no container registry. Same tool logic, same search index — just a simpler delivery mechanism.
CI/CD
On push to main:
npm run build:content→npm run build→vercel deploy --prodRequires 3 GitHub secrets:
VERCEL_TOKEN,VERCEL_ORG_ID,VERCEL_PROJECT_IDTesting
npm test— 8/8 smoke tests pass (search, list sections, get pages, API reference)Next steps