Skip to main content
Glama

Context7 MCP Clone - Up-to-Date Code Documentation for LLMs

A production-ready clone of Context7 MCP that provides up-to-date, version-specific documentation and code examples directly to LLMs and AI code editors.

🎯 Project Status

Phase 2 Complete: Core MCP Server and Backend API ready for development!

Completed Components

  • βœ… pnpm monorepo with workspace configuration

  • βœ… Docker Compose development and production environments

  • βœ… PostgreSQL database schema with migrations

  • βœ… NestJS backend API with authentication

  • βœ… Library and documentation services

  • βœ… MCP server with both tools (resolve-library-id, get-library-docs)

  • βœ… Stdio and HTTP transports for MCP protocol

In Progress

  • πŸš€ Rate limiting with Redis

  • πŸš€ Crawler engine with GitHub API and web scraping

  • πŸš€ Markdown and HTML parsing with code extraction

  • πŸš€ Next.js web UI with Grafana theme

πŸ“¦ Project Structure

atamai-mcp/
β”œβ”€β”€ packages/
β”‚   β”œβ”€β”€ mcp-server/           # MCP Protocol Server
β”‚   β”œβ”€β”€ backend-api/          # NestJS REST API
β”‚   β”œβ”€β”€ crawler-engine/       # Documentation Crawler
β”‚   └── web-ui/               # Next.js Frontend
β”œβ”€β”€ docker/                   # Container configurations
β”œβ”€β”€ scripts/                  # Utility scripts
β”œβ”€β”€ docker-compose.yml        # Production compose
β”œβ”€β”€ docker-compose.dev.yml    # Development compose
β”œβ”€β”€ PLAN.md                   # Detailed implementation plan
β”œβ”€β”€ TODO.md                   # Task checklist
└── README.md                 # This file

πŸš€ Quick Start

Prerequisites

  • Node.js 20+

  • pnpm 8+

  • Docker & Docker Compose

  • PostgreSQL 16+ (or use docker-compose)

Development Setup

  1. Clone and install dependencies

cd /Users/atamai/develope/atamai-mcp
pnpm install
  1. Set up environment

cp .env.example .env
# Edit .env with your configuration
  1. Start development environment with Docker

docker-compose -f docker-compose.dev.yml up

This starts:

  • PostgreSQL database on port 5432

  • Redis cache on port 6379

  • Backend API on port 5000

  • MCP Server on port 3000

  • Web UI on port 4000

  1. Run migrations

# Migrations run automatically when backend starts
# Or manually run:
cd packages/backend-api
pnpm run migration:run

πŸ“š MCP Server

Tools Available

1. resolve-library-id

Converts a library name to Context7-compatible ID and returns ranked results.

Input:

{
  "libraryName": "react"
}

Output:

{
  "libraries": [
    {
      "id": "/facebook/react",
      "name": "React",
      "description": "A JavaScript library for building user interfaces",
      "ecosystem": "javascript",
      "stars": 220000,
      "benchmarkScore": 98,
      "reputation": "high",
      "codeSnippets": 15420
    }
  ],
  "selected": "/facebook/react",
  "reasoning": "Exact name match with highest benchmark score"
}

2. get-library-docs

Retrieves version-specific documentation and code examples.

Input:

{
  "context7CompatibleLibraryID": "/facebook/react",
  "topic": "hooks",
  "page": 1,
  "mode": "code"
}

Output:

{
  "libraryId": "/facebook/react",
  "library": {
    "name": "React",
    "full_name": "facebook/react",
    "ecosystem": "javascript"
  },
  "version": "18.2.0",
  "topic": "hooks",
  "page": 1,
  "totalPages": 5,
  "documentation": [
    {
      "title": "Using the State Hook",
      "type": "guide",
      "content": "...",
      "codeExamples": [
        {
          "language": "javascript",
          "code": "const [count, setCount] = useState(0);",
          "description": "Basic useState example"
        }
      ],
      "url": "https://react.dev/reference/react/useState"
    }
  ]
}

Running MCP Server

Stdio Mode (for Claude Desktop, Cursor, etc.)

cd packages/mcp-server
pnpm start
# Or with hot reload:
pnpm dev

HTTP Mode

MCP_TRANSPORT=http MCP_SERVER_PORT=3000 pnpm start
# Access SSE endpoint at: http://localhost:3000/mcp/sse

