Skip to main content
Glama
Ansvar-Systems

Latvian Data Protection MCP

Latvian Data Protection MCP

▶ Try this MCP instantly via Ansvar Gateway

50 free queries/day · no card required · OAuth signup at ansvar.eu/gateway

One endpoint, one OAuth signup, access from any MCP-compatible client.

Connect

Claude Code (one line):

claude mcp add ansvar --transport http https://gateway.ansvar.eu/mcp

Claude Desktop / Cursor — add to claude_desktop_config.json (or mcp.json):

{
  "mcpServers": {
    "ansvar": {
      "type": "url",
      "url": "https://gateway.ansvar.eu/mcp"
    }
  }
}

Claude.ai — Settings → Connectors → Add custom connector → paste https://gateway.ansvar.eu/mcp

First request opens an OAuth flow at ansvar.eu/gateway. After signup, your client is bound to your account; tier (free / premium / team / company) determines fan-out, quota, and which downstream MCPs are reachable.


Self-host this MCP

You can also clone this repo and build the corpus yourself. The schema, fetcher, and tool implementations all live here. What is not in the repo is the pre-built database — TDM and standards-licensing constraints on the upstream sources mean we host the corpus on Ansvar infrastructure rather than redistribute it as a public artifact.

Build your own: run this repo's ingestion script (entry-point varies per repo — typically scripts/ingest.sh, npm run ingest, or make ingest; check the repo root).

Latvian data protection data for AI compliance tools.

License CI

Query Latvian data protection data -- regulations, decisions, and requirements from DVI (Data State Inspectorate) -- directly from Claude, Cursor, or any MCP-compatible client.

Built by Ansvar Systems -- Stockholm, Sweden


Related MCP server: Portuguese Cybersecurity MCP

Available Tools (6)

Tool

Description

lv_dp_search_decisions

Full-text search across DVI (Datu valsts inspekcija) decisions and sanctions. Returns matching decisions with referen...

lv_dp_get_decision

Get a specific DVI decision by reference number.

lv_dp_search_guidelines

Search DVI guidance documents: recommendations, guidelines, and FAQs on GDPR implementation in Latvia.

lv_dp_get_guideline

Get a specific DVI guidance document by its database ID.

lv_dp_list_topics

List all covered data protection topics with Latvian and English names. Use topic IDs to filter decisions and guideli...

lv_dp_about

Return metadata about this MCP server: version, data source, coverage, and tool list.

All tools return structured data with source references and timestamps.


Data Sources and Freshness

All content is sourced from official Latvian regulatory publications:

  • DVI (Data State Inspectorate) -- Official regulatory authority

Data Currency

  • Database updates are periodic and may lag official publications

  • Freshness checks run via GitHub Actions workflows

  • Last-updated timestamps in tool responses indicate data age

See sources.yml for full provenance metadata.


Security

This project uses multiple layers of automated security scanning:

Scanner

What It Does

Schedule

CodeQL

Static analysis for security vulnerabilities

Weekly + PRs

Semgrep

SAST scanning (OWASP top 10, secrets, TypeScript)

Every push

Gitleaks

Secret detection across git history

Every push

Trivy

CVE scanning on filesystem and npm dependencies

Daily

Docker Security

Container image scanning + SBOM generation

Daily

Socket.dev

Supply chain attack detection

PRs

Dependabot

Automated dependency updates

Weekly

See SECURITY.md for the full policy and vulnerability reporting.


Important Disclaimers

Not Regulatory Advice

THIS TOOL IS NOT REGULATORY OR LEGAL ADVICE

Regulatory data is sourced from official publications by DVI (Data State Inspectorate). However:

  • This is a research tool, not a substitute for professional regulatory counsel

  • Verify all references against primary sources before making compliance decisions

  • Coverage may be incomplete -- do not rely solely on this for regulatory research

Before using professionally, read: DISCLAIMER.md | PRIVACY.md

Confidentiality

Queries go through the Claude API. For privileged or confidential matters, use on-premise deployment. See PRIVACY.md for details.


Development

Setup

git clone https://github.com/Ansvar-Systems/latvian-data-protection-mcp
cd latvian-data-protection-mcp
npm install
npm run build
npm test

Running Locally

npm run dev                                       # Start MCP server
npx @anthropic/mcp-inspector node dist/index.js   # Test with MCP Inspector

Data Management

npm run build:db       # Rebuild SQLite database from seed data
npm run check-updates  # Check for new regulatory data

More Ansvar MCPs

Full fleet at ansvar.eu/gateway.

