AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
MCP verified MIT Self-run

DanNet

mcp-kuhumcst-dannet · by kuhumcst

The Danish WordNet.

No reviews yet
0 installs
10 views
0.0% view→install

Install

$ agentstack add mcp-kuhumcst-dannet

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/mcp-kuhumcst-dannet)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
8d ago

Declared compatibility

Claude CodeClaude DesktopCursorWindsurf

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of DanNet? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

DanNet is a WordNet for the Danish language. DanNet uses RDF as its native representation at both the database level, in the application space, and as its primary serialisation format.

  • Browse the data at wordnet.dk
  • Query the data by [integrating with AI](#llm-integration)
  • Download datasets from the releases page

Table of Contents

  • [Dataset Formats](#dataset-formats)
  • [Companion Datasets](#companion-datasets)
  • [Standards](#standards)
  • [LLM Integration](#llm-integration) (AI)
  • [Implementation](#implementation)
  • [Setup](#setup)
  • [Deployment](#deployment)
  • [Database Release Workflow](#database-release-workflow)

Dataset Formats

DanNet is available in multiple formats to maximise compatibility:

| Format | Description | |--------|---------------------------------------------------------------------------------------------------------------------------------------------| | RDF (Turtle) | Native representation. Load into any RDF graph database (such as Apache Jena) and query with SPARQL. | | CSV | Published with column metadata as CSVW. | | WN-LMF | XML format compatible with Python libraries like wn. |

Example: Using DanNet with Python

import wn

wn.add("dannet-wn-lmf.xml.gz")

for synset in wn.synsets('kage'):
    print((synset.lexfile() or "?") + ": " + (synset.definition() or "?"))

Differences Between Formats

While every format includes all synsets/senses/words, the CSV and WN-LMF variants do not include every data point:

  • CSV: Some data is lost when converting from an open graph to fixed tables.
  • WN-LMF: Only official GWA relations are included per the standard (proprietary DanNet relations from the [DanNet schema](/resources/schemas/internal/dannet-schema.ttl) are excluded).

For the complete dataset, use the RDF format or browse at wordnet.dk.

Companion Datasets

Several companion datasets expand the RDF graph with additional data:

| Dataset | Description | |---------|-------------| | COR | Links DanNet resources to IDs from the COR project. | | DDS | Adds sentiment data to DanNet resources. | | OEWN extension | Provides DanNet-style labels for the Open English WordNet to facilitate browsing connections between the two datasets. |

Inferred Data

Additional data is implicitly inferred from the base dataset, companion datasets, and ontological metadata. These inferences can be browsed at wordnet.dk. Releases containing fully inferred graphs are specifically marked as such.

Standards

DanNet is based on the Ontolex-lemon standard combined with relations defined by the Global Wordnet Association as used in the official GWA RDF standard.

| Ontolex-lemon class | Represents | |---------------------|------------| | ontolex:LexicalConcept | Synsets | | ontolex:LexicalSense | Word senses | | ontolex:LexicalEntry | Words | | ontolex:Form | Forms |

URI Prefixes

| Prefix | URI | Purpose | |--------|-----|---------| | dn | https://wordnet.dk/dannet/data/ | Dataset instances | | dnc | https://wordnet.dk/dannet/concepts/ | Ontological type members | | dns | https://wordnet.dk/dannet/schema/ | Schema definitions | | dnf | https://wordnet.dk/dannet/function/ | Custom SPARQL functions (dnf:path, dnf:lch, dnf:wup synset similarity) |

All DanNet URIs resolve to HTTP resources. Accessing one of these URIs via a GET request returns the data for that resource.

Schemas

DanNet has proprietary relations defined in the [DanNet schema](/resources/schemas/internal/dannet-schema.ttl) in an Ontolex-compatible way. There is also a schema for [EuroWordNet concepts](/resources/schemas/internal/dannet-concepts.ttl). Both schemas follow the RDF conventions listed by Philippe Martin.

LLM Integration

DanNet can be connected to AI tools like Claude via MCP (Model Context Protocol).

  • MCP server URL: https://wordnet.dk/mcp
  • Registry ID: io.github.kuhumcst/dannet

To connect in e.g. Claude Desktop: go to Settings > Connectors > Browse Connectors, click "add a custom one", enter a name (e.g., "DanNet") and the MCP server URL.

Once connected, you can query DanNet's semantic relations directly through Claude.

Implementation

The database backend is Apache Jena, a mature RDF triplestore with OWL inference support. When represented in Jena, DanNet's relations form a queryable knowledge graph. DanNet is developed in Clojure, using libraries like Aristotle to interact with Jena.

See [rationale.md](pages/rationale-en.md) for more on the design decisions.

Full Production Setup

The production deployment at wordnet.dk consists of three services managed via Docker Compose:

  • DanNet — the Clojure/ClojureScript web application
  • MCP server — a Python-based [MCP server](mcp/) providing LLM access to DanNet
  • Caddy — reverse proxy handling HTTPS and routing

Clojure Support

DanNet can be queried in various ways from Clojure (see [queries.md](pages/queries-en.md)). Apache Jena transactions are built-in and enable persistence via the TDB 2 layer.

Web Application

The frontend is written in ClojureScript using Rum, served by Pedestal. The app works both as a single-page application (with JavaScript) and as a regular HTML website (without). Content negotiation serves different representations (HTML, RDF, Transit+JSON) based on the request.

See [doc/web.md](doc/web.md) for details.

Bootstrap Process

New releases are bootstrapped from the preceding release. The process (in [dk.cst.dannet.db.bootstrap](src/main/dk/cst/dannet/db/bootstrap.clj)):

  1. Load and clean the previous version's RDF data
  2. Convert to triples using the current schema
  3. Import into Apache Jena graphs and apply release changes
  4. Infer additional triples via [OWL/RDFS schemas](/resources/schemas/)
  5. Export the final RDF dataset (see [Database Release Workflow](#database-release-workflow))

> Bootstrap data should be located in ./bootstrap relative to the execution directory.

Setup

DanNet requires Java and Clojure's official CLI tools. Dependencies are specified in [deps.edn](deps.edn).

Development

  1. Start the web service using (restart) in [dk.cst.dannet.web.service](src/main/dk/cst/dannet/web/service.clj) — available at localhost:3456
  2. Run the frontend with shadow-cljs:

``shell npx shadow-cljs watch app ``

Testing a Release Build

Using Docker (requires Docker daemon running):

# From the docker/ directory
docker compose up --build

Or manually:

shadow-cljs --aliases :frontend release app
clojure -T:build org.corfield.build/uber :lib dk.cst/dannet :main dk.cst.dannet.web.service :uber-file "\"dannet.jar\""
java -jar -Xmx4g dannet.jar

Memory Requirements

The system uses ~1.5 GB when idle and ~3 GB when rebuilding the database. A server should have at least 4 GB of available RAM.

Validating RDF (SHACL)

The dn: dataset is validated against SHACL shapes located in [resources/schemas/internal/shapes/](/resources/schemas/internal/shapes/) (see [dk.cst.dannet.db.shapes](src/main/dk/cst/dannet/db/shapes.clj)). This happens in several ways:

  • a non-fatal check of the asserted graph runs asynchronously at every boot, logging violations and comparing counts to a [known baseline](/resources/schemas/internal/shapes-baseline.edn),
  • RDF exports of the dn: dataset are gated: a baseline regression aborts the export, and
  • fixture-based tests run via clojure -X:test, which is also executed by the GitHub Actions workflow in [.github/workflows/test.yml](/.github/workflows/test.yml).

Validating WN-LMF

python3 -m venv examples/venv
source examples/venv/bin/activate
python3 -m pip install wn
python -m wn validate --output-file examples/wn-lmf-validation.json export/wn-lmf/dannet-wn-lmf.xml

Deployment

The production server at wordnet.dk runs as a systemd service delegating to Docker.

Service Setup

cp system/dannet.service /etc/systemd/system/dannet.service
systemctl enable dannet
systemctl start dannet

Updating the Web Service

To update the web service software without changing the database:

# From the docker/ directory
docker compose up -d dannet --build

Database Release Workflow

When releasing a new version of the database:

  1. Build the database locally via REPL in dk.cst.dannet.web.service:

``clojure (restart) ;; Then in dk.cst.dannet.db: (export-rdf! @dk.cst.dannet.web.resources/db) (export-csv! @dk.cst.dannet.web.resources/db) (export-wn-lmf! "export/wn-lmf/") ``

  1. Stop the service on production:

``shell docker compose stop dannet ``

  1. Transfer database and export files via SFTP, then:

``shell unzip -o tdb2.zip -d /dannet/db/ mv cor.zip dannet.zip dds.zip oewn-extension.zip /dannet/export/rdf/ mv dannet-csv.zip /dannet/export/csv/ mv dannet-wn-lmf.xml.gz /dannet/export/wn-lmf/ ``

  1. Restart:

``shell docker compose up -d dannet --build ``

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.