harper
Harper is an open-source Node.js performance platform that unifies database, cache, application, and messaging layers into one in-memory process.
Install / Use
claude mcp add HarperFast -- npx -y github:HarperFast/harperIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
CommunicationSupported Platforms
Our assessment of harper
harper scores 50/100 on our quality scale, 401st of 407 Communication skills we index.
Its MCP Server is 12 KB long, written without headings and no code examples: a thorough specification that gives an agent plenty to work with.
It has no GitHub stars yet, so there is no community track record; judge it on its content.
Maintenance, license and trust
- We could not determine when the repository was last updated.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 68/100, with 3 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
harper compared with similar skills
All 4 of these similar skills score higher than harper; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| harper (this skill)by HarperFast | 50 | 0 | — | MCP Server |
| Agent-Reachby Panniantong | 100 | 104.8k | 2d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 78.0k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.6k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 90.0k | today | MCP Server |
Frequently asked questions
- How do I install harper?
- Run
claude mcp add HarperFast -- npx -y github:HarperFast/harper. The install tabs above show the steps for each supported agent. - Which AI agents does harper work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is harper safe to use?
- It declares no license and scores 68/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is harper still maintained?
- We could not determine when the repository was last updated.
Skill content
View source on GitHub{ "name": "harper", "productName": "Harper", "description": "Harper is an open-source Node.js performance platform that unifies database, cache, application, and messaging layers into one in-memory process.", "version": "5.3.1", "license": "Apache-2.0", "homepage": "https://harper.fast", "bugs": { "url": "https://github.com/harperfast/harper/issues", "email": "opensource@harperdb.io" }, "author": { "name": "HarperDB, Inc.", "email": "opensource@harperdb.io", "url": "https://harper.fast" }, "contributors": [], "repository": { "type": "git", "url": "https://github.com/harperfast/harper.git" }, "bin": { "harper": "./dist/bin/harper.js" }, "files": [ "agent", "bin", "CODE_OF_CONDUCT.md", "components", "config", "config-app.schema.json", "config-root.schema.json", "dataLayer", "dist", "index.", "json", "launchServiceScripts", "README.md", "resources", "schema.graphql", "security", "SECURITY.md", "server", "sqlTranslator", "static", "studio", "SUPPORT.md", "upgrade", "utility", "v1.", "v2.", "validation" ], "scripts": { "build": "node build-tools/build-dist.mjs", "build:watch": "tsc --project tsconfig.build.json --watch --incremental", "typecheck": "tsc --project tsconfig.json", "typecheck:fast": "npx -y -p typescript@7.0.2 tsc --noEmit --project tsconfig.json", "test:types": "tsc --project unitTests/types/tsconfig.json", "package": "./build-tools/build.sh", "lint": "oxlint --format stylish --deny-warnings .", "lint:required": "oxlint --format stylish --quiet .", "check:design-docs": "node build-tools/check-design-docs.mjs", "check:unit-partition": "node build-tools/check-unit-partition.mjs", "lint:fix": "npm run lint -- --fix", "format:check": "prettier --check .", "format:write": "prettier --write .", "test:bench": "node --test "benchmarks/**/.test.mts"", "test:integration": "harper-integration-test-run", "test:integration:all": "npm run test:integration -- "integrationTests//*.test.ts" "integrationTests//.test.mjs"", "test:integration:mcp": "npm run test:integration -- "integrationTests/mcp/**/.test.ts"", "test:integration:bun": "HARPER_RUNTIME=bun harper-integration-test-run", "test:unit": "mocha", "test:unit:main": "mocha "unitTests//*test.*js" --exclude "unitTests/apiTests//" --exclude "unitTests/dataLayer/harperBridge/**/" --exclude "unitTests/resources//*"", "test:unit:main:core": "npm run test:unit:main -- --exclude "unitTests/components//" --exclude "unitTests/server/**/"", "test:unit:main:components": "mocha "unitTests/components//*test.*js"", "test:unit:main:server": "mocha "unitTests/server//test.js"", "test:unit:all": "npm run test:unit:main && npm run test:unit:apitests && npm run test:unit:resources && npm run test:unit:lmdb", "test:unit:lmdb": "HARPER_STORAGE_ENGINE=lmdb npm run test:unit:resources && HARPER_STORAGE_ENGINE=lmdb mocha unitTests/server/preconditions.test.js unitTests/server/durableSessionResume.test.js && HARPER_STORAGE_ENGINE=lmdb npm run test:unit:apitests && HARPER_STORAGE_ENGINE=lmdb npm run test:unit:bin", "test:unit:components": "mocha "unitTests/components/**/.js"", "test:unit:resources": "mocha "unitTests/resources/**/.js" --exclude "unitTests/resources//*.bench.js"", "test:unit:resources:core": "mocha "unitTests/resources//.js" --exclude "unitTests/resources/**/.bench.js" --exclude "unitTests/resources//{[Ii]ndex,[Hh]nsw,[Vv]ector}.js"", "test:unit:resources:core:a-q": "mocha "unitTests/resources//[a-qA-Q].js" --exclude "unitTests/resources/**/.bench.js" --exclude "unitTests/resources//{[Ii]ndex,[Hh]nsw,[Vv]ector}.js"", "test:unit:resources:core:r-z": "mocha "unitTests/resources//.js" --exclude "unitTests/resources/**/.bench.js" --exclude "unitTests/resources//{[Ii]ndex,[Hh]nsw,[Vv]ector}.js" --exclude "unitTests/resources//[a-qA-Q].js"", "test:unit:resources:indexes": "mocha "unitTests/resources/**/{[Ii]ndex,[Hh]nsw,[Vv]ector}.js" --exclude "unitTests/resources/**/.bench.js"", "bench": "mocha "unitTests/resources/caching-rocks-database.bench.js" "unitTests/resources/indexRangeSelect.bench.js" "unitTests/resources/originClosedFloor.bench.js" "unitTests/resources/liveSubscriptionReauth.bench.js"", "test:unit:bin": "mocha "unitTests/bin//*.js"", "test:unit:apitests": "node ./dist/bin/harper.js stop && mocha "unitTests/apiTests//-test.mjs"", "test:unit:logging": "mocha "unitTests/utility/logging/.js"", "test:unit:security": "mocha "unitTests/security//*.js"", "test:unit:dataLayer": "mocha "unitTests/dataLayer//.js" --exclude "unitTests/dataLayer/harperBridge/**/"", "test:unit:backup": "mocha "unitTests/dataLayer/rocksdbBackup.test.js" "unitTests/dataLayer/blobBackup.test.js" "unitTests/dataLayer/restoreMarker.test.js" "unitTests/bin/backup.test.js"", "test:unit:utility": "mocha "unitTests/utility//*.js" --exclude "unitTests/utility/logging//"", "test:unit:server": "mocha "unitTests/server/**/.js"", "test:unit:config": "mocha "unitTests/config//*.js"", "test:unit:windows": "node unitTests/windowsGate.mjs", "test:unit:typestrip": "node unitTests/runTypeStripTests.mts --source-only", "test:unit:typestrip:all": "node unitTests/runTypeStripTests.mts "unitTests//test.js"", "test:unit:typestrip:resources": "node unitTests/runTypeStripTests.mts --source-only "unitTests/resources/**/.js" --exclude "unitTests/resources/**/.bench.js"", "test:unit:typestrip:main": "node unitTests/runTypeStripTests.mts", "test:unit:typestrip:resources:core": "node unitTests/runTypeStripTests.mts --source-only "unitTests/resources//*.js" --exclude "unitTests/resources//.bench.js" --exclude "unitTests/resources/**/{[Ii]ndex,[Hh]nsw,[Vv]ector}.js"", "test:unit:typestrip:resources:core:a-q": "node unitTests/runTypeStripTests.mts --source-only "unitTests/resources/**/[a-qA-Q].js" --exclude "unitTests/resources//*.bench.js" --exclude "unitTests/resources//{[Ii]ndex,[Hh]nsw,[Vv]ector}.js"", "test:unit:typestrip:resources:core:r-z": "node unitTests/runTypeStripTests.mts --source-only "unitTests/resources//*.js" --exclude "unitTests/resources//.bench.js" --exclude "unitTests/resources/**/{[Ii]ndex,[Hh]nsw,[Vv]ector}.js" --exclude "unitTests/resources/**/[a-qA-Q].js"", "test:unit:typestrip:resources:indexes": "node unitTests/runTypeStripTests.mts --source-only "unitTests/resources//{[Ii]ndex,[Hh]nsw,[Vv]ector}.js" --exclude "unitTests/resources//.bench.js"", "test:types:unit": "tsc --project unitTests/tsconfig.harness.json" }, "imports": { "#src/.js": { "typestrip": "./.js", "default": "./dist/.js" }, "#src/globals": { "typestrip": "./globals.js", "default": "./dist/globals.js" }, "#src/utility/packageUtils": { "typestrip": "./utility/packageUtils.js", "default": "./dist/utility/packageUtils.js" }, "#src/utility/terms/certificates": { "typestrip": "./utility/terms/certificates.js", "default": "./dist/utility/terms/certificates.js" }, "#src/": { "import": { "typestrip": "./.ts", "default": "./dist/.js" }, "require": { "typestrip": "./.ts", "default": "./dist/.js" } }, "#js/": { "typestrip": null, "default": "./dist/*.js" } }, "engines": { "node": "^22.18.0 || >=24.0.0" }, "devEngines": { "runtime": { "name": "node", "version": ">=22", "onFail": "error" }, "packageManager": { "name": "npm", "onFail": "error" } }, "exports": { ".": { "types": "./dist/index.d.ts", "default": "./dist/index.js" } }, "devDependencies": { "@aws-sdk/client-s3": "^3.1012.0", "@aws-sdk/lib-storage": "3.1149.0", "@harperfast/code-guidelines": "^0.1.2", "@harperfast/integration-testing": "^1.0.0", "@modelcontextprotocol/sdk": "^1.29.0", "@types/busboy": "^1.5.4", "@types/fs-extra": "^11.0.4", "@types/gunzip-maybe": "^1.4.3", "@types/is-number": "^7.0.5", "@types/jsonwebtoken": "^9.0.10", "@types/lodash": "^4.17.23", "@types/micromatch": "^4.0.9", "@types/mocha": "^10.0.10", "@types/properties-reader": "^2.1.3", "@types/sinon": "^22.0.0", "@types/tar-fs": "^2.0.4", "@types/tar-stream": "^3.1.4", "axios": "1.20.0", "chai": "^6.2.0", "chai-as-promised": "^8.0.2", "chai-integer": "^0.1.0", "compression": "^1.8.1", "compression-1.7": "npm:compression@1.8.2", "eventsource": "^5.0.0", "globals": "^17.0.0", "intercept-stdout": "0.1.2", "mkcert": "^3.2.0", "mocha": "^12.0.0", "mqtt": "^5.15.1", "on-finished": "^2.4.1", "on-headers": "^1.1.0", "openai": "^7.0.0", "oxlint": "^1.31.0", "prettier": "~3.9.0", "rewire": "^9.0.1", "sinon": "21.0.3", "sinon-chai": "^4.0.1", "supertest": "^7.1.4", "tsx": "^4.20.6", "typescript": "^5.8.2", "undici": "^8.0.0", "uWebSockets.js": "https://github.com/uNetworking/uWebSockets.js/archive/624987739d4da0acb628aaf2a10fc43e7ce27c5c.tar.gz", "why-is-node-still-running": "^1.0.0" }, "dependencies": { "@endo/static-module-record": "^1.1.2", "@fastify/autoload": "^6.3.1", "@fastify/compress": "^9.0.0", "@fastify/cors": "^11.2.0", "@fastify/static": "^10.0.0", "@harperfast/extended-iterable": "1.0.5", "@harperfast/rocksdb-js": "2.12.0", "@harperfast/skills": "^1.10.8", "@inquirer/confirm": "^6.3.2", "@inquirer/input": "^5.1.6", "@inquirer/password": "^5.2.2", "@inquirer/select": "^5.2.5", "@turf/area": "6.5.0", "@turf/boolean-contains": "6.5.0", "@turf/boolean-disjoint": "6.5.0", "@turf/boolean-equal": "6.5.0", "@turf/circle": "6.5.0", "@turf/difference": "6.5.0", "@turf/distance": "6.5.0", "@turf/helpers": "6.5.0", "@turf/length": "6.5.0", "alasql": "4.20.0", "amaro": "^1.1.8", "argon2": "0.45.1", "asn1js": "3.0.10", "busboy": "^1.6.0", "cbor-x": "1.6.6", "chalk": "4.1.2", "chokidar": "^5.0.0", "cli-progress": "3.12.0", "clone": "2.1.2", "dotenv": "^16.4.7", "easy-ocsp": "1.3.2", "fast-glob": "3.3.3", "fastify": "^5.8.2", "fastify-plugin": "^5.1.0", "fs-extra": "11.4.1", "graphql": "^16.10.0", "graphql-http": "^1.22.4", "gunzip-maybe": "1.4.2", "human-readable-ids": "1.0.4", "is-number": "7.0.0", "joi": "17.13.8", "json-bigint-fixes": "1.1.0", "jsonata": "1.8.9", "jsonwebtoken": "9.0.3", "lmdb": "3.5.7", "lodash": "^4.17.23", "mathjs": "11.12.0", "micromatch": "^4.0.8", "minimist": "1.2.8", "moment": "2.31.0", "mqtt-packet": "~9.0.1", "msgpackr": "2.1.0", "needle": "3.5.0", "node-forge": "^1.3.1", "node-stream-zip": "1.16.0", "normalize-path": "^3.0.0", "ora": "8.2.0", "ordered-binary": "1.6.2", "papaparse": "5.7.0", "passport": "0.7.0", "passport-http": "0.3.0", "passport-local": "1.0.0", "pino": "8.21.0", "pkijs": "3.4.1", "properties-reader": "2.3.0", "recursive-iterator": "3.3.0", "semver": "7.8.5", "send": "^1.2.0", "ses": "^1.15.0", "stream-chain": "2.2.5", "stream-json": "1.9.1", "structon": "1.1.0", "systeminformation": "^5.31.4", "tar-fs": "^3.1.2", "tar-stream": "3.2.0", "ulidx": "0.5.0", "uuid": "11.1.1", "validate.js": "0.13.1", "weak-lru-cache": "^1.2.2", "ws": "8.22.0", "yaml": "2.9.1" }, "overrides": { "alasql": { "xlsx": "0.18.5" } }, "optionalDependencies": { "@harperfast/fulltext": "0.6.0", "@harperfast/hnsw": "0.4.0", "bufferutil": "4.1.0", "segfault-handler": "1.3.0" }, "peerDependencies": { "@aws-sdk/client-bedrock-runtime": "^3.0.0", "@aws-sdk/client-s3": "^3.0.0", "@aws-sdk/lib-storage": "^3.0.0", "uWebSockets.js": "20.68.0" }, "peerDependenciesMeta": { "@aws-sdk/client-bedrock-runtime": { "optional": true }, "@aws-sdk/client-s3": { "optional": true }, "@aws-sdk/lib-storage": { "optional": true }, "uWebSockets.js"
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
104.8kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
78.0kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
CowAgent
47.6kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Scrapling
90.0k🕷️ The BEST Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
