Search and read Moroccan law article by article, in Arabic and French, with citations and PDFs.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
One article of a text, exactly as published, with its citation block (canonical URL, marker, text title and number, consolidated date, official PDF).
Article key, e.g. 4, 5-bis, 185-to-200
Language of the text: "ar" (Arabic, most texts) or "fr" (French translation, when published).
Text slug, e.g. loi-70-03
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http law https://madda.ma/mcp
One article of a text, exactly as published, with its citation block (canonical URL, marker, text title and number, consolidated date, official PDF).
| Argument | Type | Description |
|---|---|---|
| key* | string | Article key, e.g. 4, 5-bis, 185-to-200 |
| lang* | string | Language of the text: "ar" (Arabic, most texts) or "fr" (French translation, when published). |
| slug* | string | Text slug, e.g. loi-70-03 |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"lang",
"slug",
"key"
],
"properties": {
"key": {
"type": "string",
"description": "Article key, e.g. 4, 5-bis, 185-to-200"
},
"lang": {
"enum": [
"ar",
"fr"
],
"type": "string",
"description": "Language of the text: \"ar\" (Arabic, most texts) or \"fr\" (French translation, when published)."
},
"slug": {
"type": "string",
"description": "Text slug, e.g. loi-70-03"
}
},
"additionalProperties": false
}Metadata of a law/decree (title, number, dates, Bulletin officiel, official PDF) and its table of contents with article keys.
| Argument | Type | Description |
|---|---|---|
| lang* | string | Language of the text: "ar" (Arabic, most texts) or "fr" (French translation, when published). |
| slug* | string | Text slug, e.g. loi-65-99 |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"lang",
"slug"
],
"properties": {
"lang": {
"enum": [
"ar",
"fr"
],
"type": "string",
"description": "Language of the text: \"ar\" (Arabic, most texts) or \"fr\" (French translation, when published)."
},
"slug": {
"type": "string",
"description": "Text slug, e.g. loi-65-99"
}
},
"additionalProperties": false
}Previous wordings of an article with their validity dates, and the current wording.
| Argument | Type | Description |
|---|---|---|
| key* | string | |
| lang* | string | Language of the text: "ar" (Arabic, most texts) or "fr" (French translation, when published). |
| slug* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"lang",
"slug",
"key"
],
"properties": {
"key": {
"type": "string"
},
"lang": {
"enum": [
"ar",
"fr"
],
"type": "string",
"description": "Language of the text: \"ar\" (Arabic, most texts) or \"fr\" (French translation, when published)."
},
"slug": {
"type": "string"
}
},
"additionalProperties": false
}Subject categories (المادة المدنية, Matière commerciale…) with their slugs and text counts.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of the text: "ar" (Arabic, most texts) or "fr" (French translation, when published). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"lang": {
"enum": [
"ar",
"fr"
],
"type": "string",
"default": "ar",
"description": "Language of the text: \"ar\" (Arabic, most texts) or \"fr\" (French translation, when published)."
}
},
"additionalProperties": false
}Full-text search over Moroccan legislation articles (and texts by number or title, e.g. "65.99" or "مدونة الشغل"). Returns article snippets with URLs.
| Argument | Type | Description |
|---|---|---|
| kind | string | loi, decret, dahir, dahir-loi, arrete, constitution |
| lang | string | Language of the text: "ar" (Arabic, most texts) or "fr" (French translation, when published). |
| limit | integer | |
| query* | string | |
| category | string | Category slug from list_categories |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"kind": {
"type": "string",
"description": "loi, decret, dahir, dahir-loi, arrete, constitution"
},
"lang": {
"enum": [
"ar",
"fr"
],
"type": "string",
"default": "ar",
"description": "Language of the text: \"ar\" (Arabic, most texts) or \"fr\" (French translation, when published)."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 20,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"category": {
"type": "string",
"description": "Category slug from list_categories"
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 12, 2026.