Context MCP
# 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
Scored across 6 tools
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.
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.
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.
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.