huml MCP sunucusu
Commit 15 Eki 2026Claude, ChatGPT ve Cursor gibi AI istemcileri için bağlamı saklayabilecekleri ve geri çağırabilecekleri, markdown tabanlı ortak bir bellek sunar.
Ayrıca bilinen adı CodeBlastr/huml
- Yıldızlar
- 1
- Araçlar
- 7
- İndirmeler, 30 gün
- —
- En son sürüm
- —
- Son commit
- 15 Eki 2026
- Lisans
- MIT
huml MCP nedir?
huml bir MCP sunucusudur. Claude, ChatGPT ve Cursor gibi AI istemcileri için bağlamı saklayabilecekleri ve geri çağırabilecekleri, markdown tabanlı ortak bir bellek sunar. 7 araç sunar; örneğin memory_list, memory_read, memory_write.
Özet, projenin README dosyasından oluşturuldu
huml MCP sunucusu hakkında
huml, Claude, ChatGPT ve Cursor gibi araçlar kullanan geliştiriciler için AI agent'larına birleşik, markdown tabanlı bir bellek sağlar. Bağlamın tek bir sağlayıcının ekosistemine hapsolması yerine, bu MCP server birden fazla AI istemcisinin tek bir düz markdown dosyası deposunu paylaşmasına olanak tanır. Bu sayede, Claude Code ile paylaştığınız bir proje kararı veya kişisel tercih, ChatGPT'ye geçtiğinizde anında kullanılabilir hale gelir.
Kullanıcılar; Workers, SQLite depolama için D1 ve Workers KV kullanarak kendi örneklerini bir Cloudflare hesabına dağıtırlar. Server sadece dosyaları yönettiği ve kendisi bir LLM çağırmadığı için, server'ın çalışması için herhangi bir çıkarım maliyeti veya ekstra API anahtarı gerekmez. Tam metin araması için SQLite FTS5 kullanır; memory_list, memory_read, memory_write ve memory_search gibi özel araçlar sunar. Sistem, yazma işlemleri sırasında versiyon kontrolleri yaparak eşzamanlı erişimi yönetir ve agent'ların birbirlerinin değişikliklerini bir birleştirme işlemi yapmadan üzerine yazmasını engeller.
Neler yapabilirsiniz
- 1Farklı AI araçları arasında bağlam senkronizasyonuBir geliştirici, bağlamın tutarlı kalması için proje kararlarını veya yazım tercihlerini Claude ve ChatGPT arasında paylaşabilir.
- 2Markdown aracılığıyla kişisel bilgi yönetimiStandart markdown dosyaları ve klasörleri kullanarak AI belleğinizi manuel olarak düzenleyebilir, dışa aktarabilir veya önceden doldurabilirsiniz.
- 3Eşzamanlı agent kullanımı sırasında veri kaybını önlemeBirden fazla AI agent, birbirlerinin güncellemelerini yanlışlıkla ezmeden aynı bellek dosyalarıyla etkileşime girebilir.
- 4Saklanan bağlam içinde arama yapmaBir AI istemcisi, tam metin araması kullanarak paylaşılan bellek içindeki belirli bilgileri hızlıca bulabilir.
Projenin README dosyasından alınmıştır. Her kullanım durumu, oradaki bir alıntı ile kontrol edilir.
huml MCP araçları 7
README dosyasından algılandımemory_listmemory_readmemory_writememory_appendmemory_str_replacememory_deletememory_search
| memory_list | — | |
| memory_read | — | |
| memory_write | — | |
| memory_append | — | |
| memory_str_replace | — | |
| memory_delete | — | |
| memory_search | — |
Otomatik kontroller
Çalıştırıldı 14 Kas 2026Tam rapor →Henüz doğrulanmadı. Bir sunucunun 80 puana, ciddi bir bulgu olmamasına ve kontrol edebilmemiz için yeterli veriye ihtiyacı vardır. Kontroller nasıl çalışır · Daha fazla puan için nelerin düzeltileceği
- Kaynak deposu bağlantılı ve erişilebilircodeblastr/huml is public and reachablegithub.com/codeblastr/huml ↗Geçti
- Paket, bu depoyu kaynağı olarak gösteriyorKontrol edilmedi
- Derleme kökeni (Sigstore onayı)Kontrol edilmedi
- Açık kaynak lisansı (OSI)MITspdx.org/licenses/MIT.html ↗Geçti
- Son bir yıl içinde commit veya sürüm mevcutLast commit or release 2026-10-15github.com/codeblastr/huml ↗Geçti
- OpenSSF ScorecardKontrol edilmedi
- Paket adı popüler bir pakete yakın değilKontrol edilmedi
- Pakette veya bağımlılıklarında kritik uyarı yokKontrol edilmedi
- Modele yönelik gizli talimat yok7 tool descriptions and the README read; no override phrases, credential paths or hidden charactersGeçti
- Yıkıcı araçlar etiketlenmişNo tool named like delete, drop or execGeçti
- Uzak uç nokta MCP el sıkışmasına yanıt veriyorKontrol edilmedi
huml
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
huml MCP soruları
huml MCP hangi araçları sunar?
7 araç sunar; bunlar arasında memory_list, memory_read, memory_write, memory_append, memory_str_replace yer alır.
Bu sadece Claude için mi?
Hayır, Claude Code, Claude.ai, ChatGPT, Cursor ve uzak MCP server destekleyen tüm istemcilerle çalışan standart bir MCP server çözümüdür.
Cloudflare kullanmam gerekiyor mu?
Bu özel uygulama için evet; Cloudflare Workers üzerinde çalışır ve D1 ile KV depolama birimlerini kullanır, ancak tasarım tamamen Cloudflare'e bağımlı değildir.
Verilerim nerede tutuluyor?
Verileriniz, kendi Cloudflare hesabınız içindeki bir D1 veritabanında saklanır.
ChatGPT veya Claude'un yerleşik belleğinden farkı nedir?
Tek bir ürünle sınırlı olan yerleşik belleğin aksine huml, bağlı tüm araçlar arasında paylaşılır ve düzenlenebilir markdown dosyalarını kullanır.