Contributing

Contributions welcome! See CONTRIBUTING.md for guidelines.


License

Apache License 2.0. See LICENSE for details.

Data Licenses

Regulatory data sourced from official government publications. See sources.yml for per-source licensing details.


About Ansvar Systems

We build AI-powered compliance and legal research tools for the European market. Our MCP fleet provides structured, verified regulatory data to AI assistants -- so compliance professionals can work with accurate sources instead of guessing.

ansvar.eu -- Stockholm, Sweden


Available Tools

6 tools
lv_dp_aboutA

Return metadata about this MCP server: version, data source, coverage, and tool list.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It explicitly states the tool returns metadata and enumerates the fields (version, data source, coverage, tool list), making it obvious that this is a safe read-only operation. There are no side effects to disclose for such a simple endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the core action and lists the return contents without any wasted words or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-output-schema tool, the description adequately covers what the tool does and what it returns. An agent can confidently invoke it without needing further clarification.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and the description correctly implies it takes no input. With zero parameters, the baseline is 4, and there is nothing more to explain about parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Return' and identifies the resource as 'metadata about this MCP server', listing the exact contents (version, data source, coverage, tool list). This clearly distinguishes it from sibling tools like lv_dp_get_decision or lv_dp_search_guidelines, which focus on specific data entities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The context is clear: this tool is for obtaining server-level metadata and is distinct from tools that retrieve or search decisions/guidelines. While it doesn't explicitly name alternatives or exclusions, the purpose is so specific that an agent can easily infer when to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lv_dp_get_decisionA

Get a specific DVI decision by reference number.

ParametersJSON Schema
NameRequiredDescriptionDefault
referenceYesDVI decision reference (e.g., 'DVI-2022-001')

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'get,' which implies read-only, but does not explicitly confirm safety, describe what is returned, or explain error handling for invalid references. This is a minimal gap for a simple get operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is front-loaded with the verb and resource. No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one parameter and no output schema, the description is minimally adequate. It specifies the input and action, but does not describe the return type, success/error behavior, or any prerequisites. Given the low complexity, this is acceptable but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides full coverage of the parameter, including a clear example. The description's mention of 'reference number' aligns with the schema but adds no additional semantic value beyond what is already documented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets a specific DVI decision by reference number. This distinguishes it from sibling search tools like lv_dp_search_decisions, which are for finding decisions, not retrieving a specific one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: use this tool when you have a specific decision reference number. However, there is no explicit guidance on when to use this instead of search_decisions or get_guideline, nor any mention of alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lv_dp_get_guidelineA

Get a specific DVI guidance document by its database ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesGuideline database ID (from lv_dp_search_guidelines results)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It indicates a read-only 'Get' operation but does not disclose what is returned (e.g., full document text, metadata), error behavior, or any prerequisites beyond having an ID. This is minimal but not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence preceding the schema. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (one parameter) and presence of a clear schema, the description is mostly sufficient. However, in the absence of an output schema, it does not specify the return format or content of the guidance document, leaving some ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema fully describes the single parameter 'id' with a clear explanation that it is a guideline database ID from search results. The description's phrase 'by its database ID' reinforces this without adding significant new meaning, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool retrieves a specific DVI guidance document using a database ID. The verb 'Get' and resource 'DVI guidance document' distinguish it from sibling tools like lv_dp_search_guidelines and lv_dp_get_decision.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly contrast with sibling tools, but the parameter description indicates the ID comes from lv_dp_search_guidelines results, implying this is used after a search. This is helpful but not explicit guidance on when to choose this over alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lv_dp_list_topicsA

List all covered data protection topics with Latvian and English names. Use topic IDs to filter decisions and guidelines.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states that the tool returns a list of topics with both Latvian and English names, which is transparent about the output content for a simple read-only listing. No side effects or complex behaviors need disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences that front-load the core purpose and then give a practical usage hint. Every word earns its place; no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, parameterless listing tool, the description sufficiently explains what it returns and why it's useful. It doesn't specify output formatting or pagination, but with no output schema and given the small likely result set, it is complete enough for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the input schema is empty. Per calibration, a baseline of 4 applies. The description correctly mentions topic IDs only as a use case for other tools, not as parameters here, adding no unnecessary parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and resource ('all covered data protection topics'), adding detail that topics have Latvian and English names. It clearly distinguishes this from sibling tools that fetch individual guidelines/decisions or search for them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence ('Use topic IDs to filter decisions and guidelines') provides clear context on why the tool is useful and how it connects to other operations. While it doesn't explicitly say 'use this instead of X', it implies a workflow without needing lengthy alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lv_dp_search_decisionsA

