mozaia-laws-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mozaia-laws-mcpsearch for labour law 2023"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mozaia-laws-mcp
MCP server for the Mozambican law library — give any AI agent real-time access to Mozambican legislation: current text, historical versions, validity status, and citation resolution.
Built on the Mozaia legal intelligence platform. Covers 42 legal domains, 225+ instruments from the Boletim da República, with authoritative citators and temporal versioning.
Quick start
# Install
pip install mozaia-laws-mcp
# Or run without installing (requires uvx)
uvx mozaia-laws-mcpGet an API key at mozaia.mz/developers (free tier available).
Related MCP server: LeyChile MCP
Installation
pip / uv
pip install mozaia-laws-mcp
uv add mozaia-laws-mcpClaude Desktop
Add to claude_desktop_config.json
(~/Library/Application Support/Claude/ on macOS, %APPDATA%\Claude\ on Windows):
{
"mcpServers": {
"mozaia-laws": {
"command": "mozaia-laws-mcp",
"env": {
"MOZAIA_API_KEY": "sk-mozaia-your-key-here",
"MOZAIA_BASE_URL": "https://api.mozaia.mz"
}
}
}
}Cursor / VS Code (Copilot)
{
"mcp": {
"servers": {
"mozaia-laws": {
"command": "mozaia-laws-mcp",
"env": {
"MOZAIA_API_KEY": "sk-mozaia-your-key-here"
}
}
}
}
}uvx (no install)
{
"mcpServers": {
"mozaia-laws": {
"command": "uvx",
"args": ["mozaia-laws-mcp"],
"env": {
"MOZAIA_API_KEY": "sk-mozaia-your-key-here"
}
}
}
}Configuration
Variable | Required | Default | Description |
| Yes | — | API key ( |
| No |
| Override for on-premise or staging |
| No |
| HTTP timeout in seconds |
Tools
search_semantic — natural language search over articles
The primary search tool. Use it when the user asks a legal question in plain language.
Inputs:
Field | Type | Required | Description |
| string | Yes | Legal question in natural language |
| integer | No | Number of results, max 50 (default: 10) |
Example:
search_semantic(q="qual é o prazo de aviso prévio no contrato de trabalho?")
search_semantic(q="indemnização por despedimento sem justa causa", top_k=5)Returns: ranked article list with excerpt, canonical citation, relevance score, and hit type.
get_law_relationships — normative graph
Reveals the full normative chain: what a diploma revokes, amends, implements, and which later instruments affect it. Use before citing a law to ensure it hasn't been superseded by a downstream instrument.
Inputs:
Field | Type | Required | Description |
| string | Yes | Canonical diploma identifier |
| string | No | Filter: |
Example:
get_law_relationships(law_id="lei_trabalho_2007")
get_law_relationships(law_id="lei_trabalho_2007", relation_type="revokes")Returns: outgoing and incoming relationships with peer law_id, effective date, and confidence score.
list_amendments — article version history
Returns every version of an article since original publication, with the amending law and date of each change. Essential for retroactivity analysis and past-fact disputes.
Inputs:
Field | Type | Required | Description |
| string | Yes | Diploma identifier |
| string | Yes | Article number, e.g. |
Example:
list_amendments(law_id="lei_trabalho_2023", article_number="128")Returns: chronological list of versions — text, version label, amending law, validity range, and is_current flag.
search_laws — find a diploma by name or topic
Use this first when you know a law by name or subject but not its law_id.
Inputs:
Field | Type | Required | Description |
| string | No | Free text: title, number ( |
| string | No | Canonical legal domain, e.g. |
| string | No |
|
| integer | No | Publication year, e.g. |
| integer | No | Page number (default: 1) |
| integer | No | Results per page, max 50 (default: 20) |
Example:
search_laws(q="trabalho", domain="labour_law", year=2023)Returns: paginated list with law_id, title, type, status, legal domain, and quota balance.
get_law_status — check if a diploma is in force
Inputs:
Field | Type | Required | Description |
| string | Yes | Canonical identifier, e.g. |
Example:
get_law_status(law_id="lei_trabalho_2023")Returns: validity status (active / revoked / superseded), revoked_by_law_id when applicable, full citator badge, and publication metadata.
get_article — current text of an article
Inputs:
Field | Type | Required | Description |
| string | Yes | Diploma identifier |
| string | Yes | Article number, e.g. |
Example:
get_article(law_id="lei_trabalho_2023", article_number="70")Returns: full article text, amendment/revocation status, and citator with Boletim da República reference.
get_article_at_date — historical version of an article
Retrieves the exact text that was in force on a given past date. Essential for retroactivity analysis, past-fact disputes, and temporal conflicts between norms.
Inputs:
Field | Type | Required | Description |
| string | Yes | Diploma identifier |
| string | Yes | Article number |
| string | Yes | ISO 8601 date, e.g. |
Example:
get_article_at_date(law_id="codigo_civil_1966", article_number="217", as_of="2019-06-01")Returns: article text at the requested date, version number, validity range, is_current flag, and temporal_alert if the norm changed shortly before or after.
cite — resolve a Portuguese legal citation
Parses a free-text Portuguese citation and resolves it to a structured law_id + article record.
Inputs:
Field | Type | Required | Description |
| string | Yes | Citation string in Portuguese |
Accepted formats:
"Lei n.º 3/2022, artigo 15.º""Decreto-Lei n.º 1/2020""Constituição da República, artigo 70.º""art. 102 do Código Civil"
Example:
cite(citation="Lei n.º 3/2022, artigo 15.º")Returns: parsed_law_number, parsed_article_number, resolved_law, resolved_article, confidence score (0–1), and unresolved_reason when the diploma is not in the database.
Typical agent workflow
1. cite("Lei n.º 23/2007, artigo 128.º")
→ law_id: "lei_trabalho_2007", article: "128", confidence: 0.97
2. get_law_status(law_id="lei_trabalho_2007")
→ status: "revoked", revoked_by: "lei_trabalho_2023"
3. get_article(law_id="lei_trabalho_2023", article_number="128")
→ current text + citator
4. (if analysing a past case)
get_article_at_date(law_id="lei_trabalho_2007", article_number="128", as_of="2018-01-01")
→ text that was in force in 2018Error handling
HTTP | MCP response |
|
|
|
|
|
|
|
|
timeout |
|
Pricing
Tier | Credits/month | Price | Best for |
Community | 1 000 | Free | Evaluation, personal projects |
Institutional | 10 000 | — | Legal firms, NGOs, universities |
Commercial | 50 000 | — | SaaS products, fintechs |
Strategic | 500 000 | — | Platforms, enterprise integrations |
1 credit = 1 API call. Credits reset on the 1st of each month. Get a key and upgrade at mozaia.mz/developers.
Legal domains supported
labour_law · tax_law · family_law · commercial_law · criminal_law · civil_law · administrative_law · constitutional_law · environmental_law · land_law · mining_law · consumer_law · and 30 more.
Full list: search_laws(domain=<domain>) returns an empty list with a 422 if the domain is invalid.
Requirements
Python 3.11+
Network access to
api.mozaia.mz(or your configuredMOZAIA_BASE_URL)A valid
MOZAIA_API_KEY
License
MIT — see LICENSE.
Data provided through this MCP server is subject to the Mozaia Terms of Service.
This server cannot be installed
Maintenance
Latest Blog Posts
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dequive/mozaia-laws-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server