{{> head}} MapleStats MCP {{> header}}

{en}One MCP to rule them all.{fr}Un MCP pour les gouverner tous.{/}

{en}MapleStats is one server for publicly available Canadian data. Connect it to your AI agent to retrieve precise, well-sourced statistics and reports from more than {{sources_over}} sources, including Statistics Canada, the Bank of Canada and CMHC. Never worry about Canadian data retrieval again: focus on what actually matters to you.{fr}MapleStats est un seul serveur pour les données canadiennes accessibles au public. Connectez-le à votre agent IA pour obtenir des statistiques et des rapports précis et bien sourcés, tirés de plus de {{sources_over}} sources, dont Statistique Canada, la Banque du Canada et la SCHL. Ne vous souciez plus de trouver des données canadiennes : concentrez-vous sur ce qui compte vraiment pour vous.{/}

{en}One connection{fr}Une seule connexion{/}

{en}MCP is the standard way to plug data into AI agents. MapleStats puts Canada's scattered agencies and portals behind one connection, in English or French, with the source on every number.{fr}Le MCP est la façon standard de brancher des données sur un agent IA. MapleStats réunit les organismes et portails canadiens derrière une seule connexion, en français ou en anglais, avec la source de chaque chiffre.{/}

{en}Scripts you can rerun{fr}Des scripts à relancer{/}

{en}Any data call can come back as an R, Python, Stata or Julia script that fetches the same numbers straight from the source, so the analysis runs without the agent.{fr}Tout appel de données peut revenir sous forme de script R, Python, Stata ou Julia qui va chercher les mêmes chiffres à la source : l'analyse tourne sans l'agent.{/}

{en}The easiest way: ask your agent{fr}Le plus simple : demandez à votre agent{/} {en}One prompt installs MapleStats and connects it. The agent reads the setup steps from the repository and does the rest.{fr}Une seule requête installe MapleStats et le connecte. L'agent lit les étapes d'installation dans le dépôt et s'occupe du reste.{/}

{{agent_prompt}}
  1. {en}Copy the prompt.{fr}Copiez la requête.{/}
  2. {en}Paste it into Claude Code, Codex, Cursor or any agent that can run commands on your computer.{fr}Collez-la dans Claude Code, Codex, Cursor ou tout agent qui peut exécuter des commandes sur votre ordinateur.{/}
  3. {en}Restart the agent when it says so, then ask for data.{fr}Redémarrez l'agent quand il vous le dit, puis demandez des données.{/}

{en}Version {{version}}, beta. Runs on your machine over stdio, with no account or API key.{fr}Version {{version}}, bêta. S'exécute sur votre machine par stdio, sans compte ni clé d'API.{/}

3

{en}MCPs for the statisticians, keepers of the weights and the margins,{fr}MCP pour les statisticiens, gardiens des poids et des marges,{/}

7

{en}for the demographers, counting who comes to stay,{fr}pour les démographes, qui comptent ceux qui viennent s'établir,{/}

9

{en}for the analysts, doomed to explain the rate…{fr}pour les analystes, condamnés à expliquer le taux…{/}

{en}Okay, perhaps not quite.{fr}Bon, peut-être pas tout à fait.{/}

{en}Too many places to look, too many interfaces to learn.{fr}Trop d'endroits où chercher, trop d'interfaces à apprendre.{/}

{en}As MCP made it easier to connect AI agents to data, we started building narrow servers for narrow pieces of the Canadian data ecosystem: one for Statistics Canada, another for the Bank of Canada, others for open-data portals. Each can be useful. Together they recreate an old Canadian data problem: too many choices before asking a relatively simple question. MapleStats takes the opposite approach, one MCP for Canadian open data.{fr}Le MCP a facilité la connexion des agents IA aux données, et l'on s'est mis à construire des serveurs étroits pour des pans étroits de l'écosystème canadien : un pour Statistique Canada, un autre pour la Banque du Canada, d'autres pour les portails de données ouvertes. Chacun peut être utile. Ensemble, ils recréent un vieux problème canadien : trop de choix avant de poser une question pourtant simple. MapleStats prend le chemin inverse : un seul MCP pour les données ouvertes canadiennes.{/}

{en}Centralize the interface, not the data.{fr}Centraliser l'interface, pas les données.{/}

{en}The server keeps no copy. It calls each source directly, so every number comes from its publisher.{fr}Le serveur ne garde aucune copie. Il interroge chaque source directement; chaque chiffre vient de son éditeur.{/}

{en}One discovery layer, many adaptors.{fr}Une couche de découverte, de nombreux adaptateurs.{/}

{en}Each agency keeps its own adaptor underneath. The agent sees one search across all of them.{fr}Chaque organisme garde son adaptateur. L'agent ne voit qu'une recherche commune à tous.{/}