πŸ”Œ Backend API

Authentication

Register

POST /api/v1/auth/register
Content-Type: application/json

{
  "email": "user@example.com",
  "password": "SecurePassword123!"
}

Login

POST /api/v1/auth/login
Content-Type: application/json

{
  "email": "user@example.com",
  "password": "SecurePassword123!"
}

Libraries

Search Libraries

GET /api/v1/libraries?query=react&ecosystem=javascript&page=1&limit=20
Authorization: Bearer <jwt_token>

Get Library by ID

GET /api/v1/libraries/{id}
Authorization: Bearer <jwt_token>

Get Available Ecosystems

GET /api/v1/libraries/ecosystems
Authorization: Bearer <jwt_token>

Documentation

Get Documentation

GET /api/v1/docs/{libraryId}?topic=hooks&page=1&mode=code
Authorization: Bearer <jwt_token>

Search Documentation

GET /api/v1/docs/search/{query}
Authorization: Bearer <jwt_token>

Swagger Documentation

Once the backend is running, visit:

http://localhost:5000/docs

πŸ“Š Database Schema

Core Tables

  • users - User accounts with tier system

  • api_keys - API key management with rate limits

  • libraries - Library metadata

  • library_versions - Version tracking

  • documentation_pages - Documentation content with full-text search

  • code_examples - Code snippets

  • crawl_jobs - Crawler job tracking

  • api_usage - Usage analytics

Features

  • Full-text search on documentation

  • Trigram similarity for fuzzy matching

  • JSONB metadata support

  • Automatic tsvector updates

  • Materialized views for popular libraries

πŸ”„ Deployment

Production Docker Compose

docker-compose up -d

Environment Variables

See .env.example for all available options:

  • DATABASE_URL - PostgreSQL connection string

  • REDIS_URL - Redis connection string

  • JWT_SECRET - JWT signing key

  • NODE_ENV - production/development

  • API_PREFIX - API base path (default: /api/v1)

Kubernetes Deployment

Deploy manifests are in the plan for Phase 8.

πŸ“ˆ Development Roadmap

Phase 3: Crawler Engine (Weeks 5-6)

  • BullMQ job queue setup

  • GitHub crawler with Octokit

  • Documentation site scraper

  • Markdown/HTML parsers

  • Code extraction engine

Phase 4: Web UI (Weeks 7-8)

  • Next.js 15 setup with App Router

  • Landing page with purple gradient theme

  • Documentation browser

  • Authentication pages

Phase 5: Dashboard & Admin (Weeks 9-10)

  • User dashboard

  • API key management

  • Admin panel

  • Analytics and charts

Phase 6-10: Completion & Launch

  • Data seeding

  • Testing & optimization

  • Production deployment

  • Beta & public launch

πŸ§ͺ Testing

# Run tests for all packages
pnpm test

# Run tests with coverage
pnpm test:cov

# Watch mode
pnpm test:watch

πŸ“ Code Style

# Format code
pnpm format

# Check formatting
pnpm format:check

# Lint
pnpm lint

# Type check
pnpm type-check

πŸ› Debugging

Backend API

DEBUG=* pnpm dev

MCP Server

DEBUG=* pnpm dev

Docker Logs

docker-compose -f docker-compose.dev.yml logs -f [service-name]

πŸ“– Documentation

  • PLAN.md - Comprehensive implementation plan with architecture

  • TODO.md - Detailed task checklist for all phases

  • API Docs - Available at http://localhost:5000/docs (Swagger)

🀝 Contributing

This is a solo development project. Please follow:

  • TypeScript strict mode

  • ESLint configuration

  • Prettier formatting

  • 80%+ test coverage

πŸ“„ License

MIT

🎯 Key Metrics (Target)

  • Performance: MCP response <200ms (p95)

  • Search: <100ms (p95)

  • Uptime: 99.9%

  • Coverage: 100+ libraries by month 6

  • Users: 1000+ registered by month 3


Next Steps

  1. Run docker-compose -f docker-compose.dev.yml up

  2. Wait for migrations to complete

  3. Visit http://localhost:5000/docs for API documentation

  4. Start using the MCP server with Claude Desktop or Cursor

  5. Reference PLAN.md for detailed architecture and TODO.md for task tracking

-
security - not tested
F
license - not found
-
quality - not tested

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/aiatamai/atamai-mcp'

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