Vercel MCP Memory

Vercel MCP Memory

Enables semantic memory storage and retrieval with natural language queries, deployed on Vercel with PostgreSQL pgvector and OpenAI embeddings.

Category
Visit Server

README

Vercel MCP Memory

CI CodeQL Claude Code License: MIT GitHub issues GitHub stars

Custom Model Context Protocol (MCP) memory server deployed on Vercel with semantic search powered by OpenAI embeddings and PostgreSQL pgvector.

โœจ Features

  • ๐Ÿง  Semantic Search - Find memories by meaning, not just keywords
  • ๐Ÿ” Secure API - Optional API key authentication for production
  • โ˜๏ธ Cloud-Hosted - Deployed on Vercel Edge Functions (zero-infrastructure)
  • ๐Ÿ”„ Cross-Device Sync - Access your memory from any device with Claude
  • ๐Ÿš€ OpenAI Embeddings - Using text-embedding-3-small model
  • ๐Ÿ—„๏ธ PostgreSQL + pgvector - Efficient vector similarity search
  • โœ… Input Validation - Zod schemas for robust data validation
  • ๐Ÿ“ Structured Logging - Production-ready error tracking
  • ๐ŸŒ Multi-language - Supports Russian, English and more
  • ๐Ÿค– Claude Code Integration - Automated PR reviews and AI assistant via GitHub Actions

๐Ÿ—๏ธ Architecture

Claude Desktop โ†’ HTTPS/JSON-RPC โ†’ Vercel Edge Function โ†’ Postgres (pgvector)
                                         โ†“
                                   OpenAI Embeddings API

๐Ÿ“‹ Prerequisites

  • Node.js 20.x
  • Vercel account (free tier works)
  • OpenAI API key (for embeddings, ~$0.10/1M tokens)
  • PostgreSQL database with pgvector extension (Vercel Postgres or Neon)

๐Ÿš€ Quick Start

1. Install Dependencies

cd vercel-mcp-memory
npm install

2. Set Up Vercel Postgres

# Install Vercel CLI
npm i -g vercel

# Login to Vercel
vercel login

# Link project
vercel link

# Create Postgres database (via Vercel Dashboard)
# 1. Go to https://vercel.com/dashboard
# 2. Navigate to Storage โ†’ Create Database โ†’ Postgres
# 3. Name: mcp-memory-db
# 4. Region: Select closest to you

3. Configure Environment Variables

Create .env.local file:

# Required: OpenAI API key for embeddings
OPENAI_API_KEY=sk-...

# Required: PostgreSQL connection (auto-configured by Vercel)
POSTGRES_URL=postgresql://...

# Optional: API keys for authentication (comma-separated)
# Leave empty for development without auth
MCP_API_KEYS=your-secret-key-1,your-secret-key-2

Generate secure API keys:

# Generate a secure API key
openssl rand -base64 32

4. Run Database Migration

Apply the SQL schema with pgvector extension:

# Option 1: Via Vercel Dashboard
# 1. Go to Storage โ†’ mcp-memory-db โ†’ SQL Editor
# 2. Copy contents of migrations/001_init.sql
# 3. Execute

# Option 2: Via psql (if you have local connection)
psql $POSTGRES_URL < migrations/001_init.sql

5. Deploy to Vercel

vercel --prod

Your MCP server will be available at: https://your-project.vercel.app

6. Configure Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or ~/.config/claude-desktop/claude_desktop_config.json (Linux):

With authentication (recommended for production):

{
  "mcpServers": {
    "vercel-memory": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://your-project.vercel.app/api/mcp/sse"
      ],
      "env": {
        "MCP_API_KEY": "your-secret-key-here"
      }
    }
  }
}

Without authentication (development only):

{
  "mcpServers": {
    "vercel-memory": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://your-project.vercel.app/api/mcp/sse"
      ]
    }
  }
}

Restart Claude Desktop.

๐Ÿงช Testing

Health Check

curl https://your-project.vercel.app/api/health

Should return:

{
  "status": "healthy",
  "service": "vercel-mcp-memory",
  "database": {
    "connected": true
  }
}

Test MCP Endpoint with Authentication

curl -X POST https://your-project.vercel.app/api/mcp/sse \
  -H "Content-Type: application/json" \
  -H "X-API-Key: your-secret-key" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/list",
    "id": 1
  }'

Test in Claude

User: Remember: I prefer Python for backend development
Claude: [Uses add_memory tool]

User: What programming languages do I prefer?
Claude: [Uses search_memory tool and finds "Python"]

๐Ÿ“Š MCP Tools

add_memory

Store new memory with semantic embeddings.

{
  content: string,      // Required (1-10000 chars)
  category?: string,    // Optional (max 100 chars)
  metadata?: object     // Optional custom key-value pairs
}

search_memory

Semantic search across memories.

{
  query: string,        // Required: natural language query (1-1000 chars)
  category?: string,    // Filter by category
  limit?: number,       // Max results (default: 10, max: 50)
  threshold?: number    // Min similarity 0-1 (default: 0.5)
}

list_memories

List all memories chronologically.

{
  category?: string,    // Filter by category
  limit?: number,       // Max results (default: 50, max: 100)
  offset?: number       // Pagination offset (default: 0)
}

delete_memory

Delete specific memory by UUID.

{
  id: string           // UUID of memory (validated)
}

memory_stats