{en}Start from the question, not the portal.{fr}Partir de la question, pas du portail.{/}

{en}The agent does not need to know whether the answer is a StatCan table, a Valet series, a CMHC dataset or a CKAN resource.{fr}L'agent n'a pas à savoir si la réponse est un tableau de StatCan, une série Valet, un jeu de données de la SCHL ou une ressource CKAN.{/}

{en}Case studies{fr}Études de cas{/}

{en}What can you do with it{fr}Que pouvez-vous en faire{/}

{en}Eight kinds of people asked their agent a real question through MapleStats. Here is one of them: a macroeconomist reading the yield curve.{fr}Huit profils différents ont posé une vraie question à leur agent grâce à MapleStats. En voici un : un macroéconomiste qui lit la courbe des taux.{/}

{en}Macroeconomists{fr}Macroéconomistes{/}

{en}When the yield curve turns upside down{fr}Quand la courbe des taux s'inverse{/}

{en}The gap between the 10-year and 2-year Government of Canada bond yields, every business day since {{curve_first_year}}. When it drops below zero, markets expect rates to fall, usually because they expect the economy to slow. It inverted in {{curve_spells}}.{fr}L'écart entre les rendements des obligations du gouvernement du Canada à 10 ans et à 2 ans, chaque jour ouvrable depuis {{curve_first_year}}. Quand il passe sous zéro, les marchés s'attendent à une baisse des taux, le plus souvent parce qu'ils prévoient un ralentissement. La courbe s'est inversée en {{curve_spells}}.{/}

{{chart_curve}}
{{source_curve}}

{en}The other seven{fr}Les sept autres{/}

Sources

{en}Where the data comes from{fr}D'où viennent les données{/}

{en}Federal agencies answer most national questions; provincial agencies and open-data catalogues add the local detail. Every result comes straight from its publisher.{fr}Les organismes fédéraux répondent à la plupart des questions nationales; les organismes provinciaux et les catalogues de données ouvertes ajoutent le détail local. Chaque résultat vient directement de son éditeur.{/}

{{national_count}}
{en}federal and national sources{fr}sources fédérales et nationales{/}
{{local_source_count}}
{en}provincial, territorial and city sources{fr}sources provinciales, territoriales et municipales{/}
{{places_covered}}/13
{en}provinces and territories with local data{fr}provinces et territoires avec des données locales{/}
{{tool_count}}
{en}tools behind one connection{fr}outils derrière une seule connexion{/}

{en}Statistics Canada, in depth{fr}Statistique Canada en détail{/} {en}Every table, series and microdata file an agent can reach, and the hard parts MapleStats handles for you.{fr}Chaque tableau, série et fichier de microdonnées qu'un agent peut atteindre, et les difficultés que MapleStats règle pour vous.{/}

{en}How it works{fr}Fonctionnement{/}

{en}From a question to a cited number{fr}D'une question à un chiffre sourcé{/}

{en}A connected agent sees three tools: plan_query, search_tools and call_tool. The other {{searchable_count}} stay out of its context until a search finds them. Every output below is real. The server produced the plan, the search and the scripts when this page was built; the data call was recorded on {{captured_on}}.{fr}Un agent connecté voit trois outils : plan_query, search_tools et call_tool. Les {{searchable_count}} autres restent hors de son contexte jusqu'à ce qu'une recherche les trouve. Tous les résultats ci-dessous sont réels. Le serveur a produit le plan, la recherche et les scripts lors de la construction de cette page; l'appel de données a été enregistré le {{captured_on}}.{/}

  1. 01

    {en}Plan{fr}Planifier{/}plan_query

    {en}The planner reads the question and lists the agencies to ask, in order, with the caveats on combining them. Places it recognizes add their local portals.{fr}Le planificateur lit la question et énumère les organismes à interroger, dans l'ordre, avec les précautions à prendre pour combiner leurs résultats. Les lieux qu'il reconnaît ajoutent leurs portails locaux. Le planificateur rédige pour l'instant son plan en anglais.{/}

    plan_query{en}Run when this page was built{fr}Exécuté à la construction de la page{/}

    {en}Question{fr}Question{/}

    {{plan_question}}

    {en}Plan{fr}Plan{/}

    {{plan_panel}}
  2. 02

    {en}Find{fr}Trouver{/}search_tools

    {en}Search ranks the catalogue against a plain-language query and returns the top {{search_top}}. French works because every tool carries French keywords. The panel runs the server's own index in your browser, so type your own query.{fr}La recherche classe le catalogue selon une requête en langage courant et renvoie les {{search_top}} premiers outils. Le français fonctionne, car chaque outil porte des mots-clés français, même si sa description est en anglais. Le panneau exécute l'index du serveur dans votre navigateur : essayez votre propre requête.{/}

    search_tools{en}Runs in your browser{fr}S'exécute dans votre navigateur{/}

    {en}Try{fr}Essayez{/} {{search_suggestions}}

      {{search_results}}

    {en}Top {{search_top}} of {{searchable_count}} tools, ranked by the same BM25 index search_tools uses.{fr}Les {{search_top}} premiers sur {{searchable_count}} outils, classés par le même index BM25 que search_tools.{/}

  3. 03

    {en}Fetch{fr}Récupérer{/}call_tool

    {en}The agent calls the tool by name. The result is a typed object, and its provenance block, marked here, gives the exact upstream URL and the time of the query.{fr}L'agent appelle l'outil par son nom. Le résultat est un objet typé, et son bloc de provenance, mis en évidence ici, donne l'URL exacte de la source et l'heure de la requête.{/}

    call_tool{en}Recorded {{captured_on}}{fr}Enregistré le {{captured_on}}{/}

    {en}Request{fr}Requête{/}

    {{call_request}}
    {{call_result}}
    {en}Show the full response as JSON{fr}Afficher la réponse complète en JSON{/}
    {{call_response}}
  4. 04

    {en}Reproduce{fr}Reproduire{/}reproduce_code

    {en}The same call becomes an R, Python, Stata or Julia script that downloads, checks and cleans the data, so the analysis does not depend on the agent.{fr}Le même appel devient un script R, Python, Stata ou Julia qui télécharge, vérifie et nettoie les données, pour que l'analyse ne dépende pas de l'agent.{/}

    reproduce_code{en}Run when this page was built{fr}Exécuté à la construction de la page{/}

    {en}Request{fr}Requête{/}

    {{reproduce_request}}
    {{reproduce_tabs}}

