Skip to main content
Glama
README.md3.86 kB
# Snippets MCP - MCP server for storing, searching, and managing code snippets using semantic search and traditional keyword matching. - Just tell your coding agent (claude code, cursor, cline, opencode, etc.) to save a certain snippet. That's it. - When needed, just tell it to search for code snippets related to: `your query`. ## Features - Semantic search using AI embeddings to find snippets by meaning, not just keywords - Hybrid search combining semantic similarity and keyword matching - Automatic programming language detection - Tag-based organization and filtering - Date range filtering - No database needed. JSON based storage. - Vector embeddings cached for fast retrieval ## Installation ```bash npm install @freakynit/snippets-mcp ``` ## Available Tools ### add-snippet Adds a new code snippet to the database. **Parameters:** - `code` (string, required) - The code content - `tags` (array, optional) - Array of tag strings - `language` (string, optional) - Programming language (auto-detected if not provided) - `description` (string, optional) - Text description for better semantic search ### search-snippets Searches snippets using hybrid semantic and keyword matching. **Parameters:** - `query` (string, optional) - Natural language search query - `tags` (array, optional) - Filter by specific tags (AND logic) - `language` (string, optional) - Filter by programming language - `dateStart` (ISO date string, optional) - Filter by creation date start - `dateEnd` (ISO date string, optional) - Filter by creation date end - `limit` (number, optional) - Maximum results to return (default: 10) ### update-snippet Updates an existing snippet. Re-generates embeddings if code, tags, or description change. **Parameters:** - `id` (string, required) - Snippet ID - `updates` (object) - Object containing fields to update (code, tags, language, description) ### delete-snippet Deletes a snippet from the database. **Parameters:** - `id` (string, required) - Snippet ID ### get-snippet Retrieves a single snippet by ID. **Parameters:** - `id` (string, required) - Snippet ID ## Environment Variables 1. `SNIPPETS_FILE_PATH`: Optional, Full path to file to save snippets and embeddings in. Defaults to `~/.snippets-mcp-db.json`. ## How It Works The library uses a hybrid search approach: 1. **Semantic Search (70% weight)** - Uses the `all-MiniLM-L6-v2` model to perform vector searh against embeddings generated off code, description, tags and language. 2. **Keyword Matching (30% weight)** - Traditional text matching for exact term matches based on code and tags. 3. **Hard Filters** - Applied first to narrow results by tags, language, and date range. Embeddings are generated once when adding/updating snippets and cached for fast retrieval. ## Storage Snippets are stored in a JSON file specified by environment variable `SNIPPETS_FILE_PATH`, or at default path: `~/.snippets-mcp-db.json` with the following structure: ```json { "id": "uuid", "code": "string", "language": "string", "tags": ["array"], "description": "string", "embedding": [/* vector array */], "createdAt": "ISO date", "updatedAt": "ISO date" } ``` ## Configuring using mcpServers json > For Mac and Linux ```json { "mcpServers": { "snippets-mcp": { "command": "npx", "args": ["-y", "@freakynit/snippets-mcp@latest"], "env": { "SNIPPETS_FILE_PATH": "Optional... path to save snippets and embeddings in.. should have .json extension" } } } } ``` > For Windows ```json { "mcpServers": { "snippets-mcp": { "command": "cmd", "args": ["/k", "npx", "-y", "@freakynit/snippets-mcp@latest"], "env": { "SNIPPETS_FILE_PATH": "Optional... path to save snippets and embeddings in.. should have .json extension" } } } } ``` ## License [MIT](LICENSE)

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/freakynit/snippets-mcp'

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