Serveur MCP huml
Commit 15 oct. 2026Fournit une mémoire partagée basée sur le format markdown pour les clients IA tels que Claude, ChatGPT et Cursor afin de stocker et de récupérer du contexte.
Aussi connu sous CodeBlastr/huml
- Étoiles
- 1
- Outils
- 7
- Téléchargements, 30 jours
- —
- Dernière version
- —
- Dernier commit
- 15 oct. 2026
- Licence
- MIT
Qu'est-ce que huml MCP ?
huml est un serveur MCP. Fournit une mémoire partagée basée sur le format markdown pour les clients IA tels que Claude, ChatGPT et Cursor afin de stocker et de récupérer du contexte. Il expose 7 outils, comme memory_list, memory_read, memory_write.
Résumé généré à partir du README du projet
À propos du MCP server huml
huml permet aux développeurs utilisant des outils comme Claude, ChatGPT et Cursor de disposer d'une mémoire unifiée basée sur le markdown pour leurs agents IA. Au lieu de voir le contexte piégé dans l'écosystème d'un seul fournisseur, ce MCP server permet à plusieurs clients IA de partager un répertoire unique de fichiers markdown en texte brut. Cela garantit qu'une décision de projet ou une préférence personnelle partagée avec Claude Code est immédiatement disponible lorsque vous passez à ChatGPT.
Les utilisateurs déploient leur propre instance sur un compte Cloudflare en utilisant Workers, D1 pour le stockage SQLite et Workers KV. Comme le serveur gère uniquement des fichiers et n'appelle pas d'LLM lui-même, il n'y a pas de coûts d'inférence ni de clés API supplémentaires nécessaires au fonctionnement du serveur. Il utilise SQLite FTS5 pour la recherche plein texte et fournit des outils spécifiques tels que memory_list, memory_read, memory_write et memory_search. Le système gère les accès concurrents en exigeant des vérifications de version lors des écritures, empêchant ainsi les agents d'écraser les modifications des autres sans fusionner les données.
Ce que vous pouvez faire avec
- 1Synchronisation du contexte entre différents outils IAUn développeur peut partager des décisions de projet ou des préférences de rédaction entre Claude et ChatGPT afin que le contexte reste cohérent.
- 2Gestion des connaissances personnelles via markdownVous pouvez modifier manuellement, exporter ou initialiser la mémoire de votre IA en utilisant des fichiers et des dossiers markdown standards.
- 3Prévention de la perte de données lors de l'utilisation simultanée d'agentsPlusieurs agents IA peuvent interagir avec les mêmes fichiers de mémoire sans écraser accidentellement les mises à jour les uns des autres.
- 4Recherche dans le contexte stockéUn client IA peut localiser rapidement des informations spécifiques au sein de la mémoire partagée grâce à la recherche plein texte.
Extrait du README du projet. Chaque cas d'utilisation est vérifié par rapport à une citation du document.
Outils MCP huml 7
Détectés depuis le READMEmemory_listmemory_readmemory_writememory_appendmemory_str_replacememory_deletememory_search
| memory_list | — | |
| memory_read | — | |
| memory_write | — | |
| memory_append | — | |
| memory_str_replace | — | |
| memory_delete | — | |
| memory_search | — |
Vérifications automatisées
Exécuté le 14 nov. 2026Rapport complet →Pas encore vérifié. Un serveur nécessite un score de 80, aucune faille sérieuse et suffisamment de données pour que nous puissions effectuer les vérifications. Fonctionnement des vérifications · Ce qu'il faut corriger pour gagner des points
- Dépôt source lié et accessiblecodeblastr/huml is public and reachablegithub.com/codeblastr/huml ↗Réussi
- Le nom du package correspond au dépôt sourceNon vérifié
- Provenance du build (attestation Sigstore)Non vérifié
- Licence open source (OSI)MITspdx.org/licenses/MIT.html ↗Réussi
- Commit ou version publiée au cours de l'année écouléeLast commit or release 2026-10-15github.com/codeblastr/huml ↗Réussi
- OpenSSF ScorecardNon vérifié
- Nom du package non proche d'un package populaireNon vérifié
- Aucun avis critique dans le package ou ses dépendancesNon vérifié
- Aucune instruction cachée destinée au modèle7 tool descriptions and the README read; no override phrases, credential paths or hidden charactersRéussi
- Les outils destructifs sont étiquetésNo tool named like delete, drop or execRéussi
- Le point de terminaison distant répond à la poignée de main MCPNon vérifié
README
Voir sur 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
Questions sur huml MCP
Quels outils huml MCP fournit-il ?
Il expose 7 outils, dont memory_list, memory_read, memory_write, memory_append, memory_str_replace.
Est-ce réservé uniquement à Claude ?
Non, il s'agit d'un MCP server standard qui fonctionne avec Claude Code, Claude.ai, ChatGPT, Cursor et tout client prenant en charge les serveurs MCP distants.
Ai-je besoin de Cloudflare ?
Pour cette implémentation spécifique, oui, car elle s'exécute sur Cloudflare Workers et utilise les stockages D1 et KV, bien que la conception ne dépende pas strictement de Cloudflare.
Où sont stockées mes données ?
Vos données sont stockées dans une base de données D1 au sein de votre propre compte Cloudflare.
En quoi cela diffère-t-il de la mémoire intégrée de ChatGPT ou Claude ?
Contrairement à la mémoire intégrée qui est restreinte à un seul produit, huml est partagée entre tous les outils connectés et utilise des fichiers markdown modifiables.