ooligo
mcp-server

Triage Relativity review-set metadata from Claude via MCP

Difficulty
avancé
Setup time
2-4 hours
For
legal-ops-manager
Legal Ops

Stack

Un serveur Model Context Protocol (MCP) qui expose les métadonnées de workspaces, de review sets et de recherches sauvegardées de Relativity comme outils dans une conversation avec Claude. Les responsables legal-ops et les ingénieurs e-discovery peuvent demander à Claude de lister les workspaces actifs, de récupérer les comptages de documents d’un review set ou de résumer la définition d’une recherche sauvegardée — sans ouvrir l’interface Relativity ni écrire une requête personnalisée. Le scaffold se trouve dans apps/web/public/artifacts/mcp-server-relativity-ediscovery/ et est conçu en lecture seule : aucun document n’est récupéré, aucune décision de codage par document n’est exposée, et aucune opération d’écriture n’est enregistrée.

Quand l’utiliser

Recourez à ce serveur lorsque votre équipe utilise Relativity — que ce soit RelativityOne dans le cloud ou Relativity Server on-prem — et que vous pouvez nommer trois questions opérationnelles récurrentes ou plus qui nécessitent de naviguer dans l’interface Relativity plusieurs fois par semaine. Exemples typiques : « Combien de documents se trouvent dans le review set de l’affaire Alpha et quel pourcentage a été examiné ? », « Quels workspaces sont actuellement actifs et quels sont leurs comptages de documents ? », « Montre-moi les recherches sauvegardées dans le workspace de l’affaire Bravo et qui en sont les propriétaires. » Ces questions relèvent de la navigation opérationnelle ; aucune ne requiert la lecture d’un seul document ni la consultation d’une seule décision de codage. Elles sont exactement le type de travail qui se comprime bien dans une conversation avec Claude.

L’argument économique est concret. Une équipe e-discovery gérant 8 à 12 affaires actives simultanément consacre une part significative de chaque semaine à récupérer des chiffres de statut depuis Relativity : ouvrir des tableaux de bord de workspace, passer d’une vue d’affaire à une autre, vérifier l’avancement des review sets, confirmer les définitions des recherches sauvegardées pour les prochaines productions. Une estimation conservative (basée sur la structure de la tâche, et non sur une étude contrôlée) est de 45 minutes par jour pour un responsable legal-ops à temps plein à cette échelle. Comprimer ces recherches en conversations de 30 secondes avec Claude ramène la charge opérationnelle à moins de 5 minutes par jour. Le temps récupéré est consacré à la coordination substantielle : communiquer l’avancement de la revue aux avocats externes, ajuster les assignations de review sets, préparer les calendriers de production.

Ce serveur est également utile pour l’intégration de nouveaux membres. Quand quelqu’un rejoint une équipe d’affaire, demander à Claude de lister les recherches sauvegardées et les review sets du workspace est plus rapide que de planifier une démonstration dans l’interface Relativity. Le portrait de métadonnées d’une affaire — combien de workspaces, quels review sets existent, quelles sont les recherches clés — devient immédiatement accessible dans une conversation avec Claude.

Quand NE PAS l’utiliser

Passez votre chemin si votre volume d’affaires est faible — moins d’environ quatre affaires actives à la fois — ou si les requêtes de métadonnées opérationnelles de votre équipe sont inférieures à une quinzaine par semaine. Le coût d’installation comprend : le provisionnement de credentials auprès de votre administrateur Relativity, une revue de la posture de privilège avec le juriste interne, une revue de sécurité du périmètre d’impact du compte de service, et le cycle de validation sandbox-vers-production décrit dans l’étape de vérification. Ce coût ne s’amortit pas à faible volume de requêtes. Utilisez directement l’interface Relativity ; reconsidérez lorsque le nombre d’affaires ou la fréquence des requêtes augmente.

Passez votre chemin si votre déploiement est soumis à une ordonnance de protection qui restreint la façon dont les données du dossier peuvent être transmises ou traitées. Les noms de workspaces Relativity, les affectations d’affaires et les noms de review sets peuvent eux-mêmes être soumis à des obligations de confidentialité. Avant d’envoyer ces métadonnées dans une session Claude, confirmez avec le conseil compétent que le déploiement est compatible avec les ordonnances de protection applicables et les protocoles de traitement des données adoptés par votre cabinet ou votre client.

