@cyanheads/eur-lex-mcp-server 0.3.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +2 -2
- package/CLAUDE.md +2 -2
- package/README.md +4 -4
- package/changelog/0.4.x/0.4.0.md +20 -0
- package/changelog/0.4.x/0.4.1.md +14 -0
- package/dist/mcp-server/resources/definitions/eurlex-document-relations.resource.d.ts.map +1 -1
- package/dist/mcp-server/resources/definitions/eurlex-document-relations.resource.js +17 -51
- package/dist/mcp-server/resources/definitions/eurlex-document-relations.resource.js.map +1 -1
- package/dist/mcp-server/resources/definitions/eurlex-document.resource.d.ts.map +1 -1
- package/dist/mcp-server/resources/definitions/eurlex-document.resource.js +3 -3
- package/dist/mcp-server/resources/definitions/eurlex-document.resource.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurlex-get-document.tool.d.ts +1 -0
- package/dist/mcp-server/tools/definitions/eurlex-get-document.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/eurlex-get-document.tool.js +12 -7
- package/dist/mcp-server/tools/definitions/eurlex-get-document.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurlex-get-relations.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/eurlex-get-relations.tool.js +19 -76
- package/dist/mcp-server/tools/definitions/eurlex-get-relations.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurlex-lookup-celex.tool.d.ts +0 -5
- package/dist/mcp-server/tools/definitions/eurlex-lookup-celex.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/eurlex-lookup-celex.tool.js +6 -10
- package/dist/mcp-server/tools/definitions/eurlex-lookup-celex.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurlex-query-sparql.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/eurlex-query-sparql.tool.js +5 -3
- package/dist/mcp-server/tools/definitions/eurlex-query-sparql.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/index.d.ts +1 -5
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
- package/dist/services/cellar-sparql/cellar-sparql-service.d.ts +25 -2
- package/dist/services/cellar-sparql/cellar-sparql-service.d.ts.map +1 -1
- package/dist/services/cellar-sparql/cellar-sparql-service.js +34 -5
- package/dist/services/cellar-sparql/cellar-sparql-service.js.map +1 -1
- package/dist/services/cellar-sparql/relation-traversal.d.ts +28 -0
- package/dist/services/cellar-sparql/relation-traversal.d.ts.map +1 -0
- package/dist/services/cellar-sparql/relation-traversal.js +103 -0
- package/dist/services/cellar-sparql/relation-traversal.js.map +1 -0
- package/dist/services/eurlex-content/eurlex-content-service.d.ts +5 -1
- package/dist/services/eurlex-content/eurlex-content-service.d.ts.map +1 -1
- package/dist/services/eurlex-content/eurlex-content-service.js +15 -4
- package/dist/services/eurlex-content/eurlex-content-service.js.map +1 -1
- package/dist/services/eurlex-content/html-to-markdown.d.ts +29 -0
- package/dist/services/eurlex-content/html-to-markdown.d.ts.map +1 -0
- package/dist/services/eurlex-content/html-to-markdown.js +172 -0
- package/dist/services/eurlex-content/html-to-markdown.js.map +1 -0
- package/package.json +4 -2
- package/server.json +3 -3
package/AGENTS.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** eur-lex-mcp-server
|
|
4
|
-
**Version:** 0.
|
|
5
|
-
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.10.
|
|
4
|
+
**Version:** 0.4.1
|
|
5
|
+
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.10.10`
|
|
6
6
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
|
|
8
8
|
**Zod:** ^4.4.3
|
package/CLAUDE.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** eur-lex-mcp-server
|
|
4
|
-
**Version:** 0.
|
|
5
|
-
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.10.
|
|
4
|
+
**Version:** 0.4.1
|
|
5
|
+
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.10.10`
|
|
6
6
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
|
|
8
8
|
**Zod:** ^4.4.3
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
<div align="center">
|
|
9
9
|
|
|
10
|
-
[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/eur-lex-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/eur-lex-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
11
11
|
|
|
12
12
|
</div>
|
|
13
13
|
|
|
@@ -34,7 +34,7 @@ Seven tools covering EU legal research — document discovery, content retrieval
|
|
|
34
34
|
| Tool | Description |
|
|
35
35
|
|:-----|:------------|
|
|
36
36
|
| `eurlex_search_documents` | Search EU legislation, treaties, and preparatory acts across the CELLAR corpus. Filters by document type, date range, EuroVoc concept, author institution, and in-force status. |
|
|
37
|
-
| `eurlex_get_document` | Fetch structured metadata and full text (HTML or Formex4 XML) for a work by CELEX number or ELI URI. |
|
|
37
|
+
| `eurlex_get_document` | Fetch structured metadata and full text (HTML, Markdown, or Formex4 XML) for a work by CELEX number or ELI URI. |
|
|
38
38
|
| `eurlex_lookup_celex` | Resolve an EU legal citation — a CELEX number or an ELI URI — to the canonical CELLAR work. |
|
|
39
39
|
| `eurlex_get_cases` | Search CJEU and General Court case law — judgments, orders, and Advocate General opinions — by case number, party name, subject, or date range. |
|
|
40
40
|
| `eurlex_get_relations` | Traverse the CELLAR relationship graph: amendment chain, consolidated versions, legal basis, citation network, and national transposition measures. |
|
|
@@ -61,7 +61,7 @@ Fetch the notice and full text of an EU legal act.
|
|
|
61
61
|
|
|
62
62
|
- Accepts CELEX numbers (e.g., `32016R0679`) or ELI URIs
|
|
63
63
|
- Returns structured metadata: title, date, document type, author institution, legal basis, EuroVoc subjects, in-force flag
|
|
64
|
-
- Full text in HTML (default) or Formex4 XML
|
|
64
|
+
- Full text in HTML (default), Markdown, or Formex4 XML — `format: "markdown"` converts the act body to clean Markdown server-side (recitals and numbered points as readable text, genuine data tables as GFM)
|
|
65
65
|
- Content shaping for large acts: `content_mode` `"paged"` (default) returns a bounded character window (`offset` + `limit`) with `content_chars_total` and `has_more` so you can page to the end; `"full"` returns the whole body in one call; `"metadata_only"` skips the body
|
|
66
66
|
- Supports all 24 official EU languages; defaults to English with automatic fallback when a translation is unavailable
|
|
67
67
|
- Older acts and some CJEU judgments may lack English translations
|
|
@@ -141,7 +141,7 @@ EUR-Lex-specific:
|
|
|
141
141
|
|
|
142
142
|
- No API key required — both CELLAR SPARQL and EUR-Lex REST content endpoints are publicly accessible
|
|
143
143
|
- `CellarSparqlService` POSTs `application/x-www-form-urlencoded` SPARQL with CDM prefix declarations built in; server-side LIMIT enforcement (max 100) prevents Virtuoso timeout abuse
|
|
144
|
-
- `EurLexContentService` fetches
|
|
144
|
+
- `EurLexContentService` fetches act text from the CELLAR content-negotiation resolver (`/resource/celex/{CELEX}` with `Accept` / `Accept-Language` headers); HTML and Formex4 XML pass through, Markdown is converted server-side from the HTML body
|
|
145
145
|
- Virtuoso error classification: HTTP 200 with `Virtuoso 37000 Error` body is parsed and re-raised as `ServiceUnavailable` (transient/timeout) or `InvalidParams` (syntax error)
|
|
146
146
|
- Language fallback on document fetch: if the requested language is unavailable, retries with English; returns metadata-only with a note when English also fails
|
|
147
147
|
- Typed error contracts on every tool — structured `reason` codes let agents branch on outcomes without parsing text
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "eurlex_get_document adds an opt-in markdown format — server-side HTML→Markdown of the act body with GFM data tables — and bumps @cyanheads/mcp-ts-core to ^0.10.10, refreshing the lockfile to clear transitive advisories in hono, js-yaml, and esbuild"
|
|
3
|
+
breaking: false
|
|
4
|
+
security: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.4.0 — 2026-06-30
|
|
8
|
+
|
|
9
|
+
## Added
|
|
10
|
+
|
|
11
|
+
- **`markdown` value on the `eurlex_get_document` `format` input** ([#13](https://github.com/cyanheads/eur-lex-mcp-server/issues/13)) — opt-in server-side HTML→Markdown of the act body; `html` stays the default and `content_format` reports `"markdown"`. The CONVEX numbering layout tables EUR-Lex uses for recitals, article paragraphs, and lettered/roman points flatten to inline-marked text (`(1) The protection of natural persons…`) instead of unreadable two-column rows; genuine `oj-table` data tables convert to GFM. Composes with the existing `content_mode`/`offset`/`limit` pagination.
|
|
12
|
+
|
|
13
|
+
## Changed
|
|
14
|
+
|
|
15
|
+
- **`@cyanheads/mcp-ts-core` `^0.10.9 → ^0.10.10`** — framework patch; lockfile refreshed.
|
|
16
|
+
- **New runtime dependencies** — `node-html-markdown` `^2.0.0` and `node-html-parser` `^8.0.4` power the Markdown conversion.
|
|
17
|
+
|
|
18
|
+
## Security
|
|
19
|
+
|
|
20
|
+
- **Transitive advisories cleared** — the framework bump and lockfile refresh resolved advisories in transitive dependencies: `hono` `4.12.26 → 4.12.27`, `js-yaml` `3.14.2 → 3.15.0`, and `esbuild` `0.28.0` (removed — `vite` `8.0.16 → 8.1.2` switched to rolldown, dropping the esbuild peer). `bun audit` reports no advisories.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Four result-interpretation bug fixes: eurlex_get_relations amended_by/consolidated_version resolve (were zero-triple CDM predicates), eurlex_get_document in_force parses xsd:boolean 1/0, eurlex_lookup_celex returns found:false instead of throwing, eurlex_query_sparql reports SELECT variables on empty result sets"
|
|
3
|
+
breaking: false
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.4.1 — 2026-06-30
|
|
8
|
+
|
|
9
|
+
## Fixed
|
|
10
|
+
|
|
11
|
+
- **`eurlex_get_relations` `amended_by` / `consolidated_version`** ([#19](https://github.com/cyanheads/eur-lex-mcp-server/issues/19)) — both mapped to CDM predicates that carry zero triples in CELLAR (`cdm:resource_legal_amended_by_resource_legal`, `cdm:resource_legal_has_consolidated_version`), so requesting either always failed with `no_relations` even for heavily-amended acts. `amended_by` now traverses the incoming side of `cdm:resource_legal_amends_resource_legal`; `consolidated_version` traverses incoming `cdm:act_consolidated_consolidates_resource_legal`. `amends` and `legal_basis` are now outgoing-only (their incoming rows are semantically `amended_by` and another work's `legal_basis`). Each relation type is queried independently with its own `LIMIT`, run concurrently, so a high-volume type like `cites` no longer starves rarer types under a single shared cap. The `eurlex://document/{celexNumber}/relations` resource carried the identical predicate map and is fixed by the same shared traversal.
|
|
12
|
+
- **`in_force` on `eurlex_get_document` and the `eurlex://document/{celexNumber}` resource** ([#20](https://github.com/cyanheads/eur-lex-mcp-server/issues/20)) — always reported `false`. Virtuoso serializes `cdm:resource_legal_in-force` as an `xsd:boolean` whose SPARQL-JSON lexical is `"1"` / `"0"`, but the handler tested `=== 'true'`. New `CellarSparqlService.parseBoolean()` accepts both `"true"` / `"1"` and `"false"` / `"0"`, and returns `undefined` for an absent or unrecognized value rather than coercing to a false negative.
|
|
13
|
+
- **`eurlex_lookup_celex` `found: false`** ([#22](https://github.com/cyanheads/eur-lex-mcp-server/issues/22)) — a well-formed but nonexistent identifier threw `not_found`, making the documented `found: false` outcome unreachable and defeating the tool's validate-before-fetch role. A well-formed identifier that resolves to no work now returns `{ found: false }`; malformed or undetectable input still raises `ambiguous_identifier`.
|
|
14
|
+
- **`eurlex_query_sparql` projected variables** ([#23](https://github.com/cyanheads/eur-lex-mcp-server/issues/23)) — empty result sets returned `variables: []` because the projection was derived from the first binding's keys. New `CellarSparqlService.queryWithVars()` reports the SPARQL 1.1 `head.vars` projection independent of binding count. The tool description now notes CELEX is stored as an `xsd:string`-typed literal — match it with `FILTER(STR(?celex) = "…")`; a plain `FILTER(?celex = "…")` matches nothing.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eurlex-document-relations.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/eurlex-document-relations.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAY,CAAC,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"eurlex-document-relations.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/eurlex-document-relations.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAY,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAerD,eAAO,MAAM,kCAAkC;;wCA0D9C,CAAC"}
|
|
@@ -5,21 +5,13 @@
|
|
|
5
5
|
import { resource, z } from '@cyanheads/mcp-ts-core';
|
|
6
6
|
import { notFound } from '@cyanheads/mcp-ts-core/errors';
|
|
7
7
|
import { CellarSparqlService, getCellarSparqlService, } from '../../../services/cellar-sparql/cellar-sparql-service.js';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
];
|
|
16
|
-
const PREDICATE_TO_TYPE = {
|
|
17
|
-
'http://publications.europa.eu/ontology/cdm#work_cites_work': 'cites',
|
|
18
|
-
'http://publications.europa.eu/ontology/cdm#resource_legal_amends_resource_legal': 'amends',
|
|
19
|
-
'http://publications.europa.eu/ontology/cdm#resource_legal_amended_by_resource_legal': 'amended_by',
|
|
20
|
-
'http://publications.europa.eu/ontology/cdm#resource_legal_based_on_resource_legal': 'legal_basis',
|
|
21
|
-
'http://publications.europa.eu/ontology/cdm#resource_legal_has_consolidated_version': 'consolidated_version',
|
|
22
|
-
};
|
|
8
|
+
import { RELATION_TYPES, traverseRelations } from '../../../services/cellar-sparql/relation-traversal.js';
|
|
9
|
+
/**
|
|
10
|
+
* Per-type relation cap for the summary resource — lighter than the
|
|
11
|
+
* eurlex_get_relations tool's default. This resource is injectable context, not
|
|
12
|
+
* an exhaustive traversal.
|
|
13
|
+
*/
|
|
14
|
+
const SUMMARY_PER_TYPE_LIMIT = 25;
|
|
23
15
|
export const eurlex_document_relations_resource = resource('eurlex://document/{celexNumber}/relations', {
|
|
24
16
|
name: 'EUR-Lex document relations',
|
|
25
17
|
description: 'Relationship summary for a CELLAR work: amendment chain, consolidations, legal basis, and cited-by information. ' +
|
|
@@ -44,42 +36,16 @@ SELECT ?work WHERE {
|
|
|
44
36
|
throw notFound(`No CELLAR work found for CELEX: ${celexNumber}`, { celexNumber });
|
|
45
37
|
}
|
|
46
38
|
const workUri = CellarSparqlService.bindingValue(resolveBindings[0], 'work') ?? '';
|
|
47
|
-
//
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
OPTIONAL { ?relatedWork cdm:resource_legal_id_celex ?relatedCelex . }
|
|
58
|
-
BIND("incoming" AS ?direction)
|
|
59
|
-
FILTER(?relationType IN (${RELATION_PREDICATES.join(', ')}))
|
|
60
|
-
}
|
|
61
|
-
} LIMIT 50`;
|
|
62
|
-
const relBindings = await svc.query(relSparql, ctx);
|
|
63
|
-
const relations = [];
|
|
64
|
-
const seen = new Set();
|
|
65
|
-
for (const b of relBindings) {
|
|
66
|
-
const relatedWorkUri = CellarSparqlService.bindingValue(b, 'relatedWork') ?? '';
|
|
67
|
-
const predicateUri = CellarSparqlService.bindingValue(b, 'relationType') ?? '';
|
|
68
|
-
const direction = CellarSparqlService.bindingValue(b, 'direction') ?? 'outgoing';
|
|
69
|
-
const key = `${predicateUri}|${relatedWorkUri}|${direction}`;
|
|
70
|
-
if (seen.has(key))
|
|
71
|
-
continue;
|
|
72
|
-
seen.add(key);
|
|
73
|
-
const entry = {
|
|
74
|
-
relation_type: PREDICATE_TO_TYPE[predicateUri] ?? predicateUri,
|
|
75
|
-
direction,
|
|
76
|
-
related_work_uri: relatedWorkUri,
|
|
77
|
-
};
|
|
78
|
-
const relatedCelex = CellarSparqlService.bindingValue(b, 'relatedCelex');
|
|
79
|
-
if (relatedCelex)
|
|
80
|
-
entry.related_celex_number = relatedCelex;
|
|
81
|
-
relations.push(entry);
|
|
82
|
-
}
|
|
39
|
+
// Summarize all relation types via the shared traversal — one query per
|
|
40
|
+
// type so amendment and consolidation relations (modeled one-directionally
|
|
41
|
+
// in CELLAR) actually surface. See relation-traversal.ts.
|
|
42
|
+
const workRelations = await traverseRelations(svc, workUri, RELATION_TYPES, ctx, SUMMARY_PER_TYPE_LIMIT);
|
|
43
|
+
const relations = workRelations.map((r) => ({
|
|
44
|
+
relation_type: r.relationType,
|
|
45
|
+
direction: r.direction,
|
|
46
|
+
related_work_uri: r.relatedWorkUri,
|
|
47
|
+
...(r.relatedCelexNumber ? { related_celex_number: r.relatedCelexNumber } : {}),
|
|
48
|
+
}));
|
|
83
49
|
return {
|
|
84
50
|
celex_number: celexNumber,
|
|
85
51
|
work_uri: workUri,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eurlex-document-relations.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/eurlex-document-relations.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,mDAAmD,CAAC;
|
|
1
|
+
{"version":3,"file":"eurlex-document-relations.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/eurlex-document-relations.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AAEnG;;;;GAIG;AACH,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAElC,MAAM,CAAC,MAAM,kCAAkC,GAAG,QAAQ,CACxD,2CAA2C,EAC3C;IACE,IAAI,EAAE,4BAA4B;IAClC,WAAW,EACT,kHAAkH;QAClH,gFAAgF;QAChF,uFAAuF;IACzF,QAAQ,EAAE,kBAAkB;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;KAC3F,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG;QACvB,MAAM,GAAG,GAAG,sBAAsB,EAAE,CAAC;QACrC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAEzD,4BAA4B;QAC5B,MAAM,aAAa,GAAG;;;0BAGF,eAAe;UAC/B,CAAC;QAEL,MAAM,eAAe,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAE5D,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,QAAQ,CAAC,mCAAmC,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,OAAO,GAAG,mBAAmB,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QAEnF,wEAAwE;QACxE,2EAA2E;QAC3E,0DAA0D;QAC1D,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAC3C,GAAG,EACH,OAAO,EACP,cAAc,EACd,GAAG,EACH,sBAAsB,CACvB,CAAC;QACF,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1C,aAAa,EAAE,CAAC,CAAC,YAAY;YAC7B,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,gBAAgB,EAAE,CAAC,CAAC,cAAc;YAClC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChF,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,YAAY,EAAE,WAAW;YACzB,QAAQ,EAAE,OAAO;YACjB,SAAS;YACT,KAAK,EAAE,SAAS,CAAC,MAAM;SACxB,CAAC;IACJ,CAAC;CACF,CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eurlex-document.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/eurlex-document.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAY,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAQrD,eAAO,MAAM,wBAAwB;;
|
|
1
|
+
{"version":3,"file":"eurlex-document.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/eurlex-document.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAY,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAQrD,eAAO,MAAM,wBAAwB;;wCA4DnC,CAAC"}
|
|
@@ -54,9 +54,9 @@ SELECT ?work ?celexNumber ?type ?date ?title ?inForce ?author WHERE {
|
|
|
54
54
|
const title = CellarSparqlService.bindingValue(first, 'title');
|
|
55
55
|
if (title)
|
|
56
56
|
result.title = title;
|
|
57
|
-
const
|
|
58
|
-
if (
|
|
59
|
-
result.in_force =
|
|
57
|
+
const inForce = CellarSparqlService.parseBoolean(CellarSparqlService.bindingValue(first, 'inForce'));
|
|
58
|
+
if (inForce !== undefined)
|
|
59
|
+
result.in_force = inForce;
|
|
60
60
|
const author = CellarSparqlService.bindingValue(first, 'author');
|
|
61
61
|
if (author)
|
|
62
62
|
result.author_institution = author;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eurlex-document.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/eurlex-document.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EACL,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,mDAAmD,CAAC;AAE3D,MAAM,CAAC,MAAM,wBAAwB,GAAG,QAAQ,CAAC,iCAAiC,EAAE;IAClF,IAAI,EAAE,2BAA2B;IACjC,WAAW,EACT,kEAAkE;QAClE,+FAA+F;QAC/F,wDAAwD;QACxD,sGAAsG;IACxG,QAAQ,EAAE,kBAAkB;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;KAC3F,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG;QACvB,MAAM,GAAG,GAAG,sBAAsB,EAAE,CAAC;QACrC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAEzD,MAAM,MAAM,GAAG;;;gCAGa,eAAe;;;;;0CAKL,gBAAgB;;;;;UAKhD,CAAC;QAEP,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAE9C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,QAAQ,CAAC,mCAAmC,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,MAAM,GAA4B;YACtC,YAAY,EAAE,mBAAmB,CAAC,YAAY,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,WAAW;SACpF,CAAC;QAEF,MAAM,OAAO,GAAG,mBAAmB,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAChE,IAAI,OAAO;YAAE,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC;QACvC,MAAM,YAAY,GAAG,mBAAmB,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACrE,IAAI,YAAY;YAAE,MAAM,CAAC,aAAa,GAAG,YAAY,CAAC;QACtD,MAAM,IAAI,GAAG,mBAAmB,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC7D,IAAI,IAAI;YAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QAC7B,MAAM,KAAK,GAAG,mBAAmB,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC/D,IAAI,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAChC,MAAM,
|
|
1
|
+
{"version":3,"file":"eurlex-document.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/eurlex-document.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EACL,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,mDAAmD,CAAC;AAE3D,MAAM,CAAC,MAAM,wBAAwB,GAAG,QAAQ,CAAC,iCAAiC,EAAE;IAClF,IAAI,EAAE,2BAA2B;IACjC,WAAW,EACT,kEAAkE;QAClE,+FAA+F;QAC/F,wDAAwD;QACxD,sGAAsG;IACxG,QAAQ,EAAE,kBAAkB;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;KAC3F,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG;QACvB,MAAM,GAAG,GAAG,sBAAsB,EAAE,CAAC;QACrC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAEzD,MAAM,MAAM,GAAG;;;gCAGa,eAAe;;;;;0CAKL,gBAAgB;;;;;UAKhD,CAAC;QAEP,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAE9C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,QAAQ,CAAC,mCAAmC,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,MAAM,GAA4B;YACtC,YAAY,EAAE,mBAAmB,CAAC,YAAY,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,WAAW;SACpF,CAAC;QAEF,MAAM,OAAO,GAAG,mBAAmB,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAChE,IAAI,OAAO;YAAE,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC;QACvC,MAAM,YAAY,GAAG,mBAAmB,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACrE,IAAI,YAAY;YAAE,MAAM,CAAC,aAAa,GAAG,YAAY,CAAC;QACtD,MAAM,IAAI,GAAG,mBAAmB,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC7D,IAAI,IAAI;YAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QAC7B,MAAM,KAAK,GAAG,mBAAmB,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC/D,IAAI,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAChC,MAAM,OAAO,GAAG,mBAAmB,CAAC,YAAY,CAC9C,mBAAmB,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CACnD,CAAC;QACF,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC;QACrD,MAAM,MAAM,GAAG,mBAAmB,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACjE,IAAI,MAAM;YAAE,MAAM,CAAC,kBAAkB,GAAG,MAAM,CAAC;QAE/C,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eurlex-get-document.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurlex-get-document.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AA2BjE,eAAO,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"eurlex-get-document.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurlex-get-document.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AA2BjE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAoa9B,CAAC"}
|
|
@@ -20,13 +20,14 @@ export const eurlex_get_document = tool('eurlex_get_document', {
|
|
|
20
20
|
title: 'Get EU Document',
|
|
21
21
|
description: 'Fetch the notice (metadata) and full text of an EU act by CELEX number or ELI URI. ' +
|
|
22
22
|
'Returns structured metadata — title, date, document type, author institution, legal basis, EuroVoc subjects — ' +
|
|
23
|
-
'plus the HTML or Formex4 XML
|
|
23
|
+
'plus the act content as HTML, Markdown, or Formex4 XML in the requested language. ' +
|
|
24
24
|
'Defaults to English (EN); not all works have content in all 24 official EU languages, ' +
|
|
25
25
|
'especially older acts pre-2004 EU enlargement. ' +
|
|
26
26
|
'If the requested language is unavailable, the server automatically falls back to English and notes the fallback. ' +
|
|
27
27
|
'CELEX format: {sector}{year}{type}{number} e.g. 32016R0679 for GDPR. ' +
|
|
28
28
|
'Use eurlex_lookup_celex to validate an identifier before calling this tool. ' +
|
|
29
|
-
'HTML
|
|
29
|
+
'HTML returns the full act text as served by EUR-Lex; markdown converts that HTML to clean Markdown server-side ' +
|
|
30
|
+
'(recitals and numbered points as readable text, genuine data tables as GFM tables); XML returns Formex4 for structured processing. ' +
|
|
30
31
|
'Large bodies are bounded per call but never lost: content_mode "paged" (default) returns a character window ' +
|
|
31
32
|
'(offset + limit) alongside content_chars_total and has_more, so you can page to the end and reconstruct the whole act; ' +
|
|
32
33
|
'content_mode "full" returns the entire body in one call; content_mode "metadata_only" returns metadata with no body and skips the content fetch.',
|
|
@@ -50,9 +51,12 @@ export const eurlex_get_document = tool('eurlex_get_document', {
|
|
|
50
51
|
.describe('Language code for document content (ISO 639-1 uppercase, e.g. EN, FR, DE). ' +
|
|
51
52
|
'Defaults to EN. Falls back to EN if the requested language is unavailable.'),
|
|
52
53
|
format: z
|
|
53
|
-
.enum(['html', 'xml'])
|
|
54
|
+
.enum(['html', 'xml', 'markdown'])
|
|
54
55
|
.default('html')
|
|
55
|
-
.describe('Content format: "html" for
|
|
56
|
+
.describe('Content format: "html" for the act text as served by EUR-Lex (default); ' +
|
|
57
|
+
'"markdown" for that HTML converted to clean Markdown server-side ' +
|
|
58
|
+
'(recitals and numbered points as readable text, genuine data tables as GFM); ' +
|
|
59
|
+
'"xml" for Formex4 XML structured format.'),
|
|
56
60
|
content_mode: z
|
|
57
61
|
.enum(['metadata_only', 'paged', 'full'])
|
|
58
62
|
.default('paged')
|
|
@@ -138,7 +142,9 @@ export const eurlex_get_document = tool('eurlex_get_document', {
|
|
|
138
142
|
.string()
|
|
139
143
|
.optional()
|
|
140
144
|
.describe('Human-readable note explaining the fallback that occurred (e.g. "Requested FR content unavailable; returned EN"). Present only when a fallback happened.'),
|
|
141
|
-
content_format: z
|
|
145
|
+
content_format: z
|
|
146
|
+
.string()
|
|
147
|
+
.describe('Format of the returned content: "html", "markdown", or "xml".'),
|
|
142
148
|
}),
|
|
143
149
|
errors: [
|
|
144
150
|
{
|
|
@@ -240,8 +246,7 @@ SELECT ?work ?celexNumber ?type ?date ?title ?inForce ?author ?legalBasis ?eurov
|
|
|
240
246
|
const resourceType = CellarSparqlService.bindingValue(first, 'type');
|
|
241
247
|
const date = CellarSparqlService.bindingValue(first, 'date');
|
|
242
248
|
const title = CellarSparqlService.bindingValue(first, 'title');
|
|
243
|
-
const
|
|
244
|
-
const inForce = inForceStr !== undefined ? inForceStr === 'true' : undefined;
|
|
249
|
+
const inForce = CellarSparqlService.parseBoolean(CellarSparqlService.bindingValue(first, 'inForce'));
|
|
245
250
|
const authorUri = CellarSparqlService.bindingValue(first, 'author');
|
|
246
251
|
// Step 2: assemble metadata, then shape the body per content_mode. The body
|
|
247
252
|
// is one navigable mechanism — "metadata_only" skips the fetch entirely,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eurlex-get-document.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurlex-get-document.tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eurlex-get-document.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurlex-get-document.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eurlex-get-relations.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurlex-get-relations.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"eurlex-get-relations.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurlex-get-relations.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAYjE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA8M/B,CAAC"}
|
|
@@ -6,30 +6,15 @@ import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
|
6
6
|
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
7
7
|
import { CellarSparqlService, getCellarSparqlService, } from '../../../services/cellar-sparql/cellar-sparql-service.js';
|
|
8
8
|
import { escapeSparqlLiteral } from '../../../services/cellar-sparql/eli-resolution.js';
|
|
9
|
-
|
|
10
|
-
const CDM_RELATIONS = {
|
|
11
|
-
cites: 'cdm:work_cites_work',
|
|
12
|
-
amends: 'cdm:resource_legal_amends_resource_legal',
|
|
13
|
-
amended_by: 'cdm:resource_legal_amended_by_resource_legal',
|
|
14
|
-
legal_basis: 'cdm:resource_legal_based_on_resource_legal',
|
|
15
|
-
consolidated_version: 'cdm:resource_legal_has_consolidated_version',
|
|
16
|
-
};
|
|
17
|
-
/** Map predicate URI to human-readable relation type name. */
|
|
18
|
-
const PREDICATE_TO_TYPE = {
|
|
19
|
-
'http://publications.europa.eu/ontology/cdm#work_cites_work': 'cites',
|
|
20
|
-
'http://publications.europa.eu/ontology/cdm#resource_legal_amends_resource_legal': 'amends',
|
|
21
|
-
'http://publications.europa.eu/ontology/cdm#resource_legal_amended_by_resource_legal': 'amended_by',
|
|
22
|
-
'http://publications.europa.eu/ontology/cdm#resource_legal_based_on_resource_legal': 'legal_basis',
|
|
23
|
-
'http://publications.europa.eu/ontology/cdm#resource_legal_has_consolidated_version': 'consolidated_version',
|
|
24
|
-
};
|
|
9
|
+
import { RELATION_TYPES, traverseRelations, } from '../../../services/cellar-sparql/relation-traversal.js';
|
|
25
10
|
export const eurlex_get_relations = tool('eurlex_get_relations', {
|
|
26
11
|
title: 'Get CELLAR Relationship Graph',
|
|
27
12
|
description: 'Traverse the CELLAR CDM relationship graph for an EU work: ' +
|
|
28
|
-
'what it amends, what amends it, its
|
|
13
|
+
'what it amends, what amends it, its consolidated versions, its legal basis, and works that cite it. ' +
|
|
29
14
|
"This is CELLAR's primary value over HTML scraping — the graph traversal that exposes the lifecycle and dependencies of an EU act. " +
|
|
30
15
|
'Returns one-hop direct relations only. For deeper traversal, use eurlex_query_sparql. ' +
|
|
31
|
-
'The "consolidated_version" relation links to the
|
|
32
|
-
'fetch
|
|
16
|
+
'The "consolidated_version" relation links to the consolidated texts of the act (each a separate CELEX-numbered work); ' +
|
|
17
|
+
'fetch one with eurlex_get_document. ' +
|
|
33
18
|
'Requires a valid CELEX number or CELLAR work URI — use eurlex_lookup_celex to resolve identifiers first.',
|
|
34
19
|
annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
|
|
35
20
|
input: z.object({
|
|
@@ -55,7 +40,7 @@ export const eurlex_get_relations = tool('eurlex_get_relations', {
|
|
|
55
40
|
.optional()
|
|
56
41
|
.describe('Subset of relation types to return. Omit to return all types: ' +
|
|
57
42
|
'cites (citation graph), amends (what this work amends), amended_by (what amends this work), ' +
|
|
58
|
-
'legal_basis (treaty/treaty article this act is based on), consolidated_version (
|
|
43
|
+
'legal_basis (treaty/treaty article this act is based on), consolidated_version (consolidated versions of this act).'),
|
|
59
44
|
}),
|
|
60
45
|
output: z.object({
|
|
61
46
|
celex_number: z
|
|
@@ -138,70 +123,28 @@ SELECT ?work WHERE {
|
|
|
138
123
|
? 'Provide only one of celex_number or work_uri, not both.'
|
|
139
124
|
: 'Provide either celex_number or work_uri.', { ...ctx.recoveryFor('invalid_identifier_args') });
|
|
140
125
|
}
|
|
141
|
-
// Step 2:
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
'consolidated_version',
|
|
148
|
-
];
|
|
149
|
-
const predicates = requestedTypes.map((t) => CDM_RELATIONS[t]).filter(Boolean);
|
|
150
|
-
if (predicates.length === 0) {
|
|
151
|
-
throw ctx.fail('no_relations', `No valid relation types requested.`, {
|
|
152
|
-
...ctx.recoveryFor('no_relations'),
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
// Step 3: Traverse relation graph (outgoing and incoming)
|
|
156
|
-
const relationSparql = `
|
|
157
|
-
SELECT ?relatedWork ?relatedCelex ?relationType ?direction WHERE {
|
|
158
|
-
{
|
|
159
|
-
# Outgoing: this work → related work
|
|
160
|
-
<${workUri}> ?relationType ?relatedWork .
|
|
161
|
-
OPTIONAL { ?relatedWork cdm:resource_legal_id_celex ?relatedCelex . }
|
|
162
|
-
BIND("outgoing" AS ?direction)
|
|
163
|
-
FILTER(?relationType IN (${predicates.join(', ')}))
|
|
164
|
-
} UNION {
|
|
165
|
-
# Incoming: related work → this work
|
|
166
|
-
?relatedWork ?relationType <${workUri}> .
|
|
167
|
-
OPTIONAL { ?relatedWork cdm:resource_legal_id_celex ?relatedCelex . }
|
|
168
|
-
BIND("incoming" AS ?direction)
|
|
169
|
-
FILTER(?relationType IN (${predicates.join(', ')}))
|
|
170
|
-
}
|
|
171
|
-
} LIMIT 100`;
|
|
172
|
-
const relationBindings = await svc.query(relationSparql, ctx);
|
|
126
|
+
// Step 2: Traverse the requested relation types. Each type is resolved
|
|
127
|
+
// through its own query (with its own LIMIT), run concurrently, so a
|
|
128
|
+
// high-volume type (e.g. cites) can't starve the rarer ones under a shared
|
|
129
|
+
// cap. The predicate + direction model lives in relation-traversal.ts.
|
|
130
|
+
const requestedTypes = input.relation_types ?? RELATION_TYPES;
|
|
131
|
+
const workRelations = await traverseRelations(svc, workUri, requestedTypes, ctx);
|
|
173
132
|
ctx.log.info('Relation traversal', {
|
|
174
133
|
celexNumber,
|
|
175
134
|
workUri,
|
|
176
|
-
resultCount:
|
|
135
|
+
resultCount: workRelations.length,
|
|
177
136
|
});
|
|
178
|
-
if (
|
|
137
|
+
if (workRelations.length === 0) {
|
|
179
138
|
throw ctx.fail('no_relations', `Work ${celexNumber ?? workUri} has no CDM relations of the requested types.`, {
|
|
180
139
|
...ctx.recoveryFor('no_relations'),
|
|
181
140
|
});
|
|
182
141
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
const direction = CellarSparqlService.bindingValue(b, 'direction') ?? 'outgoing';
|
|
190
|
-
const key = `${predicateUri}|${relatedWorkUri}|${direction}`;
|
|
191
|
-
if (seen.has(key))
|
|
192
|
-
continue;
|
|
193
|
-
seen.add(key);
|
|
194
|
-
const relationType = PREDICATE_TO_TYPE[predicateUri] ?? predicateUri;
|
|
195
|
-
const relatedCelex = CellarSparqlService.bindingValue(b, 'relatedCelex');
|
|
196
|
-
const entry = {
|
|
197
|
-
relation_type: relationType,
|
|
198
|
-
direction,
|
|
199
|
-
related_work_uri: relatedWorkUri,
|
|
200
|
-
};
|
|
201
|
-
if (relatedCelex)
|
|
202
|
-
entry.related_celex_number = relatedCelex;
|
|
203
|
-
relations.push(entry);
|
|
204
|
-
}
|
|
142
|
+
const relations = workRelations.map((r) => ({
|
|
143
|
+
relation_type: r.relationType,
|
|
144
|
+
direction: r.direction,
|
|
145
|
+
related_work_uri: r.relatedWorkUri,
|
|
146
|
+
...(r.relatedCelexNumber ? { related_celex_number: r.relatedCelexNumber } : {}),
|
|
147
|
+
}));
|
|
205
148
|
return {
|
|
206
149
|
...(celexNumber ? { celex_number: celexNumber } : {}),
|
|
207
150
|
work_uri: workUri,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eurlex-get-relations.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurlex-get-relations.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EACL,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"eurlex-get-relations.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurlex-get-relations.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,11 +18,6 @@ export declare const eurlex_lookup_celex: import("@cyanheads/mcp-ts-core").ToolD
|
|
|
18
18
|
resource_type: z.ZodOptional<z.ZodString>;
|
|
19
19
|
date: z.ZodOptional<z.ZodString>;
|
|
20
20
|
}, z.core.$strip>, readonly [{
|
|
21
|
-
readonly reason: "not_found";
|
|
22
|
-
readonly code: JsonRpcErrorCode.NotFound;
|
|
23
|
-
readonly when: "The identifier resolves to no CELLAR work — check the CELEX/ELI format and try again.";
|
|
24
|
-
readonly recovery: "Verify the CELEX or ELI format, or try eurlex_search_documents to find the work by keyword.";
|
|
25
|
-
}, {
|
|
26
21
|
readonly reason: "ambiguous_identifier";
|
|
27
22
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
28
23
|
readonly when: "identifier_type is \"auto\" and the identifier format could not be determined.";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eurlex-lookup-celex.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurlex-lookup-celex.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAyBjE,eAAO,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"eurlex-lookup-celex.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurlex-lookup-celex.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAyBjE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;cAyH9B,CAAC"}
|
|
@@ -39,7 +39,7 @@ export const eurlex_lookup_celex = tool('eurlex_lookup_celex', {
|
|
|
39
39
|
output: z.object({
|
|
40
40
|
found: z
|
|
41
41
|
.boolean()
|
|
42
|
-
.describe('
|
|
42
|
+
.describe('True when the identifier resolves to a CELLAR work; false when a well-formed CELEX/ELI matches no work in the corpus. A malformed or undetectable identifier raises ambiguous_identifier instead.'),
|
|
43
43
|
work_uri: z.string().optional().describe('CELLAR work URI (stable resource identifier).'),
|
|
44
44
|
celex_number: z.string().optional().describe('Confirmed CELEX number for the resolved work.'),
|
|
45
45
|
resource_type: z
|
|
@@ -49,12 +49,6 @@ export const eurlex_lookup_celex = tool('eurlex_lookup_celex', {
|
|
|
49
49
|
date: z.string().optional().describe('Document date in ISO 8601 format (YYYY-MM-DD).'),
|
|
50
50
|
}),
|
|
51
51
|
errors: [
|
|
52
|
-
{
|
|
53
|
-
reason: 'not_found',
|
|
54
|
-
code: JsonRpcErrorCode.NotFound,
|
|
55
|
-
when: 'The identifier resolves to no CELLAR work — check the CELEX/ELI format and try again.',
|
|
56
|
-
recovery: 'Verify the CELEX or ELI format, or try eurlex_search_documents to find the work by keyword.',
|
|
57
|
-
},
|
|
58
52
|
{
|
|
59
53
|
reason: 'ambiguous_identifier',
|
|
60
54
|
code: JsonRpcErrorCode.ValidationError,
|
|
@@ -103,9 +97,11 @@ SELECT ?work ?celexNumber ?type ?date WHERE {
|
|
|
103
97
|
found: binding !== null,
|
|
104
98
|
});
|
|
105
99
|
if (!binding) {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
100
|
+
// A well-formed identifier that resolves to no work is a clean negative,
|
|
101
|
+
// not an error — the documented "validate before fetch" role depends on a
|
|
102
|
+
// boolean here. Malformed/undetectable input already errored above with
|
|
103
|
+
// ambiguous_identifier.
|
|
104
|
+
return { found: false };
|
|
109
105
|
}
|
|
110
106
|
return {
|
|
111
107
|
found: true,
|