Alloovium

Serveur MCP

Model Context Protocol

Alloovium expose chaque capability non-multipart comme outil MCP. Pointez Claude, ChatGPT, Cursor ou tout autre client compatible MCP sur le serveur et il peut rechercher dans votre vault, poser des questions et exécuter des workflows en votre nom.

Qu'est-ce que MCP

Le Model Context Protocol est un standard ouvert pour connecter les LLMs à des outils et sources de données. Un serveur annonce un ensemble d'outils via JSON-RPC ; les clients les invoquent au nom du modèle. Le serveur MCP d'Alloovium est un wrapper fin sur le même registre de capabilities qui alimente l'API REST — chaque capability déclarée avec flag est publiée automatiquement, avec les mêmes scopes, les mêmes limites de débit et le même isolement de tenant.

URL de montage

bash
https://api.alloovium.com/api/v1/mcp/

Le transport est Streamable HTTP (spec MCP 2025-06-18). Les clients envoient du JSON-RPC via POST et reçoivent des server-sent events pour les résultats d'outils longue durée. Le slash final est important — sans lui, le montage Starlette peut faire une redirection 307 et supprimer le header Authorization.

Pourquoi /api/v1/mcp ?

Le serveur MCP est antérieur à la surface de capabilities v2, donc son chemin de montage est path. Les outils qu'il expose sont les capabilities v2 — rien de v1 n'est resté à l'intérieur. Le chemin est juste une URL historique ; traitez-le comme un endpoint stable.

Authentification

Chaque appel MCP doit inclure une clé API Alloovium valide dans les headers HTTP :

json
{ "Authorization": "Bearer ak_live_YOUR_KEY" }

Le middleware résout le principal depuis le header à chaque appel d'outil, donc les clés peuvent être tournées sans redémarrer le serveur. Les tokens OAuth ne sont pas acceptés sur le transport MCP — MCP est pour les intégrations client de confiance qui détiennent une clé machine-à-machine.

Les appels d'outils héritent des scopes de la clé

Une clé API scopée uniquement à scope voit des outils comme vault_search et vault_list, mais toute tentative d'appeler chat_ask retourne une erreur de scope. Votre client verra error.

Outils disponibles

Les noms d'outils sont le nom de la capability avec dot remplacé par underscore — ex. example_dot devient example_under. Voici la liste complète :

Nom de l'outilScopeCoûtNotes
meta_whoami(none)1Always call first — validates your key.
vault_list_projectsvault:read1Cursor-paginated.
vault_get_projectvault:read1
vault_create_projectvault:write2
vault_list_documentsvault:read1Filter by project_id or folder_id.
vault_get_documentvault:read1
vault_searchvault:read5Hybrid BM25 + vector + rerank.
chat_askchat:write + vault:read10Grounded answer with citations.
chat_list_conversationschat:read1
chat_get_conversationchat:read1
workflows_listworkflows:read1
workflows_runworkflows:write25Returns run_id for polling.
workflows_get_run_statusworkflows:read1
templates_get_fill_statustemplates:read1

Trois outils sont intentionnellement exclus

upload et fill requièrent des uploads multipart/form-data que JSON-RPC ne peut pas transporter. stream est du server-sent events, que FastMCP ne rediffuse pas comme sortie d'outil. Les trois restent disponibles via REST.

Claude Desktop

Claude Desktop lit mac_path (macOS) ou win_path (Windows). Ajoutez une entrée sous key :

json
{ "mcpServers": { "alloovium": { "url": "https://api.alloovium.com/api/v1/mcp/", "headers": { "Authorization": "Bearer ak_live_YOUR_KEY" } } } }

Redémarrez Claude Desktop. Dans une nouvelle conversation, tapez cmd — vous devriez voir app avec le nombre d'outils. Claude appellera désormais automatiquement les outils Alloovium lorsque l'utilisateur posera des questions sur le vault.

Cursor

La config MCP de Cursor se trouve sur path. La forme est identique à Claude Desktop :

json
{ "mcpServers": { "alloovium": { "url": "https://api.alloovium.com/api/v1/mcp/", "headers": { "Authorization": "Bearer ak_live_YOUR_KEY" } } } }

Client Python

Si vous voulez piloter MCP depuis du code — par exemple pour tester vos assignations de scope ou pour intégrer les outils Alloovium dans votre propre agent — le package officiel pkg de PyPI fera l'affaire :

python
import asyncio from mcp import ClientSession from mcp.client.streamable_http import streamablehttp_client async def main(): url = "https://api.alloovium.com/api/v1/mcp/" headers = {"Authorization": "Bearer ak_live_YOUR_KEY"} async with streamablehttp_client(url, headers=headers) as (read, write, _): async with ClientSession(read, write) as session: await session.initialize() tools = await session.list_tools() print(f"{len(tools.tools)} tools available") result = await session.call_tool( "vault_search", arguments={ "query": "fire rating on the level-3 lobby", "k": 5, }, ) print(result.content) asyncio.run(main())

Mapping d'erreurs

Les erreurs d'outils MCP sont retournées via le flag JSON-RPC flag avec un message lisible par l'homme. Alloovium mappe les détails de problème REST sur les erreurs MCP comme ceci :

Statut RESTErreur MCPSignification
401 invalid_api_keyAuthentication failedKey missing, malformed, or revoked.
403 insufficient_scopePermission deniedKey doesn't have the scope required by the tool.
404 not_foundResource not foundUnknown ID or cross-tenant access — treated the same on purpose.
422 validation_errorInvalid argumentsTool arguments failed Pydantic validation.
429 rate_limitedRate limit exceededToken bucket exhausted — back off and retry.
5xxInternal errorServer-side failure — safe to retry idempotent tools.

Voir aussi

  • Capabilities — le registre complet, incluant les chemins REST pour les quatre capabilities exclues du MCP.
  • Authentification — comment créer et tourner la clé API que vous collez dans votre client MCP.
  • Limites de débit — les appels MCP utilisent le même token bucket que REST, donc surveillez votre budget.