{en}Connect{fr}Connexion{/}

{en}Add it to your client{fr}Ajoutez-le à votre client{/}

{en}Your client starts the server with uv when it needs it. There is nothing to host and no port to open.{fr}Votre client lance le serveur avec uv au besoin. Il n'y a rien à héberger ni aucun port à ouvrir.{/}

{en}Full setup, hosting and troubleshooting{fr}Installation complète, hébergement et dépannage{/}

{{> clients}}

{en}Acknowledgements{fr}Remerciements{/}

{en}MapleStats builds on the open work of many others. It learned from the many MCP servers for Canadian and government data that came before it, and much of its architecture and inspiration comes from EcuDataMCP, my other project, an MCP server for Ecuador's open government data.{fr}MapleStats s'appuie sur le travail ouvert de nombreuses personnes. Il a tiré des leçons des nombreux serveurs MCP de données canadiennes et gouvernementales qui l'ont précédé, et une bonne part de son architecture et de son inspiration vient d'EcuDataMCP, mon autre projet, un serveur MCP pour les données ouvertes du gouvernement de l'Équateur.{/}

{en}Existing open-source packages helped too, above all the R packages of Jens von Bergmann (mountainMath) and their co-authors:{fr}Des paquets libres existants ont aussi aidé, surtout les paquets R de Jens von Bergmann (mountainMath) et de leurs coauteurs :{/}

  • cmhc {en}The CMHC module was checked against its reverse-engineering of CMHC's Housing Market Information Portal.{fr}Le module de la SCHL a été vérifié par rapport à sa rétro-ingénierie du Portail de l'information sur le marché de l'habitation.{/}
  • cansim {en}The R code that reproduce_code writes for Statistics Canada tables and vectors uses it.{fr}Le code R que reproduce_code écrit pour les tableaux et vecteurs de Statistique Canada l'utilise.{/}
  • cancensus {en}A model for census data access in R.{fr}Un modèle pour l'accès aux données du recensement en R.{/}
  • canivt {en}Reads Beyond 20/20 files. Census tables and Borealis deposits that exist only in that format are routed to it.{fr}Lit les fichiers Beyond 20/20. Les tableaux du recensement et les dépôts Borealis offerts seulement dans ce format lui sont confiés.{/}

{en}Thank you to the developers who built and shared these tools, and to everyone who publishes Canadian data in the open.{fr}Merci aux développeurs qui ont conçu et partagé ces outils, et à toutes les personnes qui publient des données canadiennes au grand jour.{/}

{en}For other ways to get Canadian data, some of these packages among them, see the alternatives on the About page.{fr}Pour d'autres façons d'obtenir des données canadiennes, dont certains de ces paquets, voyez les autres options à la page À propos.{/}

{en}One MCP for the Agent to find them,{fr}Un MCP pour que l'Agent les trouve,{/} {en}one MCP to bring them all together.{fr}un MCP pour les réunir tous.{/}

{{chart_ring}}
{{> footer}}