Passez votre chemin si votre instance Relativity est antérieure à Relativity Server 2022 ou si votre tenant n’a pas validé les chemins de base de l’API REST. Le scaffold cible les conventions de l’API REST documentées pour RelativityOne (2024–2025) ; les chemins on-prem plus anciens divergent. Exécuter le scaffold contre un chemin de base non validé produit des erreurs 404 ou des réponses malformées qui apparaissent dans Claude comme « aucune donnée trouvée » — exactement le mode d’échec qui érode la confiance dans les outils juridiques médiatisés par MCP. Confirmez les chemins avec votre administrateur Relativity avant le premier usage.

Passez votre chemin si vous ne disposez pas encore d’une politique IA couvrant l’accès de Claude aux métadonnées e-discovery. La politique doit aborder : quelles affaires sont dans le périmètre, qui peut interroger via MCP, et comment les sessions Claude sont enregistrées. Établissez la politique en premier.

Installation

L’installation complète est documentée dans apps/web/public/artifacts/mcp-server-relativity-ediscovery/README.md. Résumé :

  1. Clonez le bundle dans un dépôt privé. Exécutez pip install -e . dans un environnement virtuel Python 3.11+.
  2. Provisionnez des credentials. Pour la production, créez un client OAuth2 dans Relativity (Home → Authentication → OAuth2 Client Manager → New ; Flow Grant Type : Client Credentials ; Context User : un compte de service). Copiez le client ID et le client secret. Pour un usage uniquement en développement, l’authentification Basic (nom d’utilisateur/mot de passe) est prise en charge, mais déconseillée pour les environnements partagés.
  3. Configurez les variables d’environnement : RELATIVITY_HOST (l’URL de votre tenant, par ex. https://your-tenant.relativity.one), RELATIVITY_AUTH_MODE (oauth2 ou basic) et les variables de credentials correspondantes.
  4. Enregistrez le serveur avec Claude Desktop via le snippet JSON du README. Le serveur enregistre cinq outils sous relativity-ediscovery.
  5. Effectuez la vérification de bon fonctionnement : demandez à Claude de lister vos workspaces. Confirmez que vous recevez des noms de workspaces et des ArtifactIDs sans texte de document. Demandez les recherches sauvegardées d’un workspace précis. Confirmez que la réponse ne contient que des noms de recherches et des propriétaires. Si du contenu de document apparaît, arrêtez et investiguez avant d’étendre l’accès.

Le compte de service doit avoir un accès en lecture aux workspaces prévus. Provisionnez-le avec le périmètre le plus restreint dont le déploiement a besoin — pas en tant qu’administrateur d’instance.

Ce qu’il fait

Le scaffold enregistre cinq outils, tous en lecture seule :

list_workspaces — appelle l’endpoint REST du Workspace Manager (GET /Relativity.Rest/api/relativity-environment/v1/workspace/) et renvoie une liste paginée de workspaces accessibles avec noms, ArtifactIDs, statuts et affectations d’affaires. L’ArtifactID est la clé utilisée dans tous les appels d’outils ultérieurs pour limiter les requêtes à un workspace spécifique.

get_workspace_summary — appelle le helper de résumé du Workspace Manager (/summary) pour un seul workspace et renvoie le comptage de documents et la taille totale des fichiers. Le choix technique ici est d’exposer l’endpoint de résumé plutôt que la lecture complète du workspace : l’endpoint de résumé renvoie les deux chiffres que les responsables legal-ops demandent le plus souvent, sans renvoyer les champs de configuration du workspace qui sont hors de propos pour les requêtes de statut opérationnel.

get_review_set_metadata — interroge l’Object Manager (POST /Relativity.Rest/api/Relativity.ObjectManager/v1/workspace/{id}/object/read) pour un objet review set spécifique. Les review sets dans Relativity sont des Relativity Dynamic Objects (RDOs) dont l’ArtifactTypeID est assigné à l’installation de l’application de revue et n’est pas fixe entre les instances (contrairement aux documents, qui sont toujours de type 10). Le scaffold résout l’ArtifactTypeID en interrogeant le registre des types d’objets au premier appel, puis le met en cache pour la session. L’outil renvoie des métadonnées au niveau du review set — nom, statut, nombre total de documents, nombre de documents examinés, assignations de réviseurs — et n’expose explicitement pas les valeurs de codage par document. La réponse inclut un champ _note rappelant à Claude que les données de codage par document sont intentionnellement absentes.

get_saved_search_summary — appelle le Keyword Search Manager (POST /Relativity.Rest/api/Relativity.Services.Search.ISearchModule/Keyword Search Manager/ReadSingleAsync) pour renvoyer le DTO de définition de recherche sauvegardée : nom, conditions, liste de champs et propriétaire. Les conditions sont renvoyées à la session Claude pour que les avocats puissent confirmer ce que recherche réellement une recherche sauvegardée — un besoin opérationnel courant avant de s’appuyer sur une recherche pour un lot de production. Les conditions ne sont jamais écrites dans les journaux (le helper log_invocation() dans server.py les omet) car les conditions d’une recherche sauvegardée peuvent révéler la stratégie de revue juridique.

list_saved_searches — appelle l’endpoint de requête du Keyword Search Manager pour renvoyer une liste paginée de recherches sauvegardées dans un workspace. La réponse est réduite aux noms, ArtifactIDs, propriétaires et dates de modification uniquement ; les conditions ne figurent pas dans la réponse de liste (uniquement dans l’appel individuel à get_saved_search_summary, pour que l’avocat les demande explicitement).

Le dispatch dans src/relativity_ediscovery_mcp/server.py ne contient aucune opération d’écriture. Il n’existe aucune route create_*, update_*, delete_*, code_document ni de déclenchement de production. En ajouter une nécessite une modification explicite du code.

Réalité des coûts

Trois postes, tous réels :

Abonnement Claude. Claude Desktop ou Claude Code avec MCP activé. Pro à $20/utilisateur/mois ou Team à $25–30/utilisateur/mois couvre la plupart des configurations d’équipes legal-ops. Une équipe exécutant 200 requêtes de métadonnées opérationnelles par semaine sur 10 affaires actives reste confortablement dans ces niveaux ; les déploiements à très fort volume (par ex., rapports automatisés de statut d’affaire chaque heure) peuvent justifier Max.

Hébergement du serveur. Processus Python auto-hébergé. Exécutez-le localement par utilisateur pour le développement. Pour un usage partagé en équipe, une petite VM interne (1 vCPU / 1 Go de RAM suffit pour moins de 200 appels par jour) derrière le VPN de votre cabinet coûte environ $5–15/mois chez un hyperscaler, ou sans coût supplémentaire si vous disposez déjà d’une infrastructure interne.

Quota de l’API REST de Relativity. Relativity limite le débit des clients REST par tenant, avec des limites qui varient selon la version de l’instance et le niveau d’abonnement. Une équipe exécutant 200 requêtes par semaine selon le schéma généré par ce serveur (lectures d’objets individuels, pas d’exports massifs de documents) reste bien dans les quotas par défaut. Une automatisation qui interroge tous les workspaces toutes les heures sur une grande instance atteindra les limites de débit ; la liste TODO dans le README signale les tentatives avec backoff exponentiel comme une tâche pré-production.

Le poste non budgété est le temps des avocats et des administrateurs. Prévoyez une à trois heures de revue de la posture de privilège par le juriste interne avant tout déploiement en production, une à deux heures avec votre administrateur Relativity pour valider les chemins API et provisionner le compte de service avec le bon périmètre, et une revue trimestrielle récurrente au fil des mises à jour Relativity qui peuvent modifier la surface de l’API.

Modes d’échec

Expiration du token d’authentification lors d’une longue session. Le scaffold récupère un token OAuth2 une fois au démarrage. Les tokens expirent en environ une heure. Si une session Claude dure plus d’une heure et que le token expire en cours de conversation, les appels d’outils suivants renvoient des erreurs 401 qui apparaissent dans la conversation Claude comme « Relativity a renvoyé une erreur ». Guard : le TODO n°2 du README signale le renouvellement du token OAuth2 comme une tâche requise avant l’utilisation en production. En attendant, considérez cette configuration uniquement pour le développement, dans des sessions de moins d’une heure.

Échec de résolution de l’ArtifactTypeID pour les review sets. Les review sets sont des RDOs dont l’ArtifactTypeID n’est pas fixe ; le scaffold le résout au premier appel en interrogeant le registre des types d’objets par nom. Si l’application de revue n’est pas installée dans le workspace cible, ou si le nom du type d’objet diffère de « Review Set » dans la configuration de votre tenant, la recherche échoue avec un message d’erreur descriptif. Guard : la fonction resolve_review_set_artifact_type_id() dans server.py génère un message d’erreur clair nommant le type d’objet recherché, ce qui rend l’échec diagnosticable. Validez le nom du type d’objet auprès de votre administrateur Relativity avant le déploiement en production.

Divulgation du nom du workspace ou de l’affaire sous une ordonnance de protection. Les noms de workspaces Relativity contiennent typiquement des noms d’affaires. Les envoyer via une session Claude peut entraîner des obligations de confidentialité si l’affaire est soumise à une ordonnance de protection qui restreint la transmission des métadonnées du dossier. Guard : avant tout déploiement sur une affaire active, confirmez avec le conseil compétent que le déploiement est compatible avec les ordonnances de protection applicables. C’est le seul mode d’échec sans protection technique — il exige une étape de revue juridique. Le README le précise explicitement dans la section du modèle de sécurité.

Journalisation des conditions de recherches sauvegardées. Une instrumentation négligente du serveur enregistrerait les paramètres de requête incluant les conditions de recherche, ce qui pourrait créer un document découvrable de la stratégie de revue. Guard : le helper log_invocation() dans server.py n’accepte que le nom de l’outil et le nombre de résultats ; la chaîne de conditions de recherche n’est jamais transmise au logger. Rétablir la journalisation des conditions nécessite une modification du code révisée par rapport à la politique de privilège.

Les noms de champs de réponse divergent de votre version de Relativity. Les noms de champs dans get_review_set_metadata ("Total Documents", "Reviewed Documents", "Reviewers") suivent les conventions de nommage de champs courantes dans RelativityOne, mais ils sont personnalisables et votre tenant peut utiliser des noms différents. Si l’outil renvoie des valeurs de champs vides, les noms de champs sont incorrects pour votre tenant. Guard : validez les noms de champs auprès de la configuration de champs de votre administrateur Relativity avant de vous fier à la sortie de l’outil.

Versus les alternatives

Les tableaux de bord et widgets natifs de Relativity. Relativity fournit des tableaux de bord de statut d’affaire à l’intérieur de chaque workspace. Choisissez-les si la réponse reste dans Relativity et que la personne qui pose la question possède un login Relativity. Choisissez ce serveur MCP lorsque la réponse doit aboutir dans une conversation Claude qui englobe aussi le contexte des emails, les notes de gestion des affaires, les communications avec les avocats externes ou d’autres outils de votre stack legal-ops — c’est-à-dire lorsque la valeur réside dans le raisonnement de Claude à travers plusieurs sources, et non dans la simple navigation dans Relativity.

Rapports personnalisés directement via l’API REST de Relativity. Tout ingénieur peut écrire un script Python qui interroge l’API REST de Relativity et envoie un rapport de statut par email ou Slack. Cette approche convient pour des rapports planifiés dans des formats fixes. Choisissez le serveur MCP lorsque les requêtes sont ad hoc — quand l’avocat ne sait pas à l’avance ce qu’il va demander, ou quand la question émerge d’une conversation plutôt que d’un modèle de rapport fixe. L’approche MCP gère la variabilité des requêtes ; un script fixe ne le fait pas.

Statu quo : avocats et équipe legal-ops naviguent dans l’interface Relativity. C’est la référence honnête. Le serveur MCP ne l’emporte que lorsque le nombre d’affaires et la fréquence des requêtes sont suffisamment élevés pour amortir le coût d’installation. En dessous d’environ quatre affaires actives et quinze requêtes opérationnelles par semaine, le statu quo est plus rapide et comporte moins de risques.

Stack

Serveur Python MCP auto-hébergé (SDK officiel mcp, httpx, pydantic) communiquant avec l’API REST de Relativity en backend ; Claude Desktop ou Code côté client. Le code source de server.py se trouve dans apps/web/public/artifacts/mcp-server-relativity-ediscovery/src/relativity_ediscovery_mcp/server.py. Le bundle complet avec les instructions d’installation, la référence des variables d’environnement, le JSON d’enregistrement et la liste numérotée de TODO pour la mise en production se trouve dans apps/web/public/artifacts/mcp-server-relativity-ediscovery/README.md.

Files in this artifact

Download all (.zip)