Full-text search across DVI (Datu valsts inspekcija) decisions and sanctions. Returns matching decisions with reference, entity name, fine amount, and GDPR articles cited.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by decision type. Optional.
limitNoMaximum number of results to return. Defaults to 20.
queryYesSearch query (e.g., 'sīkdatnes', 'darbinieku uzraudzība', 'datu pārkāpums')
topicNoFilter by topic ID (e.g., 'consent', 'cookies', 'data_breach'). Optional.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It indicates a non-destructive read operation via 'search' and 'returns,' and names the output fields. However, it does not disclose default limit behavior, pagination, or any access requirements. For a lightweight read tool, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence. It starts with the action and resource, then lists return fields—no filler, every word serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema, the description's list of return fields (reference, entity name, fine amount, GDPR articles) provides necessary context. It does not mention default limit or pagination, but those are covered by the schema's limit param. The tool is straightforward, and the description covers the essential information an agent needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with each parameter already described. The description adds the 'full-text' qualifier, which informs how the query parameter is interpreted, but otherwise adds no new parameter details beyond what the schema provides. Thus, it meets the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb 'Full-text search' and names the exact resource 'DVI (Datu valsts inspekcija) decisions and sanctions.' This clearly differentiates it from sibling tool lv_dp_search_guidelines, which searches guidelines. It also lists concrete return fields, making the tool's scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly establishes the context for use: searching decisions and sanctions. While it doesn't explicitly state 'use this instead of lv_dp_search_guidelines for decisions,' the resource distinction is implied strongly enough that an agent can infer when to select this tool over its siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lv_dp_search_guidelinesA

Search DVI guidance documents: recommendations, guidelines, and FAQs on GDPR implementation in Latvia.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by guidance type. Optional.
limitNoMaximum number of results to return. Defaults to 20.
queryYesSearch query (e.g., 'DPIA', 'sīkdatnes', 'datu subjekta tiesības')
topicNoFilter by topic ID. Optional.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden for behavioral disclosure. The verb 'Search' implies a read-only operation, and the description adds context about document types, but it does not disclose results format, pagination behavior, or any side effects. It is not misleading, but it lacks rich behavioral detail beyond the immediate purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that leads with the action verb 'Search' and immediately specifies the resource. It contains no filler or redundant information, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema and annotations, the description provides the essential context (what is being searched and the domain). However, it does not mention that results are likely a list or that a companion tool lv_dp_get_guideline exists for retrieving details. Still, for a straightforward search tool, it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters have descriptions. The tool description does not add syntax or format details beyond the schema, though it does reinforce the meaning of 'type' by listing document categories like recommendations and FAQs. This meets the baseline but does not exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Search DVI guidance documents' with a specific verb and resource. It further specifies the content type ('recommendations, guidelines, and FAQs') and jurisdiction ('GDPR implementation in Latvia'), which distinguishes it from sibling tools like lv_dp_search_decisions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when the user needs guidance documents, but it does not explicitly mention when to use this tool versus alternatives like lv_dp_get_guideline or lv_dp_search_decisions. There is no clear exclusion or alternative naming, so it remains at the 'implied usage' level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.1.0
    • First observedlv_dp_about
    • First observedlv_dp_get_decision
    • First observedlv_dp_get_guideline
    • First observedlv_dp_list_topics
    • First observedlv_dp_search_decisions
    • First observedlv_dp_search_guidelines

TDQS

A4.1/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct resource and action: search and get for decisions, search and get for guidelines, list topics, and server metadata. There is no overlap between the decision and guideline tools, and the auxiliary tools are clearly separate.

Naming Consistency4/5

All tool names share the lv_dp_ prefix and mostly follow a verb_noun pattern (get_guideline, search_decisions, get_decision, search_guidelines, list_topics). The sole exception is 'lv_dp_about', which is a noun rather than a verb-action name, but it is still recognizable and consistent in style.

Tool Count5/5

With six tools, the server is well-scoped for its domain—covering search, retrieval, topic navigation, and metadata without unnecessary bloat. This count is appropriate for a focused data protection resource server.

Completeness5/5

The tool set provides comprehensive read-only coverage for Latvian data protection resources: decisions and guidelines can be searched and retrieved individually, topics enable filtering, and metadata explains the server's scope. There are no obvious gaps for the stated purpose.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers