{"_id":"fossel","_rev":"4-5311659baca96676474423e14d7a15f9","name":"fossel","dist-tags":{"latest":"1.0.8"},"versions":{"1.0.0":{"name":"fossel","version":"1.0.0","_id":"fossel@1.0.0","maintainers":[{"name":"vignesh_!23","email":"vigneshgopikrishnan.7@gmail.com"}],"bin":{"fossel":"dist/index.js"},"dist":{"shasum":"3c99ae0606f49e70f02ac9c7bd56ad78a1fd76e8","tarball":"https://registry.npmjs.org/fossel/-/fossel-1.0.0.tgz","fileCount":4,"integrity":"sha512-nb59lO0G5rb19EVIofTFMeAS1vNr3pqvScJ86hcKf78kfchnxq/pR1FHqdoeCPiDGJwUPo3m9sG2atv8ekG2vQ==","signatures":[{"sig":"MEUCIAJ3QdLkS8aESCcGzoZREPH1HiBZf68ohNo0Xz3iiIhrAiEA08C3pnaZjPvmjB0ODbQjMZYggZuLHn4FIeSpEyiNo0w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14902},"type":"module","gitHead":"873998e43558831caebd0703aa3d96cd2daadeb9","scripts":{"dev":"tsx src/index.ts","build":"tsup","smoke":"tsx scripts/smoke.ts","start":"node dist/index.js"},"_npmUser":{"name":"vignesh_!23","email":"vigneshgopikrishnan.7@gmail.com"},"_npmVersion":"10.9.4","description":"Local MCP memory server for open-source contributors","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"latest","nanoid":"latest","better-sqlite3":"latest","@modelcontextprotocol/sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"latest","tsup":"latest","typescript":"latest","@types/node":"latest","@types/better-sqlite3":"latest"},"_npmOperationalInternal":{"tmp":"tmp/fossel_1.0.0_1777241752244_0.8521889178431383","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"fossel","version":"1.0.1","_id":"fossel@1.0.1","maintainers":[{"name":"vignesh_!23","email":"vigneshgopikrishnan.7@gmail.com"}],"bin":{"fossel":"dist/index.js"},"dist":{"shasum":"ead9085aaa424e4699ec20c55f12a4a6fa05c9d3","tarball":"https://registry.npmjs.org/fossel/-/fossel-1.0.1.tgz","fileCount":4,"integrity":"sha512-/jA9I+oMGZhvg2i2f5s0/BFYEOuZaT+T7A2vVi+xA8lRAPKz9dB/KIPk4u7xFOVZI3c4ehxpWEpZLR1FNqUI7Q==","signatures":[{"sig":"MEUCIQC5tvoOfWaNtAPiRfbsn4yI/DNhTXgmobhtPERfLOTFbQIgYbBSFXzrTUwuvnXectAhe0Sg4O2ezX+jIhLs9trF26A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14902},"type":"module","gitHead":"2ca6ce45354b4fee32b4b81512d25abff210f9ee","scripts":{"dev":"tsx src/index.ts","build":"tsup","smoke":"tsx scripts/smoke.ts","start":"node dist/index.js"},"_npmUser":{"name":"vignesh_!23","email":"vigneshgopikrishnan.7@gmail.com"},"_npmVersion":"10.9.4","description":"Local MCP memory server for open-source contributors","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"latest","nanoid":"latest","better-sqlite3":"latest","@modelcontextprotocol/sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"latest","tsup":"latest","typescript":"latest","@types/node":"latest","@types/better-sqlite3":"latest"},"_npmOperationalInternal":{"tmp":"tmp/fossel_1.0.1_1777280310167_0.5121217064182302","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"fossel","version":"1.0.6","_id":"fossel@1.0.6","maintainers":[{"name":"vignesh_!23","email":"vigneshgopikrishnan.7@gmail.com"}],"bin":{"fossel":"dist/index.js"},"dist":{"shasum":"a54ce09a314116f784db3867356b89ecc1321c2e","tarball":"https://registry.npmjs.org/fossel/-/fossel-1.0.6.tgz","fileCount":4,"integrity":"sha512-H3yP+g3lyQus1Y2cxAqUvrkPScEpvbbmkn98nP8hOgGGWjcGVhsRgGHAeoHRkfoBbENG3JG25Z8wJcncGG5MZA==","signatures":[{"sig":"MEQCIGPnxI+D+Neftn4rvDEREMYwMRCb7UbURzBX2Gwus2lqAiBg/GaW1JAM0zRICbrIt7aKqyTqrmsC3hleslJhy4i3PA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14979},"type":"module","gitHead":"a7fe9b19f9c4c1f17810cb7fcc9da496cfa92569","scripts":{"ci":"npm run typecheck && npm run build && npm run smoke","dev":"tsx src/index.ts","build":"tsup","smoke":"tsx scripts/smoke.ts","start":"node dist/index.js","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vignesh_!23","email":"vigneshgopikrishnan.7@gmail.com"},"_npmVersion":"10.8.2","description":"Local MCP memory server for open-source contributors","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"latest","nanoid":"latest","better-sqlite3":"latest","@modelcontextprotocol/sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"latest","tsup":"latest","typescript":"latest","@types/node":"latest","@types/better-sqlite3":"latest"},"_npmOperationalInternal":{"tmp":"tmp/fossel_1.0.6_1777282851963_0.704975807643385","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"fossel","version":"1.0.8","description":"Local MCP memory server for open-source contributors","type":"module","bin":{"fossel":"dist/cli.js"},"scripts":{"build":"tsup","dev":"tsx src/index.ts","start":"node dist/index.js","smoke":"tsx scripts/smoke.ts","typecheck":"tsc --noEmit","ci":"npm run typecheck && npm run build && npm run smoke"},"dependencies":{"@modelcontextprotocol/sdk":"latest","better-sqlite3":"latest","nanoid":"latest","zod":"latest"},"devDependencies":{"@types/better-sqlite3":"latest","@types/node":"latest","tsup":"latest","tsx":"latest","typescript":"latest"},"_id":"fossel@1.0.8","gitHead":"f6cf90282beda9da44fabbd6bcc7fc97c466f10c","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-UDGRR75bW/E1O4FIWoVAcnsYrbgEZduO0/psR3fVtUWc/WfbXuJZVzUcDumedJBschWmRL3V6bSYN1TECW5SRA==","shasum":"57722f69474113517432facb5ac2ca1f0d85ac07","tarball":"https://registry.npmjs.org/fossel/-/fossel-1.0.8.tgz","fileCount":5,"unpackedSize":57179,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCDBU+sPtR1RpWV6Ms6AeDBhFERdL0nWe/+OMv8dRVfRgIgLIZN6OkYc6PPSeeryxNbatQtMACOitt8faOYwQhhfqs="}]},"_npmUser":{"name":"vignesh_!23","email":"vigneshgopikrishnan.7@gmail.com"},"directories":{},"maintainers":[{"name":"vignesh_!23","email":"vigneshgopikrishnan.7@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/fossel_1.0.8_1777671086946_0.9876330617786255"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-26T22:15:52.243Z","modified":"2026-05-01T21:31:27.218Z","1.0.0":"2026-04-26T22:15:52.381Z","1.0.1":"2026-04-27T08:58:30.309Z","1.0.6":"2026-04-27T09:40:52.119Z","1.0.8":"2026-05-01T21:31:27.110Z"},"description":"Local MCP memory server for open-source contributors","maintainers":[{"name":"vignesh_!23","email":"vigneshgopikrishnan.7@gmail.com"}],"readme":"# Fossel\n\nFossel is a local MCP (Model Context Protocol) memory server for open-source contributors. It stores project-specific context such as reviewer preferences, bug fixes, conventions, decisions, and issue notes in a local SQLite database with FTS5 search.\n\n## Features\n\n- Persistent local memory in SQLite (`~/.fossel/memory.db`)\n- Full-text search with SQLite FTS5\n- Repo-aware context retrieval grouped by memory type\n- Pinned memories that stay at the top of repo context\n- Structured markdown summaries for PR and planning context\n- Simple delete workflow by memory id\n- Partial memory updates by numeric id\n- CLI onboarding with `fossel init`\n- Local `stdio` MCP server for tools such as Cursor and Claude Desktop\n\n## Memory Types\n\n- `convention`\n- `bug_fix`\n- `reviewer_pattern`\n- `decision`\n- `issue`\n- `general`\n\n## Install\n\n```bash\nnpm install\n```\n\nOr run without installation:\n\n```bash\nnpx -y fossel\n```\n\n## Commands\n\n```bash\nnpx -y fossel          # start MCP server over stdio\nnpx -y fossel init     # onboarding for current repository\n```\n\n## `fossel init`\n\n`fossel init` detects your current repo, prints ready-to-copy MCP config snippets for Cursor and Claude Desktop, inserts a starter memory, and shows DB stats plus command references.\n\nStarter memory inserted:\n\n- Type: `convention`\n- Content: `Fossel is active for this repo. Use store_context to save context.`\n\n## MCP Tools\n\n- `store_context`: Save a new memory for a repository.\n- `get_repo_context`: Fetch recent memories for a repository, grouped by type. Pinned entries are always listed first and marked `📌 Pinned`.\n- `search_memory`: Full-text search memories across all repos or a single repo.\n- `delete_memory`: Delete a memory by id.\n- `update_memory`: Update memory content and/or type by numeric id.\n- `pin_memory`: Pin a memory by numeric id.\n- `unpin_memory`: Unpin a memory by numeric id.\n- `summarize_repo_context`: Return a structured markdown summary for a repo.\n\n## Tool Examples\n\n### `update_memory`\n\nInput:\n\n```json\n{\n  \"id\": 12,\n  \"content\": \"Use `pnpm` workspaces for all package scripts.\",\n  \"memory_type\": \"convention\"\n}\n```\n\n### `pin_memory`\n\nInput:\n\n```json\n{\n  \"id\": 12\n}\n```\n\n### `summarize_repo_context`\n\nInput:\n\n```json\n{\n  \"repo\": \"RocketChat\"\n}\n```\n\nOutput format:\n\n```md\nFossel Context Summary: RocketChat\n\n📌 Pinned\n- (12) Always run test matrix before merge.\n\nConventions\n- (3) Use feature flags for UI experiments.\n\nBug Fixes\n- (5) Fixed webhook retries by making queue idempotent.\n```\n\n## Cursor MCP Config\n\nAdd this to your Cursor MCP configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"fossel\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"fossel\"]\n    }\n  }\n}\n```\n\n## Claude Desktop MCP Config\n\nAdd this to your Claude Desktop MCP config:\n\n```json\n{\n  \"mcpServers\": {\n    \"fossel\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"fossel\"]\n    }\n  }\n}\n```\n\n## Development\n\n```bash\nnpm run dev\n```\n\nThis starts the local MCP server over stdio.\n\n## Build\n\n```bash\nnpm run build\n```\n\n## Run Built Server\n\n```bash\nnpm run start\n```\n\n## Notes\n\n- Fossel is local-first: data remains on your machine.\n- FTS5 is used for V1 search (no `sqlite-vec`).\n- Optional: set `FOSSEL_DB_PATH` to override the default database path for testing.\n- DB schema changes are managed via startup migrations in `src/db/migrate.ts`.\n","readmeFilename":"README.md"}