Get statistics about stored memories.

{}  // No parameters

๐Ÿ“ Project Structure

vercel-mcp-memory/
โ”œโ”€โ”€ app/
โ”‚   โ”œโ”€โ”€ api/
โ”‚   โ”‚   โ”œโ”€โ”€ health/route.ts          # Health check endpoint
โ”‚   โ”‚   โ””โ”€โ”€ mcp/sse/route.ts         # MCP JSON-RPC endpoint
โ”‚   โ”œโ”€โ”€ layout.tsx                   # Next.js layout
โ”‚   โ””โ”€โ”€ page.tsx                     # Landing page
โ”œโ”€โ”€ lib/
โ”‚   โ”œโ”€โ”€ auth.ts                      # API authentication
โ”‚   โ”œโ”€โ”€ db.ts                        # Postgres + pgvector queries
โ”‚   โ”œโ”€โ”€ embeddings.ts                # OpenAI embeddings client
โ”‚   โ”œโ”€โ”€ logger.ts                    # Structured logging
โ”‚   โ”œโ”€โ”€ mcp-handlers.ts              # Centralized tool handlers
โ”‚   โ”œโ”€โ”€ mcp-server.ts                # MCP SDK integration
โ”‚   โ”œโ”€โ”€ types.ts                     # TypeScript definitions
โ”‚   โ””โ”€โ”€ validation.ts                # Zod input validation
โ”œโ”€โ”€ migrations/
โ”‚   โ””โ”€โ”€ 001_init.sql                 # Database schema
โ”œโ”€โ”€ scripts/
โ”‚   โ”œโ”€โ”€ insert-test-data.ts          # Test data seeding
โ”‚   โ””โ”€โ”€ migrate-old-data.ts          # Legacy data migration
โ”œโ”€โ”€ .env.example                     # Environment variables template
โ”œโ”€โ”€ .eslintrc.json                   # ESLint configuration
โ”œโ”€โ”€ .gitignore                       # Git ignore rules
โ”œโ”€โ”€ SECURITY.md                      # Security guidelines
โ”œโ”€โ”€ next.config.js                   # Next.js configuration
โ”œโ”€โ”€ package.json                     # Dependencies
โ”œโ”€โ”€ tsconfig.json                    # TypeScript configuration
โ””โ”€โ”€ vercel.json                      # Vercel deployment config

๐Ÿ”ง Development

# Run locally
npm run dev

# Build for production
npm run build

# Lint code
npm run lint

# Migrate old data
npm run migrate

๐Ÿ” Security

See SECURITY.md for security best practices.

Important:

  • Never commit .env.local or .env.production files
  • Rotate API keys regularly
  • Enable MCP_API_KEYS authentication in production
  • Monitor API usage to prevent quota exhaustion
  • Review SECURITY.md before deploying

๐Ÿ’ฐ Cost Estimation

Vercel Free Tier (sufficient for personal use):

  • โœ… Functions: 100 GB-hours/month
  • โœ… Postgres: 256 MB storage
  • โœ… Bandwidth: 100 GB

After free tier:

  • Postgres: ~$0.20/GB/month
  • OpenAI Embeddings: ~$0.10/1M tokens (~$0.02/month for typical usage)
  • Functions: ~$40/100 GB-hours

Expected cost: $0-5/month for moderate personal use.

๐Ÿ› Troubleshooting

Claude can't connect

  1. Check health endpoint: curl https://your-project.vercel.app/api/health
  2. Verify API key matches in both Vercel env and Claude config
  3. Check Vercel deployment: vercel ls
  4. Verify Claude config path is correct
  5. Restart Claude Desktop

Authentication errors

  1. Verify MCP_API_KEYS is set in Vercel environment variables
  2. Check API key format (no extra spaces or newlines)
  3. Ensure Claude config includes MCP_API_KEY in env section
  4. Try without authentication first (remove MCP_API_KEYS from Vercel env)

Database errors

  1. Verify pgvector extension is enabled:

    SELECT * FROM pg_extension WHERE extname = 'vector';
    
  2. Check table exists:

    \dt memories
    
  3. View connection logs in Vercel Dashboard โ†’ Functions โ†’ Logs

Embedding errors

  1. Verify OpenAI API key is set: vercel env ls
  2. Check API key has sufficient credits
  3. Monitor usage: https://platform.openai.com/usage

๐Ÿ“– Resources

๐Ÿค– Claude Code Integration

This repository uses Claude Code via GitHub Actions for automated code reviews and AI assistance.

Automated PR Reviews

Every pull request automatically receives a comprehensive code review from Claude, focusing on:

  • Code quality and best practices
  • Potential bugs and security issues
  • Performance considerations
  • Test coverage

Interactive AI Assistant

Mention @claude in any issue or PR comment to get help:

@claude Please review the security implications of these auth changes.
@claude Help me fix the TypeScript errors in lib/db.ts.
@claude Update CLAUDE.md to reflect the new architecture.

For detailed setup and troubleshooting, see .github/CLAUDE_CODE_SETUP.md.

๐Ÿ“ License

MIT

๐Ÿค Contributing

Contributions are welcome! Please read our Contributing Guidelines and Code of Conduct first.

Quick steps:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request

For questions or support, see SUPPORT.md.

๐Ÿ™ Acknowledgments

Built with:


Made with โค๏ธ using Vercel, Next.js, and Claude Code

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured