Skip to main content
Glama
README.md
# Context MCP

A Model Context Protocol (MCP) server that provides persistent context management for AI agents like Cursor, Claude Code, and Claude Desktop. Uses **Upstash Vector DB** for storage and **Google AI** for embeddings.

## Features

- **Add Context**: Store text with metadata, automatically embedded and indexed
- **Query Context**: Semantic search to find relevant stored information
- **Batch Operations**: Efficiently add or delete multiple contexts
- **Metadata Filtering**: Filter queries by metadata attributes
- **Statistics**: Monitor your vector database usage

## Prerequisites

1. **Upstash Vector DB** account - [Sign up at Upstash](https://upstash.com/)
   - Create a new Vector Index with dimension `768` (for Google's text-embedding-004)
   - Get your REST URL and Token

2. **Google AI API Key** - [Get from Google AI Studio](https://aistudio.google.com/app/apikey)

## Installation

```bash
# Clone the repository
git clone <your-repo-url>
cd context-mcp

# Install dependencies
npm install

# Build the project
npm run build
```

## Configuration

Create a `.env` file based on `.env.example`:

```bash
cp .env.example .env
```

Fill in your credentials:

```env
UPSTASH_VECTOR_REST_URL=your_upstash_vector_url
UPSTASH_VECTOR_REST_TOKEN=your_upstash_vector_token
GOOGLE_AI_API_KEY=your_google_ai_api_key
```

## Usage with AI Agents

### Claude Desktop

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "context": {
      "command": "node",
      "args": ["path/to/context-mcp/dist/index.js"],
      "env": {
        "UPSTASH_VECTOR_REST_URL": "your_url",
        "UPSTASH_VECTOR_REST_TOKEN": "your_token",
        "GOOGLE_AI_API_KEY": "your_key"
      }
    }
  }
}
```

### Cursor

Add to your Cursor MCP settings:

```json
{
  "mcpServers": {
    "context": {
      "command": "node",
      "args": ["path/to/context-mcp/dist/index.js"],
      "env": {
        "UPSTASH_VECTOR_REST_URL": "your_url",
        "UPSTASH_VECTOR_REST_TOKEN": "your_token",
        "GOOGLE_AI_API_KEY": "your_key"
      }
    }
  }
}
```

### Claude Code (Windsurf)

Add to your MCP configuration file.

## Available Tools

### `add_context`
Store a single piece of context.

**Parameters:**
- `id` (required): Unique identifier
- `content` (required): Text content to store
- `metadata` (optional): Key-value pairs for filtering

### `add_contexts_batch`
Store multiple contexts efficiently.

**Parameters:**
- `contexts` (required): Array of `{id, content, metadata}` objects

### `query_context`
Search for relevant contexts.

**Parameters:**
- `query` (required): Natural language search query
- `topK` (optional): Number of results (1-20, default: 5)
- `filter` (optional): Upstash filter expression

### `delete_context`
Delete a single context by ID.

**Parameters:**
- `id` (required): ID of context to delete

### `delete_contexts_batch`
Delete multiple contexts.

**Parameters:**
- `ids` (required): Array of IDs to delete

### `get_stats`
Get database statistics (vector count, dimensions).

## Example Usage

Once connected, you can ask your AI agent to:

```
"Add this project documentation to my context with id 'project-readme'"

"Search my context for information about authentication"

"Store these meeting notes with category 'meetings' and date '2024-01-15'"

"What relevant context do I have about the payment system?"
```

## Upstash Filter Syntax

When querying, you can filter by metadata:

```
# Exact match
category = 'meetings'

# Numeric comparison  
priority > 5

# Multiple conditions
category = 'docs' AND priority >= 3
```

## Development

```bash
# Run in development mode
npm run dev

# Build for production
npm run build

# Start production server
npm start
```

## License

MIT

TDQS

A3.7/5.0

Scored across 6 tools

Disambiguation5/5

Every tool has a clearly distinct purpose with no ambiguity. Tools are clearly separated into categories: adding context (single vs. batch), deleting context (single vs. batch), querying context, and getting statistics. The descriptions make it immediately clear which tool to use for each operation.

Naming Consistency5/5

Tool names follow a perfectly consistent verb_noun pattern throughout. All tools use snake_case with clear action prefixes (add, delete, get, query) followed by the object (context/stats). Even batch operations maintain the same pattern with '_batch' suffix for consistency.

Tool Count5/5

Six tools is well-scoped for a context management server. Each tool earns its place by covering essential operations: CRUD operations (create, read, delete) with both single and batch variants, plus query and statistics capabilities. No tool feels redundant or missing for the domain.

Completeness5/5

The tool surface provides complete CRUD/lifecycle coverage for context management. It covers creation (add single/batch), retrieval (query), deletion (delete single/batch), and monitoring (stats). There are no dead ends or obvious gaps for the stated purpose of managing a vector database of context/knowledge.

Maintenance

ActivityInactive
ResponsivenessNo issues