Skip to main content
Glama
Ansvar-Systems

latvian-cybersecurity-mcp

Latvian Cybersecurity 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 cybersecurity data for AI compliance tools.

License CI

Query Latvian cybersecurity data -- regulations, decisions, and requirements from CERT.lv -- directly from Claude, Cursor, or any MCP-compatible client.

Built by Ansvar Systems -- Stockholm, Sweden


Related MCP server: Estonian Cybersecurity MCP

Available Tools (6)

Tool

Description

lv_cyber_search_guidance

Full-text search across CERT.LV cybersecurity guidelines, recommendations, and national standards. Covers network sec...

lv_cyber_get_guidance

Get a specific CERT.LV guidance document by reference (e.g.,

lv_cyber_search_advisories

Search CERT.LV security advisories and alerts. Returns advisories with severity, affected products, and CVE reference...

lv_cyber_get_advisory

Get a specific CERT.LV security advisory by reference (e.g.,

lv_cyber_list_frameworks

List all cybersecurity frameworks and standard series covered in this MCP, including CERT.LV guidelines and NIS2 impl...

lv_cyber_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:

  • CERT.lv -- 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 CERT.lv. 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-cybersecurity-mcp
cd latvian-cybersecurity-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_cyber_aboutA

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It accurately states the action (returns metadata) and enumerates the return fields. It does not mention any side effects or network dependencies, but for a metadata endpoint this is adequately transparent.

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?

Single sentence, front-loaded with verb 'Return', concise list of contents. Every word earns its place. No redundancy or fluff.

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

Completeness5/5

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

Given the tool's simplicity (no params, no output schema, no annotations), the description fully covers what the tool does and what it returns. Complete for its complexity level.

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?

Tool has zero parameters, so baseline is 4. Description adds no parameter-specific details, but none are needed. The absence of parameters is clear from the schema, and the description sufficiently explains what the tool returns.

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?

Description uses specific verb 'Return' and identifies exact resource (metadata about this MCP server) with concrete contents (version, data source, coverage, tool list). Clearly distinguishes from sibling tools that search/get guidance or advisories.

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?

Implied usage is clear: use when you need server metadata. No explicit exclusions or alternatives named, but given the sibling tools are all content-focused, context is sufficient. Lacks a direct 'when not to use' statement, so not a 5.

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

lv_cyber_get_advisoryA

Get a specific CERT.LV security advisory by reference (e.g., 'CERT-LV-A-2024-001').

ParametersJSON Schema
NameRequiredDescriptionDefault
referenceYesCERT.LV advisory reference

TDQS

A3.8/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It only states the purpose and gives an example; it does not mention potential errors, authentication, rate limits, or whether the operation is read-only. The name implies a safe get, but this is assumed from the verb and not explicitly stated.

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, well-structured sentence that front-loads the action and resource. It includes an example without redundancy, making it clear and 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?

For a simple one-parameter get tool, the description is complete enough for selection and invocation. It lacks an explanation of the return value or error handling, but given the simple nature and no output schema, the description suffices.

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 schema only says 'CERT.LV advisory reference', but the description adds a concrete example format ('CERT-LV-A-2024-001'), which helps the agent construct valid input. This goes beyond the schema and adds meaningful parameter clarity.

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 action ('Get'), the resource ('a specific CERT.LV security advisory'), and the distinguishing parameter (by reference). It differentiates from sibling tools like search_advisories by emphasizing retrieval of a known reference rather than searching.

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 the tool is for when you have a specific reference, and the example format clarifies the expected input. However, it does not explicitly mention when not to use it or point to alternatives like search_advisories for queries without a reference.

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

lv_cyber_get_guidanceA

Get a specific CERT.LV guidance document by reference (e.g., 'CERT-LV-G-2023-001').

ParametersJSON Schema
NameRequiredDescriptionDefault
referenceYesCERT.LV document reference

TDQS

A3.7/5.0
Behavior2/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 of behavioral disclosure. It only states the action and reference format, with no information about return content, error handling, or any operational nuances. This is minimal and leaves the agent guessing about what a fetch actually returns.

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, well-structured sentence that front-loads the action and resource, includes a practical example, and contains 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 one-parameter get tool, the description covers the essential purpose and parameter format. However, it does not explain return values (no output schema exists), nor does it reference sibling tools to guide selection. It is adequate but leaves gaps in an otherwise simple context.

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 schema fully covers the parameter 'reference' with a basic description, but the tool description adds a concrete format example ('CERT-LV-G-2023-001'), which is valuable for constructing valid inputs. This exceeds the schema's minimal guidance.

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 action (Get), the resource (specific CERT.LV guidance document), and the method (by reference), with an explicit example format. It inherently distinguishes from sibling tools like search_guidance (search vs. fetch) and get_advisory (guidance vs. advisory).

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 use when you have a specific reference ID, but it does not explicitly mention when to use this tool over alternatives such as lv_cyber_search_guidance for searching or lv_cyber_get_advisory for advisories. No when-not-to-use guidance is provided.

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

lv_cyber_list_frameworksA

List all cybersecurity frameworks and standard series covered in this MCP, including CERT.LV guidelines and NIS2 implementation materials for Latvia.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description must convey behavior directly. The verb 'List' conveys a read-only operation, and the phrase 'covered in this MCP' indicates a fixed, enumerable set. It does not detail return format or side effects, but for a simple catalog tool, the behavior is fully transparent.

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 with a clear verb and object. Every phrase earns its place: 'List' states the action, 'all cybersecurity frameworks and standard series' states the resource, and the examples provide scope without fluff.

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

Completeness5/5

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

Given the tool's simplicity (zero parameters, no output schema, no annotations), the description is fully complete. It states exactly what is returned ('all...covered in this MCP') and even gives examples of content categories, leaving no critical gaps for an agent to invoke the tool correctly.

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, so the baseline is 4. The description adds meaning by defining what the list contains (frameworks, standard series, specific Latvian materials), enriching the meaning of the tool's output even though no parameters exist to clarify.

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 ('cybersecurity frameworks and standard series'), and distinguishes the tool from siblings by focusing on enumeration rather than search or get operations. It further clarifies scope with concrete examples (CERT.LV guidelines, NIS2 implementation materials), making the purpose unmistakable.

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 an agent needs an overview of all covered frameworks—but does not explicitly contrast with alternatives like lv_cyber_search_guidance or lv_cyber_get_guidance. No exclusions or alternative-use cases are stated, so the guidance is present only implicitly.

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

lv_cyber_search_advisoriesA

Search CERT.LV security advisories and alerts. Returns advisories with severity, affected products, and CVE references where available.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Defaults to 20.
queryYesSearch query (e.g., 'kritiska ievainojamība', 'izpirkuma programmatūra', 'pikšķerēšana')
severityNoFilter by severity level. Optional.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It adds useful behavioral context by stating the return fields (severity, affected products, CVE references), which goes beyond the schema. However, it does not disclose other behavioral traits such as query matching behavior, result ordering, pagination limits beyond the schema, or any access requirements. For a read-only search 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, concise sentence that states the purpose and return value. It is front-loaded with the action ('Search CERT.LV...') and contains no filler or irrelevant information. Every word adds value.

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?

The combination of the description and the well-documented schema is sufficient for a search tool. The description covers the core return fields while the schema covers parameters. Although there is no output schema, the mention of severity, affected products, and CVE references gives the agent a solid expectation of results. Missing details like sorting or result structure are minor for this tool type.

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 input schema provides complete descriptions for all three parameters (query examples, limit default, severity enum), achieving 100% coverage. The tool description adds no additional parameter semantics. The baseline of 3 applies because the schema already does the heavy lifting.

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

Purpose4/5

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

The description clearly states the tool searches CERT.LV security advisories and alerts, with a specific verb and resource. It mentions the return fields (severity, affected products, CVE references), making the purpose clear. However, it does not explicitly distinguish itself from sibling tools like lv_cyber_get_advisory, relying mainly on the search vs. get naming distinction.

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 for searching advisories/alerts but provides no explicit guidance on when to use this versus alternatives such as lv_cyber_get_advisory or lv_cyber_search_guidance. No exclusions or alternative tool mentions are present, leaving usage context implicit.

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

lv_cyber_search_guidanceA

Full-text search across CERT.LV cybersecurity guidelines, recommendations, and national standards. Covers network security, incident response, risk management, and NIS2 implementation guidance for Latvia. Returns matching documents with reference, title, series, and summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by document type. Optional.
limitNoMaximum number of results to return. Defaults to 20.
queryYesSearch query (e.g., 'kiberdrošība', 'incidentu pārvaldība', 'NIS2', 'tīkla drošība')
seriesNoFilter by issuing body or series. Optional.
statusNoFilter by document status. Optional.

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It describes search behavior and return fields (reference, title, series, summary) but does not disclose any limitations, permissions, or safety traits beyond what the name implies. As a read-only search tool, this is adequate but minimal, offering some context without covering details like pagination or ordering.

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 sentences, front-loaded with the core action ('Full-text search'), and each sentence serves a purpose: the first defines the resource and scope, the second lists topics and return fields. No wasted words.

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 no output schema and no annotations, the description is quite complete: it explains what is searched, the source, covered domains, and the returned document fields. It does not mention limit behavior or pagination, but the schema already documents the limit parameter, so this is acceptable. The description covers the necessary context for a search tool.

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 the baseline is 3 even with no param info in the description. The description adds some contextual value by mentioning coverage areas (e.g., NIS2, network security) that map to filter parameters, but it does not elaborate on parameter syntax or behavior beyond what the schema already provides.

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?

Description opens with a specific verb 'Full-text search' and resource 'CERT.LV cybersecurity guidelines, recommendations, and national standards', clearly distinguishing it from sibling tools like lv_cyber_search_advisories and lv_cyber_get_guidance. It also specifies the document types and return fields, making the purpose 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 provides clear context on the tool's scope (guidelines, recommendations, standards, NIS2) and the topics it covers, such as network security and incident response. However, it does not explicitly state when to use this tool over alternatives like search_advisories or get_guidance, nor does it mention any exclusions.

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_cyber_about
    • First observedlv_cyber_get_advisory
    • First observedlv_cyber_get_guidance
    • First observedlv_cyber_list_frameworks
    • First observedlv_cyber_search_advisories
    • First observedlv_cyber_search_guidance

TDQS

A4.1/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clear, distinct purpose: search vs. get for guidance and advisories, plus list_frameworks and about. No overlap or ambiguity.

Naming Consistency5/5

All tools follow the 'lv_cyber_' prefix with consistent verb_noun naming (get_guidance, search_guidance, get_advisory, etc.). The 'about' tool is a minor deviation but acceptable as a metadata endpoint.

Tool Count5/5

6 tools is a well-scoped count for a specialized cybersecurity information retrieval server, covering search, retrieval, and metadata without being bloated.

Completeness4/5

The read-only domain is well covered with search/get for both guidance and advisories, plus framework listing. Missing dedicated list-all endpoints for guidance/advisories is a minor gap, but search can likely cover it.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers