{"_id":"@aalokjha/mem-aj","_rev":"6-09cf049617d88a554f22ed2f8f7ceb25","name":"@aalokjha/mem-aj","dist-tags":{"latest":"1.3.0"},"versions":{"1.0.0":{"name":"@aalokjha/mem-aj","version":"1.0.0","keywords":["mcp","memory","ai","vector","embeddings","qdrant","semantic-search","persistent-memory"],"author":{"name":"Aalok Jha","email":"aalokaj59@gmail.com"},"license":"MIT","_id":"@aalokjha/mem-aj@1.0.0","maintainers":[{"name":"aalokjha","email":"aalokaj59@gmail.com"}],"homepage":"https://github.com/aalokjha-gits/memory-mcp#readme","bugs":{"url":"https://github.com/aalokjha-gits/memory-mcp/issues"},"bin":{"mem-aj":"dist/index.js"},"dist":{"shasum":"88454ddd3175b0034aa4062b35d3f5e9a7cdcc38","tarball":"https://registry.npmjs.org/@aalokjha/mem-aj/-/mem-aj-1.0.0.tgz","fileCount":17,"integrity":"sha512-tI6ZLHVDCd4sYeEUqoZITXw+eXmLzSsoF9ClKWfPbLZS5z27MFioJjPo5hyt9tOJw09DaEZkz4XFsp4ESR2lQQ==","signatures":[{"sig":"MEYCIQDfK8E0/I7wTnsIoT4kSbTZ2ZI4v7gn5C12COaKuPEPdwIhANB43qAXtew9GBGt2AsNYQ7hJ04eBiFym4yTGJeqbK2w","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47406},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"2719a3a548516f537c4cd8b240cf94f9bc2abd00","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"vitest","build":"tsc","clean":"rm -rf dist/","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"aalokjha","email":"aalokaj59@gmail.com"},"repository":{"url":"git+https://github.com/aalokjha-gits/memory-mcp.git","type":"git"},"_npmVersion":"11.5.2","description":"Persistent memory for AI agents with semantic search and auto-categorization","directories":{},"_nodeVersion":"23.6.1","dependencies":{"zod":"^4.3.6","uuid":"^13.0.0","@huggingface/transformers":"^4.0.1","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^1.0.0","typescript":"^5.9.3","@types/node":"^25.5.0","@types/uuid":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mem-aj_1.0.0_1775598907681_0.7327354565495658","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@aalokjha/mem-aj","version":"1.1.0","keywords":["mcp","memory","ai","vector","embeddings","qdrant","semantic-search","persistent-memory"],"author":{"name":"Aalok Jha","email":"aalokaj59@gmail.com"},"license":"MIT","_id":"@aalokjha/mem-aj@1.1.0","maintainers":[{"name":"aalokjha","email":"aalokaj59@gmail.com"}],"homepage":"https://github.com/aalokjha-gits/memory-mcp#readme","bugs":{"url":"https://github.com/aalokjha-gits/memory-mcp/issues"},"bin":{"mem-aj":"dist/index.js"},"dist":{"shasum":"6bfdc5f7eb27bda841799bb7c68b7881a23a0cb3","tarball":"https://registry.npmjs.org/@aalokjha/mem-aj/-/mem-aj-1.1.0.tgz","fileCount":17,"integrity":"sha512-YgzkhRtO+VFj6DACVGGhkb78ELPbsy/w39HeZQ+mzCru2oxQXuiItDJHN2o4od5GxeZsf0Bg48b7GV5X3KmXIQ==","signatures":[{"sig":"MEQCICbYPbRF3tXWKpVbn5nWTr2Innqicu0qYaCs6XpkIxJ2AiBBDNGGSED6U9uGsz9qEOV4FWzeH8eC19ofRqzpnoTEtw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aalokjha%2fmem-aj@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":46743},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"7c1e123168f34098eb6b28dd32c83620150514c1","scripts":{"dev":"tsx src/index.ts","test":"vitest","build":"tsc","clean":"rm -rf dist/","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:633bfb4a-d4e4-4e6b-b22c-7d1e6c13ef26"}},"repository":{"url":"git+https://github.com/aalokjha-gits/memory-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"Persistent memory for AI agents with semantic search and auto-categorization","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.3.6","uuid":"^13.0.0","@huggingface/transformers":"^4.0.1","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^1.0.0","typescript":"^5.9.3","@types/node":"^25.5.0","@types/uuid":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mem-aj_1.1.0_1775600250579_0.4261486269074526","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@aalokjha/mem-aj","version":"1.2.0","keywords":["mcp","memory","ai","vector","embeddings","qdrant","semantic-search","persistent-memory"],"author":{"name":"Aalok Jha","email":"aalokaj59@gmail.com"},"license":"MIT","_id":"@aalokjha/mem-aj@1.2.0","maintainers":[{"name":"aalokjha","email":"aalokaj59@gmail.com"}],"homepage":"https://github.com/aalokjha-gits/memory-mcp#readme","bugs":{"url":"https://github.com/aalokjha-gits/memory-mcp/issues"},"bin":{"mem-aj":"dist/index.js"},"dist":{"shasum":"c1e5f81e384bb671d5e77bf84a5e11d0c665cec3","tarball":"https://registry.npmjs.org/@aalokjha/mem-aj/-/mem-aj-1.2.0.tgz","fileCount":18,"integrity":"sha512-8NL0Ag0292Acj2M2C70KAd4HqSq0gaTprn2iQIMfwqy0ihB/yCwGlNO2tqvKWUW+HYArsTL38hibezOToBpCYA==","signatures":[{"sig":"MEUCIQCDrvEctIB2HmxbvZzN8IpddKlVawh3FNReO2rCTq7r1gIgGPPD3s+n1VJfEH30h87Y7915n4gKbCAWRYogbn4B5dQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aalokjha%2fmem-aj@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":52080},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"9b8c1bc91f7dbd30552d116de9b59f0562542058","scripts":{"dev":"tsx src/index.ts","test":"vitest","build":"tsc","clean":"rm -rf dist/","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:633bfb4a-d4e4-4e6b-b22c-7d1e6c13ef26"}},"repository":{"url":"git+https://github.com/aalokjha-gits/memory-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"Persistent memory for AI agents with semantic search and auto-categorization","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.3.6","uuid":"^13.0.0","@huggingface/transformers":"^4.0.1","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^1.0.0","typescript":"^5.9.3","@types/node":"^25.5.0","@types/uuid":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mem-aj_1.2.0_1775601136137_0.7212897080669276","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@aalokjha/mem-aj","version":"1.2.1","keywords":["mcp","memory","ai","vector","embeddings","qdrant","semantic-search","persistent-memory"],"author":{"name":"Aalok Jha","email":"aalokaj59@gmail.com"},"license":"MIT","_id":"@aalokjha/mem-aj@1.2.1","maintainers":[{"name":"aalokjha","email":"aalokaj59@gmail.com"}],"homepage":"https://github.com/aalokjha-gits/memory-mcp#readme","bugs":{"url":"https://github.com/aalokjha-gits/memory-mcp/issues"},"bin":{"mem-aj":"dist/index.js"},"dist":{"shasum":"ca92ba616de522c95a53b8e71704d132fd8a346c","tarball":"https://registry.npmjs.org/@aalokjha/mem-aj/-/mem-aj-1.2.1.tgz","fileCount":18,"integrity":"sha512-HGPek4B1yAu5UtJ9arYVDj9GInUhxoCSDxZ0fzpjgTLY/K9unjCulcaRo8clKmRBdEuUd+U1S23Xd7mU3aNR8g==","signatures":[{"sig":"MEQCIGl84HJPGJRoFAUcQRBulCSfl0BrX0/qKW91y1fqbgrgAiBGQvsZCOs5lRz1+Yz/4kkEyQbh7lSGf+Q1IQeE378v1A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aalokjha%2fmem-aj@1.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51938},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"6ca28442e3ce5492c06cdf5efa2f60859b83ea91","scripts":{"dev":"tsx src/index.ts","test":"vitest","build":"tsc","clean":"rm -rf dist/","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:633bfb4a-d4e4-4e6b-b22c-7d1e6c13ef26"}},"repository":{"url":"git+https://github.com/aalokjha-gits/memory-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"Persistent memory for AI agents with semantic search and auto-categorization","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.3.6","uuid":"^13.0.0","@huggingface/transformers":"^4.0.1","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^1.0.0","typescript":"^5.9.3","@types/node":"^25.5.0","@types/uuid":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mem-aj_1.2.1_1775735096184_0.1395766804948546","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@aalokjha/mem-aj","version":"1.2.2","keywords":["mcp","memory","ai","vector","embeddings","qdrant","semantic-search","persistent-memory"],"author":{"name":"Aalok Jha","email":"aalokaj59@gmail.com"},"license":"MIT","_id":"@aalokjha/mem-aj@1.2.2","maintainers":[{"name":"aalokjha","email":"aalokaj59@gmail.com"}],"homepage":"https://github.com/aalokjha-gits/memory-mcp#readme","bugs":{"url":"https://github.com/aalokjha-gits/memory-mcp/issues"},"bin":{"mem-aj":"dist/index.js"},"dist":{"shasum":"c7fabff1bfe122f93390d59a5314fbccc48631bb","tarball":"https://registry.npmjs.org/@aalokjha/mem-aj/-/mem-aj-1.2.2.tgz","fileCount":18,"integrity":"sha512-iG9TFSh+hkPwED8yKMpaDpUpYLiLuNOjmL5aLfq+dZhrtT4iU7wHh+wkxJ10CMQItORl9fq3qhQcAW9pK/+0Bg==","signatures":[{"sig":"MEYCIQD1V7wqHTwQxca7gopL9G6py2icZqZ+uVfdWd98ZgO7vQIhAIWKUnieo5Hr3tq2wvrJKhsyoyJkJJ8XcPQlZdYXuEiC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aalokjha%2fmem-aj@1.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":52904},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"3be8e8ca7defa4427fececc232a88f69bb964294","scripts":{"dev":"tsx src/index.ts","test":"vitest","build":"tsc","clean":"rm -rf dist/","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:633bfb4a-d4e4-4e6b-b22c-7d1e6c13ef26"}},"repository":{"url":"git+https://github.com/aalokjha-gits/memory-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"Persistent memory for AI agents with semantic search and auto-categorization","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.3.6","uuid":"^13.0.0","@huggingface/transformers":"^4.0.1","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^1.0.0","typescript":"^5.9.3","@types/node":"^25.5.0","@types/uuid":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mem-aj_1.2.2_1775735215091_0.336485331357423","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@aalokjha/mem-aj","version":"1.3.0","description":"Persistent memory for AI agents with semantic search and auto-categorization","main":"dist/index.js","types":"dist/index.d.ts","bin":{"mem-aj":"dist/index.js"},"scripts":{"build":"tsc","start":"node dist/index.js","dev":"tsx src/index.ts","test":"vitest","clean":"rm -rf dist/","prepublishOnly":"npm run build"},"keywords":["mcp","memory","ai","vector","embeddings","qdrant","semantic-search","persistent-memory"],"author":{"name":"Aalok Jha","email":"aalokaj59@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/aalokjha-gits/memory-mcp.git"},"bugs":{"url":"https://github.com/aalokjha-gits/memory-mcp/issues"},"homepage":"https://github.com/aalokjha-gits/memory-mcp#readme","type":"module","engines":{"node":">=18"},"dependencies":{"@huggingface/transformers":"^4.0.1","@modelcontextprotocol/sdk":"^1.27.1","uuid":"^13.0.0","zod":"^4.3.6"},"devDependencies":{"@types/node":"^25.5.0","@types/uuid":"^10.0.0","tsx":"^4.21.0","typescript":"^5.9.3","vitest":"^1.0.0"},"gitHead":"465dfdd9d076f4d7f02dd86e04990d56c56efbbe","_id":"@aalokjha/mem-aj@1.3.0","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-OLsSeeIqYDk5gvEr9yGzBOoU1+sJTzW4t8amrxOM9qrzY+G0ybZfprpkdMopyCMkcVLglJBX54qb/ulLomNrVQ==","shasum":"c0576f88da1e6fcda327598386e6ddcf4cf99cf0","tarball":"https://registry.npmjs.org/@aalokjha/mem-aj/-/mem-aj-1.3.0.tgz","fileCount":18,"unpackedSize":53401,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aalokjha%2fmem-aj@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD9YcR2oiuq6TSoi1HZetwTqdQfISmz4iZZXyy33goQJAIgb5+F9wU5dwWJCc3oFdHCJoAB9IVnXOejTrnTD/lkRWQ="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:633bfb4a-d4e4-4e6b-b22c-7d1e6c13ef26"}},"directories":{},"maintainers":[{"name":"aalokjha","email":"aalokaj59@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mem-aj_1.3.0_1775735785219_0.7415702068587828"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-07T21:55:07.592Z","modified":"2026-04-09T11:56:25.746Z","1.0.0":"2026-04-07T21:55:07.828Z","1.1.0":"2026-04-07T22:17:30.704Z","1.2.0":"2026-04-07T22:32:16.277Z","1.2.1":"2026-04-09T11:44:56.339Z","1.2.2":"2026-04-09T11:46:55.229Z","1.3.0":"2026-04-09T11:56:25.353Z"},"bugs":{"url":"https://github.com/aalokjha-gits/memory-mcp/issues"},"author":{"name":"Aalok Jha","email":"aalokaj59@gmail.com"},"license":"MIT","homepage":"https://github.com/aalokjha-gits/memory-mcp#readme","keywords":["mcp","memory","ai","vector","embeddings","qdrant","semantic-search","persistent-memory"],"repository":{"type":"git","url":"git+https://github.com/aalokjha-gits/memory-mcp.git"},"description":"Persistent memory for AI agents with semantic search and auto-categorization","maintainers":[{"name":"aalokjha","email":"aalokaj59@gmail.com"}],"readme":"# Memory MCP\n\n**Persistent memory for AI agents. Plug-and-play with zero infrastructure.**\n\nA Model Context Protocol (MCP) server that gives your AI agents persistent, searchable memory. Works out of the box with zero configuration using local embeddings and file-based storage.\n\n## Features\n\n- 🔍 **Semantic Search** - Find memories by meaning, not keywords\n- 🔗 **Auto-Linking** - Related memories are automatically connected\n- 🏷️ **Auto-Categorization** - Memories are categorized by type (knowledge, decision, pattern, etc.)\n- ⭐ **Importance Scoring** - Automatic priority based on content\n- 🔌 **Pluggable Embeddings** - Transformers.js (default), OpenAI, Ollama, or custom\n- 📦 **Zero Config** - No database or API keys required to start\n- 🤖 **Agent Instructions** - Agents automatically learn when and how to use memory tools via MCP protocol\n\n## Quick Start\n\nStart the server immediately with zero configuration.\n\n```bash\n# Run using npx (requires Node 18+)\nnpx @aalokjha/mem-aj\n```\n\nOr install locally:\n\n```bash\nnpm i @aalokjha/mem-aj\n```\n\n### How it works by default:\n- **Embeddings**: Uses in-process Transformers.js (`all-MiniLM-L6-v2`, 384 dimensions). No external server or Python needed.\n- **Storage**: Uses a local JSON vector store at `~/.memory-mcp/`.\n- **Initialization**: The first run downloads a ~90MB model file. Every run after that is instant.\n\n## MCP Client Configuration\n\nAdd Memory MCP to your favorite AI tools by adding these configurations.\n\n### OpenCode / Claude Desktop / Cursor\n\n```json\n{\n  \"mcpServers\": {\n    \"memory\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@aalokjha/mem-aj\"]\n    }\n  }\n}\n```\n\n## Production Setup\n\nConfigure environment variables to use high-performance storage and external embedding providers.\n\n### Qdrant + External Embeddings\n\n1. Run your own Qdrant instance.\n2. Set environment variables to point to your services:\n\n```bash\nexport VECTORDB_PROVIDER=qdrant\nexport QDRANT_URL=http://localhost:6333\nexport EMBEDDING_PROVIDER=openai\nexport EMBEDDING_API_KEY=sk-your-key\n```\n\n## Configuration\n\n### Environment Variables\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `EMBEDDING_PROVIDER` | `transformersjs` | Embedding provider: `transformersjs`, `openai`, `ollama`, `custom` |\n| `VECTORDB_PROVIDER` | `local` | Storage provider: `local`, `qdrant` |\n| `EMBEDDING_URL` | - | Embedding service URL (for Ollama/Custom) |\n| `EMBEDDING_API_KEY` | - | API key for OpenAI |\n| `EMBEDDING_MODEL` | Provider default | Model name |\n| `EMBEDDING_DIMENSIONS` | Provider default | Vector dimensions |\n| `EMBEDDING_MAX_TOKENS` | Provider default | Max token context window for embeddings |\n| `QDRANT_URL` | `http://localhost:6333` | Qdrant endpoint |\n| `VECTORDB_COLLECTION` | `memories` | Collection name |\n| `LOG_LEVEL` | `info` | Log level: debug, info, warn, error |\n\n### Embedding Providers\n\n#### Transformers.js (Default - Zero Config)\n\nRuns locally in your Node.js process. No external services needed.\n\n```bash\nexport EMBEDDING_PROVIDER=transformersjs\n```\n\n#### OpenAI\n\n```bash\nexport EMBEDDING_PROVIDER=openai\nexport EMBEDDING_API_KEY=sk-your-key\nexport EMBEDDING_MODEL=text-embedding-3-small\n```\n\n#### Ollama\n\n```bash\nexport EMBEDDING_PROVIDER=ollama\nexport EMBEDDING_URL=http://localhost:11434\nexport EMBEDDING_MODEL=nomic-embed-text\n```\n\n#### Custom\n\nAny HTTP endpoint that accepts `POST /embed` with `{ inputs: string[] }` and returns `number[][]`.\n\n```bash\nexport EMBEDDING_PROVIDER=custom\nexport EMBEDDING_URL=http://your-service:port\n```\n\n## MCP Tools\n\n### memory_add\n\nStore a memory with automatic categorization and importance scoring.\n\n```json\n{\n  \"content\": \"Decided to use PostgreSQL for the main database\",\n  \"type\": \"auto\",\n  \"tags\": [\"database\", \"architecture\"],\n  \"project\": \"my-app\"\n}\n```\n\n### memory_search\n\nSemantic search across all memories.\n\n```json\n{\n  \"query\": \"database decisions\",\n  \"limit\": 10,\n  \"min_score\": 0.7\n}\n```\n\n### memory_list\n\nBrowse memories by type, tags, or project.\n\n```json\n{\n  \"type\": \"decision\",\n  \"project\": \"my-app\",\n  \"limit\": 20\n}\n```\n\n### memory_forget\n\nDelete a memory by ID.\n\n```json\n{\n  \"memoryId\": \"uuid-here\"\n}\n```\n\n### memory_link\n\nManually link two related memories.\n\n```json\n{\n  \"id1\": \"uuid-1\",\n  \"id2\": \"uuid-2\"\n}\n```\n\n### memory_profile\n\nStore user preferences.\n\n```json\n{\n  \"action\": \"set\",\n  \"key\": \"preferred_language\",\n  \"value\": \"typescript\"\n}\n```\n\n## Memory Types\n\n| Type | Description | Keywords Detected |\n|------|-------------|-------------------|\n| `knowledge` | Facts and information | (default) |\n| `decision` | Choices made | decided, chose, will use, picked |\n| `pattern` | Recurring solutions | pattern, always, convention, best practice |\n| `preference` | User preferences | prefer, like, dislike, want, hate |\n| `context` | Situational context | working on, currently, project |\n| `debug` | Debug notes | error, bug, fix, crash, issue |\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Build\nnpm run build\n\n# Run in dev mode\nnpm run dev\n\n# Run tests\nnpm test\n```\n\n## Agent Instructions\n\nThe server automatically injects usage instructions into the connected agent's context via the MCP `instructions` protocol field. Agents learn:\n\n- **When** to search, store, and link memories\n- **How** to write effective memories (word limits adapted to the configured embedding model)\n- **What** memory types to use and cross-tool workflows\n\nNo manual prompt engineering or AGENTS.md configuration needed. Just connect and the agent knows what to do.\n\nToken limits per provider default:\n\n| Provider | Max Tokens | Max Words |\n|----------|-----------|-----------|\n| Transformers.js | 512 | ~384 |\n| OpenAI | 8,191 | ~6,143 |\n| Ollama | 8,192 | ~6,144 |\n| Custom | 512 | ~384 |\n\nOverride with `EMBEDDING_MAX_TOKENS` if using a non-default model.\n\n## Architecture\n\nMemory MCP supports two modes:\n\n### Zero-Config Mode (Default)\nSimple, file-based storage for personal use.\n```\n┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐\n│   MCP Client    │────▶│   Memory MCP    │────▶│   Local JSON    │\n│   (Claude/AI)   │     │    Server       │     │   Vector Store  │\n└─────────────────┘     └────────┬────────┘     └─────────────────┘\n                                 │\n                                 ▼\n                        ┌─────────────────┐\n                        │ Transformers.js │\n                        │  (In-process)   │\n                        └─────────────────┘\n```\n\n### Production Mode\nHigh-performance configuration for shared environments.\n```\n┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐\n│   MCP Client    │────▶│   Memory MCP    │────▶│     Qdrant      │\n│   (Claude/AI)   │     │    Server       │     │    Vector DB    │\n└─────────────────┘     └────────┬────────┘     └─────────────────┘\n                                 │\n                                 ▼\n                        ┌─────────────────┐\n                        │    External     │\n                        │    Provider     │\n                        │ (OpenAI/Ollama) │\n                        └─────────────────┘\n```\n\n## License\n\nMIT License - see [LICENSE](LICENSE)\n\n## Contributing\n\nContributions welcome! Please read our contributing guidelines.\n\n## Credits\n\nBuilt by [Aalok Jha](https://github.com/aalokjha-gits)\n","readmeFilename":"README.md"}