21 KiB
MCP serveris — Kultūras un valodu tehnoloģiju arhitektūras interfeiss
Pārskats
Šis dokuments apraksta KISC MCP (Model Context Protocol) serveri, kas nodrošina AI aģentiem un automatizācijas rīkiem strukturētu piekļuvi Latvijas kultūras un valodu tehnoloģiju jomas mērķarhitektūras datiem.
Servera adrese: https://llm.kis.gov.lv/mcp
Versija: 0.3.0
Operators: Kultūras informācijas sistēmu centrs (KISC)
Identitāte: did:web:llm.kis.gov.lv
MCP serveris ir tikai-lasīšanas interfeiss — tas nemaina SSOT saturu, bet gan ļauj to meklēt, analizēt un ģenerēt dokumentus no tā.
1) Kas ir šī arhitektūra un ko MCP serveris dara
Kultūras un valodu tehnoloģiju jomas mērķarhitektūra apraksta Latvijas valsts stratēģiju kultūras mantojuma digitalizācijai un latviešu valodas tehnoloģiju attīstībai. Tā ietver divus apakšdomēnus:
- Kultūras apakšjoma (
kultura) — muzeju, bibliotēku, arhīvu un kultūras pieminekļu digitalizācija, datu pārvaldība, publiskā pieejamība - Valodu tehnoloģiju apakšjoma (
valoda) — Lielais latviešu valodas modelis (LVM-LV), mašīntulkošana, runas sintēze/atpazīšana, semantiskā meklēšana
Arhitektūra satur šādus elementu tipus:
| Entītiju tips | Piemēri | Skaits |
|---|---|---|
Mērķi (goal) |
M1 "Kultūras mantojuma saglabāšana", M4 "Latviešu valoda digitālajā laikmetā" | 6 |
Organizācijas (org) |
KISC, LNB, LU MII, Kultūras ministrija | ~40 |
Funkcijas (func) |
Mantojuma digitalizācija, valodu platformas uzturēšana | 6 |
Pakalpojumi (svc) |
Mašīntulkošana, runas sintēze, DOM, statistikas portāls | 30 |
Informācijas resursi (ir) |
Valodu korpusi, muzeja dati, terminoloģija | 23 |
Sistēmas (sys) |
LVM-LV, VBK, valodu platformas, DOM | 32 |
Ceļa kartes pasākumi (rm) |
Modernizācijas iniciatīvas ar laika grafiku | ~10 |
Riski (risk) |
Datu kvalitāte, kiberdrošība, AI Act atbilstība | ~8 |
Dokumenti (doc) |
GDPR, AI Act, VDAR, nozares regulējums | ~15 |
Principi (principle) |
Arhitektūras pamatprincipi | 4 |
2) MCP rīki — ko AI aģents saņem
Kad AI aģents (piemēram, Claude) pieslēdzas MCP serverim, tam kļūst pieejami 9 rīki. Šajā sadaļā aprakstīts katrs rīks — tā nolūks, parametri un kas tiek atgriezts.
2.1 identify — servera identitātes verificēšana
Nolūks: Atgriež informāciju par servera operatoru, identitāti un uzticamības pierādījumiem. Ļauj AI aģentam pārliecināties, ka serveris pieder KISC un ir verificēts.
Parametri: nav obligātu parametru.
Atgriež:
- Servera nosaukums, versija, operators (KISC)
- DID identitāte:
did:web:llm.kis.gov.lv - MCPF (MCP Trust Framework) atbilstības informācija
- VeriTrust izdotas verifikācijas akreditācijas URL
- JWKS, DID dokumenta, MCP manifesta un uzticamības reģistra URL
Kad lietot: Pirms uzticēšanās servera datiem — lai pārliecinātos, ka datu avots ir leģitīms.
2.2 describe_model — arhitektūras metamodelis
Nolūks: Atgriež pilnu arhitektūras datu modeļa aprakstu — kādi entītiju tipi pastāv, kādi atribūti katram tipam, kādi attiecību tipi, kādi apakšdomēni un skati.
Parametri: nav.
Atgriež:
- 11 entītiju tipu saraksts ar to ID shēmām un atribūtiem
- 16 attiecību tipu saraksts (has_goal, depends_on, owns, u.c.)
- 2 apakšdomēni (kultura, valoda)
- 6 dokumenta skatu saraksts
Kad lietot: Kā pirmo soli — lai AI aģents saprastu, kāda veida dati ir pieejami un kā tie ir strukturēti. Šis rīks ir "karte" visiem pārējiem rīkiem.
Piemērs — ko AI aģents uzzina:
"Šajā arhitektūrā ir 6 stratēģiskie mērķi ar ID formātā
goal.m1–goal.m6. Sistēmas ir ar IDsys.kultura.01vaisys.valoda.01. Attiecības ietverhas_system,depends_on,owns. Ir 2 apakšdomēni: kultūra un valoda."
2.3 search — meklēšana pēc atslēgvārdiem
Nolūks: Meklēt jebkādu arhitektūras entītiju vai dokumenta fragmentu pēc atslēgvārdiem. Atbalsta gan latviešu, gan angļu valodas vaicājumus.
Parametri:
query(obligāts) — meklēšanas frāze, piemēram, "valodu tehnoloģijas", "KISC", "digitālais mantojums", "AI risks"kind(neobligāts) — filtrēt pēc tipa: goal, org, sys, svc, ir, func, principle u.c.subdomain(neobligāts) — filtrēt pēc apakšdomēna: "kultura" vai "valoda"limit(neobligāts) — rezultātu skaits (noklusējums 25)
Atgriež: Sakārtots saraksts ar atrastajām entītijām, katrai norādot ID, piemērotības novērtējumu (score), tipu un pilnus datus.
Kad lietot: Kad zināms aptuvens jautājums, bet nav precīzs entītijas ID.
Piemēri:
search(query="mašīntulkošana") → atrod svc.valoda.04, sys.valoda.03
search(query="LNB", kind="org") → atrod org.lnb
search(query="risks", kind="risk") → atrod visus riskus
search(query="korpuss", subdomain="valoda") → atrod ir.valoda.01, ir.valoda.02
2.4 get_entity — konkrētas entītijas izgūšana
Nolūks: Atgriež pilnu informāciju par vienu konkrētu entītiju pēc tās ID.
Parametri:
id(obligāts) — entītijas ID, piemēram:goal.m4,org.kisc,sys.valoda.02,risk.001
Atgriež: Visu entītijas informāciju — nosaukums, apraksts, statuss, izmaiņu apraksts, VIRSIS ID atsauces un avota faila ceļš.
Kad lietot: Kad precīzi zināms, kuru entītiju vajag apskatīt.
Piemēri:
get_entity(id="goal.m4") → "Latviešu valoda digitālajā laikmetā" — pilns apraksts
get_entity(id="sys.valoda.02") → "Lielais latviešu valodas modelis (LVM-LV)" — statuss, resursi
get_entity(id="org.kisc") → KISC organizācijas pilna informācija
2.5 list_entities — entītiju saraksts pēc tipa
Nolūks: Atgriež visu entītiju ID sarakstu, iespējams filtrētu pēc tipa un/vai apakšdomēna. Ļauj ātri uzzināt, kas pastāv.
Parametri:
type(neobligāts) — entītiju tipa filtrs: "goal", "org", "sys", "svc", "ir", "func", "principle", "rm", "risk", "doc", "int"subdomain(neobligāts) — "kultura" vai "valoda"
Atgriež: ID saraksts ar katras entītijas pamata informāciju (nosaukums, tips).
Kad lietot: Kad vajag pārskatu par visām noteikta tipa entītijām.
Piemēri:
list_entities(type="goal") → 6 mērķi (goal.m1–goal.m6)
list_entities(type="sys", subdomain="valoda") → 11 valodu tehnoloģiju sistēmas
list_entities(type="risk") → visi identificētie riski
list_entities() → pilns visu entītiju saraksts
2.6 list_relations — attiecību meklēšana
Nolūks: Atrast visas attiecības (šķautnes), kas saistītas ar konkrētu entītiju — ienākošās, izejošās vai abas.
Parametri:
id(obligāts) — entītijas ID, piemēram:domain.kultura-valoda,goal.m4direction(neobligāts) — "in" (ienākošās), "out" (izejošās), "both" (abas, noklusējums)
Atgriež: Saraksts ar šķautnēm, katrai norādot from, type, to un kopējo skaitu.
Kad lietot: Ietekmes analīzē ("kuri pakalpojumi ir saistīti ar mērķi M4?"), atkarību kartēšanā, audita nolūkos.
Piemērs:
list_relations(id="domain.kultura-valoda", direction="out")
→ 95 šķautnes: has_goal→goal.m1..m6, has_system→sys.kultura.01..sys.valoda.11, u.c.
Piezīme: Pašreizējā versijā visas šķautnes iziet no
domain.kultura-valoda. Lai atrastu, piemēram, visas valodu apakšjomas sistēmas, meklējietlist_relations(id="domain.kultura-valoda")un filtrējiet pēc tipahas_systemuntoprefiksasys.valoda.*.
2.7 subgraph — apakšgrafa izgūšana
Nolūks: Sākot no vienas vai vairākām sēklas entītijām, apstaigāt attiecību grafu un atgriezt visas saistītās entītijas līdz noteiktam dziļumam.
Parametri:
seed_ids(obligāts) — sākuma entītiju ID masīvs, piemēram:["goal.m4"]vai["org.kisc", "org.lumii"]depth(neobligāts) — apstaigāšanas dziļums (noklusējums 1, maks. 3)
Atgriež: Pilns mezglu un šķautņu saraksts — katra mezgla pilna informācija un visas savienojošās šķautnes.
Kad lietot: Lai iegūtu "apkārtnes karti" — visas entītijas, kas saistītas ar noteiktu komponentu.
Piemērs:
subgraph(seed_ids=["domain.kultura-valoda"], depth=1)
→ 96 mezgli, 95 šķautnes — viss domēna saturs
2.8 get_view — dokumenta skata izgūšana
Nolūks: Atgriež viena konkrēta dokumenta skata saturu Markdown formātā. Skati ir cilvēklasāmas dokumenta nodaļas.
Parametri:
view_id(obligāts) — skata identifikators. Iespējamās vērtības:01-ievads— Ievads02-esosas-arhitekturas-novertejums— Esošās arhitektūras novērtējums03-merki-un-principi— Mērķi un principi04-merk-arhitektura— Mērķarhitektūra05-cela-karte— Ceļa karte06-pielikums-komponentu-katalogs— Komponentu katalogs
Atgriež: Markdown saturs ar virsrakstiem, tekstiem un atsaucēm uz reģistriem.
Kad lietot: Lai izlasītu noteiktu dokumenta nodaļu bez pilna dokumenta ģenerēšanas.
Piemērs:
get_view(view_id="03-merki-un-principi")
→ Markdown ar M1–M6 mērķu aprakstiem un arhitektūras principiem
2.9 generate_document — pilna dokumenta ģenerēšana
Nolūks: Reģenerēt pilnu cilvēklasāmo arhitektūras dokumentu no YAML reģistriem. Apvieno visus skatus ar inline reģistru paplašinājumiem vienotā Markdown vai JSON dokumentā.
Parametri:
format(neobligāts) — "markdown" (noklusējums) vai "json"sections(neobligāts) — konkrētu sadaļu saraksts. Ja nav norādīts, ģenerē pilnu dokumentu.- Pieejamās vērtības:
ievads,esosa,merki,arhitektura,celakarte,katalogs
- Pieejamās vērtības:
Atgriež: Pilns Markdown vai JSON dokuments, kas satur visas vai izvēlētās sadaļas ar iekļautiem reģistru datiem.
Kad lietot:
- Lai iegūtu aktuālu, pilnu mērķarhitektūras dokumentu
- Lai sagatavotu materiālu prezentācijai vai pārskatam
- Lai pārbaudītu, ka visi reģistri ir korekti un savstarpēji saskanīgi
Piemēri:
generate_document()
→ Pilns dokuments Markdown formātā (~50+ lappuses)
generate_document(format="json")
→ Strukturēts JSON ar katras sadaļas datiem
generate_document(sections=["merki", "arhitektura"])
→ Tikai mērķi/principi un mērķarhitektūras sadaļas
3) Tipisko jautājumu un atbilžu piemēri
Šajā sadaļā parādīts, kādus jautājumus var uzdot AI aģentam un kādus rīkus tas izmantos, lai atbildētu.
3.1 Vispārīgs pārskats
Jautājums: "Pastāsti par šo arhitektūru — kas tajā ir un kā tā ir organizēta?"
AI aģenta darbība: Izsauc describe_model, pēc tam list_entities vispārīgam pārskatam.
Sagaidāmā atbilde: Skaidrojums, ka tā ir Latvijas kultūras un valodu tehnoloģiju jomas mērķarhitektūra ar 2 apakšdomēniem, 6 mērķiem, ~30 pakalpojumiem, ~30 sistēmām u.c.
3.2 Konkrēta mērķa izpēte
Jautājums: "Kas ir M4 mērķis un kā tas attiecas uz latviešu valodas AI?"
AI aģenta darbība: Izsauc get_entity(id="goal.m4").
Sagaidāmā atbilde: M4 ir "Latviešu valoda digitālajā laikmetā" — mērķis nodrošināt latviešu valodas klātbūtni MI risinājumos, attīstot valodas resursus, modeļus un pakalpojumus.
3.3 Sistēmu saraksts valodu jomā
Jautājums: "Kādas informācijas sistēmas ir valodu tehnoloģiju apakšjomā?"
AI aģenta darbība: Izsauc list_entities(type="sys", subdomain="valoda").
Sagaidāmā atbilde: 11 sistēmu saraksts — valodu tehnoloģiju platforma, LVM-LV, mašīntulkošana, runas atpazīšana, runas sintēze, virtuālie asistenti, semantiskā meklēšana, teksta ģenerēšana, vieglās valodas rīki, valodu resursu pārvaldība, jaunu tehnoloģiju izmitināšanas vide.
3.4 Konkrētas sistēmas detaļas
Jautājums: "Pastāsti par Lielo latviešu valodas modeli — kas tas ir, kāds ir tā statuss?"
AI aģenta darbība: Izsauc search(query="latviešu valodas modelis") vai get_entity(id="sys.valoda.02").
Sagaidāmā atbilde: sys.valoda.02 — "Lielais latviešu valodas modelis (LVM-LV)", statuss "Jauns", tiks izveidots un uzturēts kā valsts mēroga valodas infrastruktūras pamatelements.
3.5 Ietekmes analīze
Jautājums: "Kuras sistēmas un pakalpojumi ir saistīti ar kultūras domēnu?"
AI aģenta darbība: Izsauc list_relations(id="domain.kultura-valoda", direction="out"), filtrē pēc has_system un has_service.
Sagaidāmā atbilde: 21 kultūras sistēma un 16 kultūras pakalpojumi, katrs ar savu ID un saiti uz domēnu.
3.6 Risku analīze
Jautājums: "Kādi riski ir identificēti šajā arhitektūrā?"
AI aģenta darbība: Izsauc list_entities(type="risk"), pēc tam get_entity katram riskam.
Sagaidāmā atbilde: Risku saraksts ar aprakstiem, iespējamību, ietekmi un mazināšanas pasākumiem.
3.7 Pilna dokumenta ģenerēšana
Jautājums: "Saģenerē pilnu mērķarhitektūras dokumentu."
AI aģenta darbība: Izsauc generate_document(format="markdown").
Sagaidāmā atbilde: Pilns Markdown dokuments ar visām 6 sadaļām — ievads, esošā situācija, mērķi un principi, mērķarhitektūra, ceļa karte, komponentu katalogs.
3.8 Organizāciju meklēšana
Jautājums: "Kas ir KISC un kāda ir tā loma?"
AI aģenta darbība: Izsauc search(query="KISC", kind="org") vai get_entity(id="org.kisc").
Sagaidāmā atbilde: Kultūras informācijas sistēmu centrs — domēna īstenotājs, atbildīgs par kultūras IS uzturēšanu un attīstību.
3.9 Ceļa kartes izpēte
Jautājums: "Kādi ir plānotie pasākumi un to laika grafiks?"
AI aģenta darbība: Izsauc get_view(view_id="05-cela-karte") vai list_entities(type="rm").
Sagaidāmā atbilde: Ceļa kartes sadaļa ar pasākumu sarakstu, termiņiem un atbildīgajām organizācijām.
3.10 Servera uzticamības pārbaude
Jautājums: "Vai šis serveris ir uzticams? Kas to pārvalda?"
AI aģenta darbība: Izsauc identify.
Sagaidāmā atbilde: Serveris pieder KISC (Latvijas valsts iestāde), ir verificēts ar VeriTrust akreditāciju, DID identitāte ir did:web:llm.kis.gov.lv, atbilst MCPF Layer 1.
4) Kā AI aģents saprot arhitektūras kontekstu
Kad AI aģents (piemēram, Claude) pieslēdzas šim MCP serverim, tas automātiski saņem šādu konteksta informāciju:
-
Servera apraksts: "MCP server for Latvian cultural heritage and language technology architecture documentation" — tas uzreiz norāda, ka dati ir par Latvijas kultūras un valodu tehnoloģiju jomu.
-
Rīku apraksti: Katrs rīks satur detalizētu
descriptionlauku, kas palīdz AI aģentam saprast, kad un kā to lietot. Piemēram,searchrīka aprakstā ir minēts: "Search KISC architecture documentation for Latvian government cultural digitalization. Contains: strategic goals (M1-M6), organizations (KISC, LNB, LUMII, ministries, museums)..." — tas dod aģentam bagātu kontekstu. -
Entītiju ID shēmas: Rīku parametru aprakstos ir norādīti piemēri (
goal.m4,org.kisc,sys.valoda.01), kas aģentam palīdz konstruēt pareizus vaicājumus. -
Uzticamības metadati: Inicializācijas laikā serveris atgriež MCPF metadatus ar DID, akreditācijas un verifikācijas URL — AI aģents var novērtēt datu avota uzticamību.
Tādējādi AI aģentam nav nepieciešama ārēja apmācība — konteksts tiek saņemts tieši no servera, un aģents var sākt atbildēt uz jautājumiem par arhitektūru nekavējoties.
5) Dokumenta ģenerēšanas detalizēta procedūra
5.1 Ģenerēšanas mehānisms
Dokumenta ģenerēšana apvieno divus avotus:
views/ (Markdown struktūra) + registers/ (YAML dati) → Pilns dokuments
Process:
- Tiek nolasīts katrs skats (
01-ievads.md,02-esosas-...md, ...,06-pielikums-...md) - Skatā atrastās reģistru atsauces (backtick formātā) tiek aizstātas ar attiecīgo YAML reģistru saturu, formatētu kā tabulas vai saraksti
- Rezultāts tiek apvienots vienotā dokumentā
5.2 Ģenerēšana caur komandrindu
cd mcp
REPO_ROOT="$(pwd)/.." \
DOMAIN_DIR="domains/kultura-valoda" \
OUT_FILE="KISC-merkarhitektura-apraksts.md" \
npm run gen:doc
5.3 Ģenerēšana caur MCP (AI aģents)
# Pilns dokuments (visas sadaļas)
generate_document(format="markdown")
# Tikai ievads un mērķi
generate_document(format="markdown", sections=["ievads", "merki"])
# JSON formāts mašīnapstrādei
generate_document(format="json")
# Tikai mērķarhitektūra un katalogs
generate_document(format="markdown", sections=["arhitektura", "katalogs"])
5.4 Sadaļu identifikatori
| Sadaļas ID | Skata fails | Saturs |
|---|---|---|
ievads |
01-ievads.md |
Ievads, tvērums, termini, saīsinājumi |
esosa |
02-esosas-arhitekturas-novertejums.md |
Esošās situācijas novērtējums |
merki |
03-merki-un-principi.md |
Mērķi M1–M6 un 4 arhitektūras principi |
arhitektura |
04-merk-arhitektura.md |
Funkcijas, pakalpojumi, IR, sistēmas |
celakarte |
05-cela-karte.md |
Ceļa karte, riski, mijiedarbības |
katalogs |
06-pielikums-komponentu-katalogs.md |
Pilns komponentu katalogs |
5.5 Ģenerētā dokumenta struktūra
Pilns dokuments satur aptuveni šādu struktūru:
1. Ievads
1.1 Dokumenta nolūks un mērķauditorija
1.2 Domēna arhitektūras tvērums
1.3 Termini un saīsinājumi
1.4 Saistītie dokumenti
2. Esošās arhitektūras novērtējums
2.1 Kultūras apakšjomas esošā situācija
2.2 Valodu tehnoloģiju esošā situācija
2.3 Esošo sistēmu novērtējums
3. Mērķi un principi
3.1 Stratēģiskie mērķi (M1–M6)
3.2 Arhitektūras principi (P1–P4)
4. Mērķarhitektūra
4.1 Funkcijas (6 gab.)
4.2 Pakalpojumi (30 gab. — kultūra + valoda)
4.3 Informācijas resursi (23 gab.)
4.4 Sistēmas (32 gab.)
5. Ceļa karte
5.1 Pasākumu plāns
5.2 Attiecības un atkarības
5.3 Riski
5.4 Mijiedarbības ar citām jomām
6. Pielikums — komponentu katalogs
6.1 Pilns sistēmu saraksts
6.2 Pilns pakalpojumu saraksts
6.3 Pilns IR saraksts
6) MCPF uzticamības ietvars
Serveris implementē MCPF (MCP Trust Framework) Layer 1 — uzticamības atklāšanu sesijas līmenī.
6.1 Inicializācijas metadati
Katras MCP sesijas sākumā serveris atgriež šādus metadatus:
{
"_meta": {
"identity": {
"id": "did:web:llm.kis.gov.lv",
"service": { "mcp": "https://llm.kis.gov.lv/mcp" },
"keys": { "jwks_uri": "https://llm.kis.gov.lv/.well-known/jwks.json" }
},
"mcpf": {
"version": "0.1",
"entrypoint": {
"type": "manifest",
"url": "https://llm.kis.gov.lv/.well-known/mcp/manifest.json"
}
},
"trust": {
"verifications": [{
"verifier": "did:web:veritrust.vc",
"type": ["VerifiableCredential", "MCPServerVerification"],
"covers": "did:web:llm.kis.gov.lv"
}]
}
}
}
6.2 Verifikācijas galapunkti
| URL | Saturs |
|---|---|
https://llm.kis.gov.lv/.well-known/jwks.json |
Publiskā atslēga JWT verifikācijai |
https://llm.kis.gov.lv/.well-known/did.json |
DID dokuments |
https://llm.kis.gov.lv/.well-known/mcp/manifest.json |
MCP manifests |
https://llm.kis.gov.lv/.well-known/mcp-trust-registry.json |
Uzticamības reģistrs |
https://veritrust.vc/portal/mcp/credentials/... |
VeriTrust akreditācija |
7) Tehniskā informācija
7.1 Servera versija un konfigurācija
| Parametrs | Vērtība |
|---|---|
| Versija | 0.3.0 |
| Protokols | MCP 2024-11-05 |
| Transports | Streamable HTTP (/mcp) |
| Iespējas (capabilities) | tools, resources |
| Rīku skaits | 9 |
| Vide | Docker (Node.js 20, TypeScript) |
7.2 Palaišana lokāli (izstrādei)
cd mcp
npm install
npm run dev
Serveris būs pieejams: http://localhost:8787/mcp
7.3 Palaišana ar Docker
cd mcp
docker compose up -d
Vai no POC izvietojuma:
cd /opt/kisc-llm/poc/deploy
docker compose build --no-cache arch-mcp
./scripts/start.sh
7.4 Veselības pārbaude
curl https://llm.kis.gov.lv/health
# → {"status":"ok"}
7.5 MCP inicializācijas tests
curl -sS https://llm.kis.gov.lv/mcp \
-H "content-type: application/json" \
-H "accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{
"protocolVersion":"2024-11-05",
"capabilities":{},
"clientInfo":{"name":"test","version":"1.0"}
}}'
Sagaidāmā atbilde: servera informācija ar versiju 0.3.0, 9 rīkiem un MCPF metadatiem.