Skip to main content
Glama

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

Related MCP server: MCP Memory Server

๐Ÿ—๏ธ 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

A
license - permissive license
Not graded
quality - not tested
D
maintenance

Maintenance

โ€“Maintainers
โ€“Response time
โ€“Release cycle
โ€“Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI assistants to store and retrieve long-term memories using PostgreSQL with vector similarity search. Supports semantic memory operations, tagging, and real-time updates for persistent learning across conversations.
  • A
    license
    Not graded
    quality
    F
    maintenance
    Persistent semantic memory for AI agents using PostgreSQL and vector embeddings, enabling cross-session continuity and semantic search.
    AGPL 3.0

View all related MCP servers

Related MCP Connectors

  • Persistent memory for AI agents โ€” verbatim conversations, searchable by meaning.

  • Universal memory for AI agents and tools. Save, organize and search context anywhere.

  • Long-term memory for AI assistants. Hybrid retrieval, query expansion, auto-topics.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/evgenygurin/vercel-mcp-memory'

If you have feedback or need assistance with the MCP directory API, please join our Discord server