{
  "markdown": "# mcp-moncompte\n\nServeur **MCP (Model Context Protocol)** en **lecture seule** qui expose le catalogue de\nnotices de **moncompte.org** aux agents IA (Claude, etc.), déployé sur **Cloudflare Workers**.\n\n- **Stack** : TypeScript + Cloudflare Workers + Durable Objects + SDK MCP officiel + Zod\n- **Source de données** : endpoints publics du site **statique** moncompte.org (Astro / Cloudflare\n  Pages) — pas de WP REST. La recherche **et** `get_article` lisent **`/search-index.json`**\n  (index plein-texte généré au build : titre, slug, description, **corps complet**). La ressource\n  `about` proxifie **`/llms.txt`**. Aucun secret requis.\n- **Cache** : edge Cloudflare 1 h sur chaque appel\n\n> **Dépendance** : `search_articles` et `get_article` reposent sur `https://moncompte.org/search-index.json`,\n> produit par le site Astro (endpoint `src/pages/search-index.json.js`). Cet index **exclut déjà**\n> les articles datés dans le futur (`isPublished`) et les brouillons (`draft`) — le MCP ne voit donc\n> que le contenu réellement en ligne. L'index est régénéré à chaque build/déploiement du site.\n\n## Outils & ressource exposés\n\n| Type | Nom | Rôle |\n|------|-----|------|\n| Outil | `search_articles` | Recherche par mots-clés (titre, slug, URL, extrait) |\n| Outil | `get_article` | Contenu complet d'un article (par slug) |\n| Ressource | `moncompte://about` | Proxy du `llms.txt` de moncompte.org |\n\n## Endpoints\n\n- `/sse` — Server-Sent Events (clients historiques)\n- `/mcp` — Streamable HTTP (transport recommandé)\n- Rate-limit : **100 req / 60 s par IP** (binding natif Workers)\n- Durable Object : `NoticielMCP` (classe `McpAgent`)\n\n## Développement\n\n```bash\nnpm install\nnpm run dev          # wrangler dev (local)\nnpm run typecheck    # tsc --noEmit\n```\n\n## Déploiement\n\n```bash\nnpx wrangler login   # une fois (compte Cloudflare)\nnpm run deploy       # wrangler deploy\n```\n\n> Le binding de rate-limit (`[[unsafe.bindings]]` type `ratelimit`) requiert **Wrangler ≥ 4.36**.\n> Le Durable Object McpAgent utilise le stockage SQLite (migration `new_sqlite_classes`).\n\n## Connecter un client MCP\n\n- **URL** : `https://mcp-moncompte.<ton-sous-domaine>.workers.dev/mcp` (ou `/sse`)\n- **Claude Desktop / autres** : via `mcp-remote` :\n\n```json\n{\n  \"mcpServers\": {\n    \"moncompte\": {\n      \"command\": \"npx\",\n      \"args\": [\"mcp-remote\", \"https://mcp-moncompte.<sous-domaine>.workers.dev/sse\"]\n    }\n  }\n}\n```\n\n## Notes\n\n- Aucune écriture : le serveur ne fait que lire l'API publique de moncompte.org.\n- Les versions de `agents` et `@modelcontextprotocol/sdk` évoluent vite : en cas d'erreur de\n  build, faire `npm install agents@latest @modelcontextprotocol/sdk@latest`.\n",
  "bytes": 2663,
  "sha": "cc4f774023b7f3c08ea1c298ed338a9568a77ebfd01beae84eef4c9f6c8e5a56",
  "repo_slug": "waddou/mcp-moncompte",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_waddou_mcp_moncompte_005aee5e/readme"
}