huml MCP server
Commit 15 Okt 2026Menyediakan memori berbasis markdown yang terbagi untuk AI client seperti Claude, ChatGPT, dan Cursor guna menyimpan dan mengambil konteks.
Juga dikenal sebagai CodeBlastr/huml
- Stars
- 1
- Tools
- 7
- Unduhan, 30 hari
- —
- Versi terbaru
- —
- Commit terakhir
- 15 Okt 2026
- Lisensi
- MIT
Apa itu huml MCP?
huml adalah MCP server. Menyediakan memori berbasis markdown yang terbagi untuk AI client seperti Claude, ChatGPT, dan Cursor guna menyimpan dan mengambil konteks. Server ini menyediakan 7 tool, seperti memory_list, memory_read, memory_write.
Ringkasan dibuat dari README proyek
Tentang huml MCP server
huml memungkinkan developer yang menggunakan tool seperti Claude, ChatGPT, dan Cursor untuk menyediakan memori berbasis markdown yang terpadu bagi AI agent. Alih-alih membiarkan konteks terjebak dalam ekosistem satu vendor saja, MCP server ini memungkinkan berbagai AI client untuk berbagi satu repositori file markdown biasa. Hal ini memastikan bahwa keputusan proyek atau preferensi pribadi yang dibagikan ke Claude Code akan segera tersedia saat Anda beralih ke ChatGPT.
User men-deploy instance mereka sendiri ke akun Cloudflare menggunakan Workers, D1 untuk penyimpanan SQLite, dan Workers KV. Karena server ini hanya mengelola file dan tidak memanggil LLM secara langsung, tidak ada biaya inference atau kebutuhan API key tambahan agar server dapat berfungsi. Server ini menggunakan SQLite FTS5 untuk full-text search dan menyediakan tool khusus seperti memory_list, memory_read, memory_write, dan memory_search. Sistem ini menangani akses konkuren dengan mewajibkan pengecekan versi saat proses write, sehingga mencegah agent menimpa perubahan satu sama lain tanpa proses merge.
Apa yang bisa Anda lakukan dengannya
- 1Sinkronisasi konteks antar berbagai AI toolSeorang developer dapat membagikan keputusan proyek atau preferensi penulisan antara Claude dan ChatGPT agar konteks tetap konsisten.
- 2Mengelola pengetahuan pribadi via markdownAnda dapat mengedit, mengekspor, atau mengisi memori AI Anda secara manual menggunakan folder dan file markdown standar.
- 3Mencegah kehilangan data saat penggunaan agent secara bersamaanBeberapa AI agent dapat berinteraksi dengan file memori yang sama tanpa secara tidak sengaja menimpa update satu sama lain.
- 4Mencari melalui konteks yang tersimpanAI client dapat menemukan informasi spesifik dengan cepat di dalam memori bersama menggunakan full-text search.
Ditulis berdasarkan README proyek. Setiap use case diperiksa terhadap kutipan dari README tersebut.
Tool huml MCP 7
Terdeteksi dari READMEmemory_listmemory_readmemory_writememory_appendmemory_str_replacememory_deletememory_search
| memory_list | — | |
| memory_read | — | |
| memory_write | — | |
| memory_append | — | |
| memory_str_replace | — | |
| memory_delete | — | |
| memory_search | — |
Pengecekan otomatis
Berjalan 14 Nov 2026Laporan lengkap →Belum diverifikasi. Sebuah server memerlukan skor 80, tidak ada temuan serius, dan data yang cukup untuk kami periksa. Cara kerja checks · Yang perlu diperbaiki untuk menambah poin
- Source repository terhubung dan dapat dijangkaucodeblastr/huml is public and reachablegithub.com/codeblastr/huml ↗Lolos
- Nama paket mencantumkan repositori ini sebagai sumbernyaTidak diperiksa
- Provenance build (atestasi Sigstore)Tidak diperiksa
- Lisensi open source (OSI)MITspdx.org/licenses/MIT.html ↗Lolos
- Ada commit atau release dalam satu tahun terakhirLast commit or release 2026-10-15github.com/codeblastr/huml ↗Lolos
- OpenSSF ScorecardTidak diperiksa
- Nama package tidak mirip dengan package populerTidak diperiksa
- Tidak ada advisory kritis pada paket atau dependensinyaTidak diperiksa
- Tidak ada instruksi tersembunyi untuk model7 tool descriptions and the README read; no override phrases, credential paths or hidden charactersLolos
- Tools yang bersifat destruktif telah diberi labelNo tool named like delete, drop or execLolos
- Endpoint remote merespons handshake MCPTidak diperiksa
README
Lihat di GitHubhuml
A simple, open source framework for connecting an AI executive assistant to all your tools. It keeps your context in one place, so every AI service and agent you connect works from the same memory.
In practice, huml is a small MCP server that stores plain markdown files. Claude, ChatGPT, Cursor, Claude Code, or any other MCP client can list, read, write, edit and search those files. You tell Claude Code about a client, a project decision, or how you like your emails written, and ChatGPT already knows it the next time you open it. Your context is no longer stuck inside one vendor's memory feature.
It's about 1,100 lines of TypeScript with three runtime dependencies. You deploy it to your own Cloudflare account, and the whole thing runs on the free plan for personal use.
Why it's this simple
Most AI memory projects are pipelines: they extract "facts" with an LLM, embed them into a vector database, build knowledge graphs, and decide for you what's worth remembering. huml doesn't do any of that. The models you already pay for are good at reading and writing text, so huml gives them a shared folder of markdown files and stays out of the way.
That buys you a few things:
- You can read and edit your memory yourself. It's markdown files with paths like
/people/jane.mdand/projects/launch.md. There are no opaque embeddings or extracted triples. You can export it, grep it, or seed it from a notes folder you already have. - It has no opinions about how you organize things. The only rule is that each file has a unique
namein its frontmatter. Folders, file layout and writing style are up to you (or your agents). huml has no built-in schema for "people", "tasks" or "preferences". - The server never calls an LLM. No API keys, no inference cost, no surprise bills, and nothing leaves your deployment except to the clients you connect. All the reasoning happens in the AI client you're already using.
- It works with any MCP client. No SDK, no plugin per vendor. If a tool speaks MCP over HTTP, it can connect.
- Many agents can use it at once without clobbering each other. Every write must include the version it read. If another session changed the file in the meantime, the write is rejected with the current content, and the agent merges its change and retries. There are no locks or sessions.
- It's small enough to audit. You're handing this server your personal and work context, and you can read all of it in an afternoon.
FAQ
Is this only for Claude? No. It's a standard MCP server. The setup instructions below cover Claude Code, Claude.ai, ChatGPT and Cursor, and anything else that supports remote MCP servers with a bearer token or OAuth should work too.
Do I need Cloudflare?
For this implementation, yes. It runs on Cloudflare Workers, stores files in D1 (Cloudflare's SQLite), and keeps OAuth state in Workers KV. A free Cloudflare account is enough; you don't need a paid plan or a domain on Cloudflare (a *.workers.dev URL works). Nothing about the design depends on Cloudflare, though: the tool contract is plain MCP, and storage is SQLite with FTS5 full-text search. Porting it to Node, Bun or Deno with local SQLite would mean replacing src/store.ts and the OAuth provider in src/index.ts. That port doesn't exist yet, and contributions are welcome.
Is huml.ai a hosted service I can sign up for?
No. huml.ai is the author's own deployment, and each deployment belongs to one person. You deploy your own copy (see Self-hosting) and point your clients at your URL. The examples below use https://huml.example.com as a stand-in.
Where does my data live? In a D1 database in your Cloudflare account. Only you hold the tokens. Client tokens are stored as SHA-256 hashes, and repeated failed logins from an IP get locked out.
Can it be shared by several people? Not yet. There's one memory per deployment, and every token has full read/write access to it. A team can share a deployment if everyone should see everything.
How is this different from ChatGPT or Claude's built-in memory? Built-in memory only works inside one product, and you can't choose what it keeps or how it's organized. huml is shared across every tool you connect, and it's just files you can see and edit.
How does search work without embeddings?
SQLite FTS5 with Porter stemming, ranked by BM25, over each file's name, description and content. With a few hundred to a few thousand well-named files, that plus memory_list is plenty for an agent to find what it needs. If you want semantic search, the retriever is behind an interface, and a Cloudflare Vectorize backend is stubbed out (see Layout). The tools stay the same either way.
How do my agents know to use it?
The server sends MCP instructions telling clients how to search, read and write safely. Whether a client checks memory on its own depends on the client, so it helps to add a line to your system prompt, CLAUDE.md, or custom instructions, e.g. "Check huml memory for context about people, projects and my preferences before answering, and save anything worth remembering." For agents that support skills, the agent skill covers this in more detail.
Tools
| Tool | Arguments | Returns |
|---|---|---|
memory_list |
path_prefix? |
path, name, description, aliases, updated_at (no content) |
memory_read |
path (string or array) |
content, version |
memory_write |
path, content, if_version |
new version (if_version: "new" creates) |
memory_append |
path, content, if_version |
new version |
memory_str_replace |
path, old_str, new_str, if_version |
new version; rejected on 0 or >1 matches |
memory_delete |
path, if_version |
deleted: true |
memory_search |
query, limit? |
path, name, snippet |
If if_version doesn't match the stored version, nothing is modified. The tool returns version_conflict with the current content and version, so the client can merge its change and retry.
Rules:
- Paths start with
/, use onlyA-Z a-z 0-9 - _ / ., and end in.md. - Each file is capped at 100KB.
- Every file needs frontmatter with a
name, and names are unique:
---
name: acme-corp
description: one line, what this covers and when to read it
aliases: [Acme, Acme Corporation]
---
- content lines
Protocol details: the endpoint is /mcp over Streamable HTTP. It supports MCP 2026-07-28 (stateless) and the older 2025-11-25, 2025-06-18 and 2025-03-26 initialize-based clients. Auth is either a static bearer token (Claude Code, Cursor) or OAuth 2.1 (Claude.ai, ChatGPT), where the consent page asks you for a huml token.
Self-hosting
You need Node 22+ and a Cloudflare account (the free plan is fine).
-
Clone and install:
git clone https://github.com/CodeBlastr/huml && cd huml npm install -
Copy
.env.exampleto.envand fill inCLOUDFLARE_API_TOKENandCLOUDFLARE_ACCOUNT_ID. The API token needs Workers Scripts:Edit, D1:Edit, Workers Routes:Edit and Workers KV Storage:Edit. (Runningnpx wrangler loginalso works for thenpx wranglercommands below.) -
Create your own database and KV namespace, then replace the
database_idand the KVidinwrangler.tomlwith the IDs these commands print:npx wrangler d1 create huml npx wrangler kv namespace create OAUTH_KV -
Point
wrangler.tomlat your URL:- Custom domain (the domain must be a zone in your Cloudflare account): change the
routespattern,PUBLIC_URL, and the first entry inALLOWED_ORIGINSto your domain. - No domain: set
workers_dev = true, delete theroutesblock, and setPUBLIC_URL(and the firstALLOWED_ORIGINSentry) tohttps://huml.<your-subdomain>.workers.dev.
- Custom domain (the domain must be a zone in your Cloudflare account): change the
-
Create the tables, deploy, and set a root token:
npm run migrate:remote npm run deploy openssl rand -hex 32 | npx wrangler secret put AUTH_TOKEN -
Set
HUML_URLin.envtohttps://<your-host>/mcp, then issue a token for each client (see below). If you already keep notes in markdown, you can import them withnpm run seed.
Connecting clients
Give each client its own token, so you can revoke one without touching the others:
npm run tokens -- issue claude-code # prints the token once
Claude Code
claude mcp add --transport http --scope user huml https://huml.example.com/mcp \
--header "Authorization: Bearer <token>"
Cursor
Add this to ~/.cursor/mcp.json, or to .cursor/mcp.json in a project:
{
"mcpServers": {
"huml": {
"url": "https://huml.example.com/mcp",
"headers": { "Authorization": "Bearer <token>" }
}
}
}
Claude.ai
- Go to Settings → Connectors → Add custom connector.
- Name it
humland set the URL tohttps://huml.example.com/mcp. Leave the OAuth client ID and secret empty; the connector registers itself. - Click Connect. On your huml consent page, paste a token (e.g. from
npm run tokens -- issue claude-ai) and click Allow.
ChatGPT
- Go to Settings → Apps & Connectors → Advanced settings and turn on Developer mode.
- Under Apps & Connectors, click Create. Set the name to
huml, the MCP server URL tohttps://huml.example.com/mcp, and Authentication to OAuth. - Approve on your huml consent page with a token (e.g. from
npm run tokens -- issue chatgpt).
An OAuth connection is tied to the token that approved it. Revoking that token (or rotating AUTH_TOKEN, if that's what you used) disconnects the client.
Agent skill
skills/huml/SKILL.md is an agent skill in the open SKILL.md format. It tells an agent when to check memory, what is worth saving, how to write with if_version and handle conflicts, and what search can and can't do. It only works alongside a connected huml server; it doesn't replace the setup above.
Claude Code: copy the folder into your personal skills (all projects) or one project's skills:
mkdir -p ~/.claude/skills && cp -r skills/huml ~/.claude/skills/ # all projects
mkdir -p .claude/skills && cp -r skills/huml .claude/skills/ # one project
Other SKILL.md-compatible agents: copy the skills/huml/ folder into the agent's skills directory, as described in its docs.
Admin
All admin commands run against your deployed database. Add --local to target the wrangler dev database instead.
npm run tokens -- issue <label> # new client token (shown once)
npm run tokens -- list
npm run tokens -- revoke <id>
npm run tokens -- unlock # show IPs with failed-auth counts
npm run tokens -- unlock <ip> # clear a lockout (10 failures / 15 min → 429)
npm run tokens -- unlock --all
npm run tokens -- rebuild # rebuild the FTS index if search looks wrong
Import a local folder of markdown. ./notes/areas/x.md becomes /areas/x.md; use --prefix to import under a different path:
npm run seed -- ./notes [--prefix /imported]
Run the end-to-end acceptance check against HUML_URL. It creates and deletes one doc under /_smoke/, trips the lockout on purpose, then clears it:
npm run smoke
To rotate the root token:
openssl rand -hex 32 | npx wrangler secret put AUTH_TOKEN
Development
npm test # vitest against a local D1
npm run dev # http://127.0.0.1:8787/mcp
Credentials live in three separate places, and none of them are ever committed:
| What | Where |
|---|---|
Wrangler CLI auth (CLOUDFLARE_API_TOKEN, CLOUDFLARE_ACCOUNT_ID) and script token (HUML_TOKEN) |
.env (gitignored; see .env.example) |
Local dev AUTH_TOKEN |
.dev.vars (gitignored; see .dev.vars.example) |
Production AUTH_TOKEN |
wrangler secret put AUTH_TOKEN, only |
Layout
src/index.ts entry: OAuth provider, Origin check, failed-auth lockout
src/mcp.ts JSON-RPC / MCP protocol handling (both protocol eras)
src/tools.ts tool schemas and handlers
src/store.ts D1 storage with compare-and-swap writes
src/frontmatter.ts path, size and frontmatter validation
src/auth.ts token checks and rate limiting
src/oauth-ui.ts /authorize consent page
src/retrieval/ Retriever interface, LexicalRetriever (FTS5), VectorRetriever stub
migrations/ D1 schema
scripts/ seed, tokens (admin), smoke (acceptance test)
skills/huml/ agent skill (SKILL.md) for clients that support skills
Search can move to Cloudflare Vectorize without changing the tool contract:
- Implement
src/retrieval/vector.ts. - Uncomment the
[[vectorize]]and[ai]bindings inwrangler.toml.
makeRetriever() picks VectorRetriever automatically once both bindings exist.
How it was built
huml was written with Claude Code from a single detailed prompt, plus a few short follow-ups. The full prompt is in PROMPT.md, verbatim, so you can compare what was asked for with what was built.
License
MIT
Pertanyaan tentang huml MCP
Tool apa yang disediakan huml MCP?
Server ini menyediakan 7 tool, termasuk memory_list, memory_read, memory_write, memory_append, memory_str_replace.
Apakah ini hanya untuk Claude?
Tidak, ini adalah MCP server standar yang bekerja dengan Claude Code, Claude.ai, ChatGPT, Cursor, dan client apa pun yang mendukung remote MCP servers.
Apakah saya memerlukan Cloudflare?
Untuk implementasi spesifik ini, ya, karena berjalan di Cloudflare Workers dan menggunakan penyimpanan D1 serta KV, meskipun desainnya tidak sepenuhnya bergantung pada Cloudflare.
Di mana data saya disimpan?
Data Anda disimpan dalam database D1 di dalam akun Cloudflare Anda sendiri.
Apa bedanya dengan memori bawaan ChatGPT atau Claude?
Berbeda dengan memori bawaan yang terbatas pada satu produk saja, huml dapat dibagikan ke semua tool yang terhubung dan menggunakan file markdown yang dapat diedit.