@cyanheads/eur-lex-mcp-server 0.1.2 → 0.1.3
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 +1 -1
- package/CLAUDE.md +1 -1
- package/README.md +1 -1
- package/changelog/0.1.x/0.1.3.md +18 -0
- package/dist/mcp-server/tools/definitions/eurlex-get-cases.tool.d.ts +9 -0
- package/dist/mcp-server/tools/definitions/eurlex-get-cases.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/eurlex-get-cases.tool.js +81 -17
- package/dist/mcp-server/tools/definitions/eurlex-get-cases.tool.js.map +1 -1
- 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 +5 -4
- package/dist/mcp-server/tools/definitions/eurlex-get-document.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurlex-search-documents.tool.d.ts +9 -0
- package/dist/mcp-server/tools/definitions/eurlex-search-documents.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/eurlex-search-documents.tool.js +46 -12
- package/dist/mcp-server/tools/definitions/eurlex-search-documents.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/index.d.ts +18 -0
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
- package/dist/services/cellar-sparql/cdm-labels.d.ts +24 -0
- package/dist/services/cellar-sparql/cdm-labels.d.ts.map +1 -0
- package/dist/services/cellar-sparql/cdm-labels.js +77 -0
- package/dist/services/cellar-sparql/cdm-labels.js.map +1 -0
- package/package.json +1 -1
- package/server.json +3 -3
package/AGENTS.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** eur-lex-mcp-server
|
|
4
|
-
**Version:** 0.1.
|
|
4
|
+
**Version:** 0.1.3
|
|
5
5
|
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.21`
|
|
6
6
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
|
package/CLAUDE.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** eur-lex-mcp-server
|
|
4
|
-
**Version:** 0.1.
|
|
4
|
+
**Version:** 0.1.3
|
|
5
5
|
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.21`
|
|
6
6
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
|
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
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Keyword title search, case number resolution, filter echo, and human-readable type labels across CELLAR tools"
|
|
3
|
+
breaking: false
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.1.3 — 2026-06-06
|
|
8
|
+
|
|
9
|
+
## Added
|
|
10
|
+
|
|
11
|
+
- **`cdm-labels.ts`** — shared CDM authority-register URI→label module (`ENG_LANGUAGE_URI`, `RESOURCE_TYPE_LABELS`, `CORPORATE_BODY_LABELS`, `resolveResourceTypeLabel()`, `resolveCorporateBodyLabel()`); consolidated from per-tool inline maps ([#4](https://github.com/cyanheads/eur-lex-mcp-server/issues/4)).
|
|
12
|
+
- **`query_echo`** — both `eurlex_search_documents` and `eurlex_get_cases` now return applied filters in `structuredContent`; empty-result error messages embed the same summary ([#3](https://github.com/cyanheads/eur-lex-mcp-server/issues/3)).
|
|
13
|
+
|
|
14
|
+
## Fixed
|
|
15
|
+
|
|
16
|
+
- **`eurlex_search_documents` / `eurlex_get_cases` keyword search** — replaced `cdm:work_title` traversal (which has no triples at the work level) with the correct expression-level path: `?expr cdm:expression_belongs_to_work ?work` + `cdm:expression_uses_language <.../ENG>` + `cdm:expression_title ?title` ([#1](https://github.com/cyanheads/eur-lex-mcp-server/issues/1)).
|
|
17
|
+
- **`eurlex_get_cases` case number resolution** — `C-131/12` now converts to the correct CELEX substring `2012CJ0131` (year-first, zero-padded); the old approach searched the raw `131/12` string, which inverts the CELEX format and never matched ([#2](https://github.com/cyanheads/eur-lex-mcp-server/issues/2)).
|
|
18
|
+
- **`resource_type` / `author_institution` labels** — `eurlex_get_document`, `eurlex_search_documents`, and `eurlex_get_cases` resolve CDM authority URIs to human-readable labels (e.g. `"Regulation"`, `"Council of the EU"`) instead of returning raw URIs ([#4](https://github.com/cyanheads/eur-lex-mcp-server/issues/4)).
|
|
@@ -30,6 +30,15 @@ export declare const eurlex_get_cases: import("@cyanheads/mcp-ts-core").ToolDefi
|
|
|
30
30
|
}, z.core.$strip>>;
|
|
31
31
|
total: z.ZodNumber;
|
|
32
32
|
offset: z.ZodNumber;
|
|
33
|
+
query_echo: z.ZodObject<{
|
|
34
|
+
case_number: z.ZodOptional<z.ZodString>;
|
|
35
|
+
celex_fragment: z.ZodOptional<z.ZodString>;
|
|
36
|
+
keyword: z.ZodOptional<z.ZodString>;
|
|
37
|
+
court: z.ZodOptional<z.ZodString>;
|
|
38
|
+
case_type: z.ZodOptional<z.ZodString>;
|
|
39
|
+
date_from: z.ZodOptional<z.ZodString>;
|
|
40
|
+
date_to: z.ZodOptional<z.ZodString>;
|
|
41
|
+
}, z.core.$strip>;
|
|
33
42
|
}, z.core.$strip>, readonly [{
|
|
34
43
|
readonly reason: "no_results";
|
|
35
44
|
readonly code: JsonRpcErrorCode.NotFound;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eurlex-get-cases.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurlex-get-cases.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-cases.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurlex-get-cases.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAkCjE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+P3B,CAAC"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
6
6
|
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
7
|
+
import { ENG_LANGUAGE_URI, resolveResourceTypeLabel } from '../../../services/cellar-sparql/cdm-labels.js';
|
|
7
8
|
import { CellarSparqlService, getCellarSparqlService, } from '../../../services/cellar-sparql/cellar-sparql-service.js';
|
|
8
9
|
/** Case type to CELEX type substring mapping. */
|
|
9
10
|
const CASE_TYPE_PATTERN = {
|
|
@@ -11,14 +12,34 @@ const CASE_TYPE_PATTERN = {
|
|
|
11
12
|
order: 'CO',
|
|
12
13
|
ag_opinion: 'CC',
|
|
13
14
|
};
|
|
15
|
+
/**
|
|
16
|
+
* Convert a standard EU case number (C-131/12 or T-131/12) into a CELEX substring
|
|
17
|
+
* suitable for a CONTAINS filter.
|
|
18
|
+
*
|
|
19
|
+
* CELEX format for case law: 6{year4d}{court}{num4d}
|
|
20
|
+
* e.g. C-131/12 → 62012CJ0131, T-22/20 → 62020TJ0022
|
|
21
|
+
*
|
|
22
|
+
* 2-digit year heuristic: yy ≤ 60 → 20yy, else → 19yy.
|
|
23
|
+
* Returns null if the input doesn't match the expected pattern.
|
|
24
|
+
*/
|
|
25
|
+
function caseNumberToCelexFragment(caseNumber) {
|
|
26
|
+
const m = /^([CT])-(\d+)\/(\d{2,4})$/.exec(caseNumber.trim().toUpperCase());
|
|
27
|
+
if (!m)
|
|
28
|
+
return null;
|
|
29
|
+
const court = m[1] === 'C' ? 'CJ' : 'TJ';
|
|
30
|
+
const caseNum = m[2].padStart(4, '0');
|
|
31
|
+
const rawYear = parseInt(m[3], 10);
|
|
32
|
+
const year4 = m[3].length === 2 ? (rawYear <= 60 ? 2000 + rawYear : 1900 + rawYear) : rawYear;
|
|
33
|
+
return `${year4}${court}${caseNum}`;
|
|
34
|
+
}
|
|
14
35
|
export const eurlex_get_cases = tool('eurlex_get_cases', {
|
|
15
36
|
title: 'Search CJEU/GC Case Law',
|
|
16
37
|
description: 'Search CJEU (Court of Justice of the EU) and General Court case law — judgments, orders, and Advocate General opinions. ' +
|
|
17
38
|
'Distinct from eurlex_search_documents because case law uses CELEX sector 6 and practitioners search it differently: ' +
|
|
18
39
|
'by case number, court, party name, or AG opinion type. ' +
|
|
19
|
-
'Keyword search
|
|
20
|
-
'Case numbers follow the pattern C-{num}/{year} for CJEU and T-{num}/{year} for General Court. ' +
|
|
21
|
-
'Returns case identifier, court, date, document type, and title (where available). ' +
|
|
40
|
+
'Keyword search matches against English expression titles and CELEX strings — full-text body search is not available. ' +
|
|
41
|
+
'Case numbers follow the pattern C-{num}/{year} for CJEU and T-{num}/{year} for General Court (e.g. C-131/12). ' +
|
|
42
|
+
'Returns case identifier, court, date, human-readable document type, and title (where available). ' +
|
|
22
43
|
'Use eurlex_get_document with the CELEX number to fetch the full judgment text.',
|
|
23
44
|
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
24
45
|
input: z.object({
|
|
@@ -71,17 +92,28 @@ export const eurlex_get_cases = tool('eurlex_get_cases', {
|
|
|
71
92
|
resource_type: z
|
|
72
93
|
.string()
|
|
73
94
|
.optional()
|
|
74
|
-
.describe('
|
|
95
|
+
.describe('Human-readable case type label (e.g. "Judgment", "Order", "AG Opinion"). Absent for some older cases.'),
|
|
75
96
|
date: z.string().optional().describe('Judgment/opinion date in ISO 8601 format.'),
|
|
76
97
|
title: z
|
|
77
98
|
.string()
|
|
78
99
|
.optional()
|
|
79
|
-
.describe('
|
|
100
|
+
.describe('English expression title where available (e.g. "Google Spain SL v AEPD"). Absent for many older cases.'),
|
|
80
101
|
})
|
|
81
102
|
.describe('A single CJEU or General Court case law record.'))
|
|
82
103
|
.describe('Matching case law records ordered by date descending.'),
|
|
83
104
|
total: z.number().describe('Number of cases returned in this page (not a corpus-wide count).'),
|
|
84
105
|
offset: z.number().describe('Pagination offset used for this response.'),
|
|
106
|
+
query_echo: z
|
|
107
|
+
.object({
|
|
108
|
+
case_number: z.string().optional().describe('Case number filter applied.'),
|
|
109
|
+
celex_fragment: z.string().optional().describe('CELEX substring derived from case_number.'),
|
|
110
|
+
keyword: z.string().optional().describe('Keyword filter applied.'),
|
|
111
|
+
court: z.string().optional().describe('Court filter applied.'),
|
|
112
|
+
case_type: z.string().optional().describe('Case type filter applied.'),
|
|
113
|
+
date_from: z.string().optional().describe('Start date filter applied.'),
|
|
114
|
+
date_to: z.string().optional().describe('End date filter applied.'),
|
|
115
|
+
})
|
|
116
|
+
.describe('Echo of filters applied to this search. Useful for diagnosing empty results.'),
|
|
85
117
|
}),
|
|
86
118
|
errors: [
|
|
87
119
|
{
|
|
@@ -101,11 +133,20 @@ export const eurlex_get_cases = tool('eurlex_get_cases', {
|
|
|
101
133
|
const svc = getCellarSparqlService();
|
|
102
134
|
// All case law is in CELEX sector 6
|
|
103
135
|
const filters = [`FILTER(STRSTARTS(STR(?celexNumber), "6"))`];
|
|
136
|
+
let celexFragment;
|
|
104
137
|
if (input.case_number && input.case_number.trim()) {
|
|
105
|
-
// Convert standard case number
|
|
106
|
-
//
|
|
107
|
-
|
|
108
|
-
|
|
138
|
+
// Convert standard case number (C-131/12) to CELEX substring (2012CJ0131).
|
|
139
|
+
// The old approach — searching for the raw "131/12" string in the CELEX — is
|
|
140
|
+
// inverted: CELEX stores year before case number, so "131/12" never matches.
|
|
141
|
+
celexFragment = caseNumberToCelexFragment(input.case_number) ?? undefined;
|
|
142
|
+
if (celexFragment) {
|
|
143
|
+
filters.push(`FILTER(CONTAINS(STR(?celexNumber), "${celexFragment}"))`);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
// Fallback for non-standard formats: substring match on CELEX
|
|
147
|
+
const cn = input.case_number.trim().replace(/"/g, '\\"');
|
|
148
|
+
filters.push(`FILTER(CONTAINS(LCASE(STR(?celexNumber)), LCASE("${cn}")))`);
|
|
149
|
+
}
|
|
109
150
|
}
|
|
110
151
|
if (input.keyword && input.keyword.trim()) {
|
|
111
152
|
const kw = input.keyword.trim().toLowerCase().replace(/"/g, '\\"');
|
|
@@ -131,35 +172,54 @@ export const eurlex_get_cases = tool('eurlex_get_cases', {
|
|
|
131
172
|
if (input.date_to && input.date_to.trim()) {
|
|
132
173
|
filters.push(`FILTER(?date <= "${input.date_to.trim()}"^^xsd:date)`);
|
|
133
174
|
}
|
|
175
|
+
// Titles live on expressions, not works. Traverse the expression graph:
|
|
176
|
+
// ?expr cdm:expression_belongs_to_work ?work (inverse of cdm:work_has_expression)
|
|
177
|
+
// ?expr cdm:expression_uses_language <.../ENG>
|
|
178
|
+
// ?expr cdm:expression_title ?title
|
|
134
179
|
const sparql = `
|
|
135
180
|
SELECT DISTINCT ?work ?celexNumber ?type ?date ?title WHERE {
|
|
136
181
|
?work cdm:resource_legal_id_celex ?celexNumber .
|
|
137
182
|
OPTIONAL { ?work cdm:work_has_resource-type ?type . }
|
|
138
183
|
OPTIONAL { ?work cdm:work_date_document ?date . }
|
|
139
|
-
OPTIONAL {
|
|
184
|
+
OPTIONAL {
|
|
185
|
+
?expr cdm:expression_belongs_to_work ?work .
|
|
186
|
+
?expr cdm:expression_uses_language <${ENG_LANGUAGE_URI}> .
|
|
187
|
+
?expr cdm:expression_title ?title .
|
|
188
|
+
}
|
|
140
189
|
${filters.join('\n ')}
|
|
141
190
|
} ORDER BY DESC(?date) LIMIT ${input.limit} OFFSET ${input.offset}`;
|
|
191
|
+
const queryEcho = {
|
|
192
|
+
...(input.case_number ? { case_number: input.case_number } : {}),
|
|
193
|
+
...(celexFragment ? { celex_fragment: celexFragment } : {}),
|
|
194
|
+
...(input.keyword ? { keyword: input.keyword } : {}),
|
|
195
|
+
...(input.court ? { court: input.court } : {}),
|
|
196
|
+
...(input.case_type ? { case_type: input.case_type } : {}),
|
|
197
|
+
...(input.date_from ? { date_from: input.date_from } : {}),
|
|
198
|
+
...(input.date_to ? { date_to: input.date_to } : {}),
|
|
199
|
+
};
|
|
142
200
|
const bindings = await svc.query(sparql, ctx);
|
|
143
201
|
ctx.log.info('Case law search', {
|
|
144
202
|
caseNumber: input.case_number,
|
|
203
|
+
celexFragment,
|
|
145
204
|
keyword: input.keyword,
|
|
146
205
|
court: input.court,
|
|
147
206
|
caseType: input.case_type,
|
|
148
207
|
resultCount: bindings.length,
|
|
149
208
|
});
|
|
150
209
|
if (bindings.length === 0) {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
210
|
+
const filterSummary = Object.entries(queryEcho)
|
|
211
|
+
.map(([k, v]) => `${k}=${String(v)}`)
|
|
212
|
+
.join(', ');
|
|
213
|
+
throw ctx.fail('no_results', `No case law records matched the search criteria${filterSummary ? `. Filters: ${filterSummary}` : '.'}`, { ...ctx.recoveryFor('no_results') });
|
|
154
214
|
}
|
|
155
215
|
const cases = bindings.map((b) => {
|
|
156
216
|
const c = {
|
|
157
217
|
work_uri: CellarSparqlService.bindingValue(b, 'work') ?? '',
|
|
158
218
|
celex_number: CellarSparqlService.bindingValue(b, 'celexNumber') ?? '',
|
|
159
219
|
};
|
|
160
|
-
const
|
|
161
|
-
if (
|
|
162
|
-
c.resource_type =
|
|
220
|
+
const typeUri = CellarSparqlService.bindingValue(b, 'type');
|
|
221
|
+
if (typeUri)
|
|
222
|
+
c.resource_type = resolveResourceTypeLabel(typeUri);
|
|
163
223
|
const date = CellarSparqlService.bindingValue(b, 'date');
|
|
164
224
|
if (date)
|
|
165
225
|
c.date = date;
|
|
@@ -168,12 +228,16 @@ SELECT DISTINCT ?work ?celexNumber ?type ?date ?title WHERE {
|
|
|
168
228
|
c.title = title;
|
|
169
229
|
return c;
|
|
170
230
|
});
|
|
171
|
-
return { cases, total: cases.length, offset: input.offset };
|
|
231
|
+
return { cases, total: cases.length, offset: input.offset, query_echo: queryEcho };
|
|
172
232
|
},
|
|
173
233
|
format: (result) => {
|
|
174
234
|
const lines = [
|
|
175
235
|
`## CJEU/GC Case Law (${result.total} results, offset ${result.offset})\n`,
|
|
176
236
|
];
|
|
237
|
+
const echoEntries = Object.entries(result.query_echo);
|
|
238
|
+
if (echoEntries.length > 0) {
|
|
239
|
+
lines.push(`*Filters: ${echoEntries.map(([k, v]) => `${k}=${JSON.stringify(v)}`).join(', ')}*\n`);
|
|
240
|
+
}
|
|
177
241
|
for (const c of result.cases) {
|
|
178
242
|
lines.push(`### ${c.celex_number}${c.title ? ` — ${c.title}` : ''}`);
|
|
179
243
|
if (c.date)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eurlex-get-cases.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurlex-get-cases.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;AAE3D,iDAAiD;AACjD,MAAM,iBAAiB,GAA2B;IAChD,QAAQ,EAAE,IAAI;IACd,KAAK,EAAE,IAAI;IACX,UAAU,EAAE,IAAI;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,EAAE;IACvD,KAAK,EAAE,yBAAyB;IAChC,WAAW,EACT,0HAA0H;QAC1H,sHAAsH;QACtH,yDAAyD;QACzD,
|
|
1
|
+
{"version":3,"file":"eurlex-get-cases.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurlex-get-cases.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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;AAejE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAqP9B,CAAC"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
6
6
|
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
7
|
+
import { resolveCorporateBodyLabel, resolveResourceTypeLabel, } from '../../../services/cellar-sparql/cdm-labels.js';
|
|
7
8
|
import { CellarSparqlService, getCellarSparqlService, } from '../../../services/cellar-sparql/cellar-sparql-service.js';
|
|
8
9
|
import { getEurLexContentService, } from '../../../services/eurlex-content/eurlex-content-service.js';
|
|
9
10
|
export const eurlex_get_document = tool('eurlex_get_document', {
|
|
@@ -49,11 +50,11 @@ export const eurlex_get_document = tool('eurlex_get_document', {
|
|
|
49
50
|
resource_type: z
|
|
50
51
|
.string()
|
|
51
52
|
.optional()
|
|
52
|
-
.describe('
|
|
53
|
+
.describe('Human-readable document type label (e.g. "Regulation", "Directive"). Absent for some older works.'),
|
|
53
54
|
author_institution: z
|
|
54
55
|
.string()
|
|
55
56
|
.optional()
|
|
56
|
-
.describe('
|
|
57
|
+
.describe('Human-readable name of the originating EU institution (e.g. "European Parliament", "Council of the EU"). Absent when not recorded.'),
|
|
57
58
|
legal_basis: z
|
|
58
59
|
.array(z.string().describe('CELEX number or URI of a legal basis act.'))
|
|
59
60
|
.optional()
|
|
@@ -157,9 +158,9 @@ SELECT ?work ?celexNumber ?type ?date ?title ?inForce ?author ?legalBasis ?eurov
|
|
|
157
158
|
if (date)
|
|
158
159
|
result.date = date;
|
|
159
160
|
if (resourceType)
|
|
160
|
-
result.resource_type = resourceType;
|
|
161
|
+
result.resource_type = resolveResourceTypeLabel(resourceType);
|
|
161
162
|
if (authorUri)
|
|
162
|
-
result.author_institution = authorUri;
|
|
163
|
+
result.author_institution = resolveCorporateBodyLabel(authorUri);
|
|
163
164
|
if (legalBases.size > 0)
|
|
164
165
|
result.legal_basis = [...legalBases];
|
|
165
166
|
if (eurovocConcepts.size > 0)
|
|
@@ -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":"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,EAGL,uBAAuB,GACxB,MAAM,qDAAqD,CAAC;AAE7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,qBAAqB,EAAE;IAC7D,KAAK,EAAE,iBAAiB;IACxB,WAAW,EACT,qFAAqF;QACrF,gHAAgH;QAChH,kEAAkE;QAClE,wFAAwF;QACxF,iDAAiD;QACjD,mHAAmH;QACnH,uEAAuE;QACvE,8EAA8E;QAC9E,4GAA4G;IAC9G,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IAC9E,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CACP,sFAAsF,CACvF;QACH,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,wIAAwI,CACzI;QACH,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,KAAK,CAAC,iBAAiB,CAAC;aACxB,OAAO,CAAC,IAAI,CAAC;aACb,QAAQ,CACP,6EAA6E;YAC3E,4EAA4E,CAC/E;QACH,MAAM,EAAE,CAAC;aACN,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;aACrB,OAAO,CAAC,MAAM,CAAC;aACf,QAAQ,CACP,mGAAmG,CACpG;KACJ,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;QACnF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC5D,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,uFAAuF,CACxF;QACH,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;QACtF,aAAa,EAAE,CAAC;aACb,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,
|
|
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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"}
|
|
@@ -33,6 +33,15 @@ export declare const eurlex_search_documents: import("@cyanheads/mcp-ts-core").T
|
|
|
33
33
|
}, z.core.$strip>>;
|
|
34
34
|
total: z.ZodNumber;
|
|
35
35
|
offset: z.ZodNumber;
|
|
36
|
+
query_echo: z.ZodObject<{
|
|
37
|
+
keyword: z.ZodOptional<z.ZodString>;
|
|
38
|
+
document_type: z.ZodOptional<z.ZodString>;
|
|
39
|
+
date_from: z.ZodOptional<z.ZodString>;
|
|
40
|
+
date_to: z.ZodOptional<z.ZodString>;
|
|
41
|
+
eurovoc_concept: z.ZodOptional<z.ZodString>;
|
|
42
|
+
author_institution: z.ZodOptional<z.ZodString>;
|
|
43
|
+
in_force: z.ZodOptional<z.ZodBoolean>;
|
|
44
|
+
}, z.core.$strip>;
|
|
36
45
|
}, z.core.$strip>, readonly [{
|
|
37
46
|
readonly reason: "no_results";
|
|
38
47
|
readonly code: JsonRpcErrorCode.NotFound;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eurlex-search-documents.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurlex-search-documents.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-search-documents.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurlex-search-documents.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAmBjE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAmQlC,CAAC"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
6
6
|
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
7
|
+
import { ENG_LANGUAGE_URI, resolveResourceTypeLabel } from '../../../services/cellar-sparql/cdm-labels.js';
|
|
7
8
|
import { CellarSparqlService, getCellarSparqlService, } from '../../../services/cellar-sparql/cellar-sparql-service.js';
|
|
8
9
|
/** CDM resource type URIs for common document categories. */
|
|
9
10
|
const DOCUMENT_TYPE_URIS = {
|
|
@@ -20,9 +21,9 @@ export const eurlex_search_documents = tool('eurlex_search_documents', {
|
|
|
20
21
|
title: 'Search EU Documents',
|
|
21
22
|
description: 'Search EU legislation, treaties, and preparatory acts across the CELLAR corpus of 2.7M+ works. ' +
|
|
22
23
|
'Filters by document type, date range, EuroVoc subject concept, author institution, and in-force status. ' +
|
|
23
|
-
'Keyword search
|
|
24
|
+
'Keyword search matches against English expression titles and CELEX strings — full-text body search is not available via this API. ' +
|
|
24
25
|
'For multi-word searches, supply a single dominant keyword; use other filters to narrow results. ' +
|
|
25
|
-
'Returns CELEX numbers, work URIs, document
|
|
26
|
+
'Returns CELEX numbers, work URIs, human-readable document type labels, and dates — use these with eurlex_get_document to fetch full content. ' +
|
|
26
27
|
'To filter by EuroVoc subject, first call eurlex_browse_subjects to obtain the concept URI. ' +
|
|
27
28
|
'Case law (CJEU/GC judgments) is better searched via eurlex_get_cases which has court-specific parameters.',
|
|
28
29
|
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
@@ -86,12 +87,12 @@ export const eurlex_search_documents = tool('eurlex_search_documents', {
|
|
|
86
87
|
resource_type: z
|
|
87
88
|
.string()
|
|
88
89
|
.optional()
|
|
89
|
-
.describe('
|
|
90
|
+
.describe('Human-readable document type label (e.g. "Regulation", "Directive"). Absent for some older works.'),
|
|
90
91
|
date: z.string().optional().describe('Document date in ISO 8601 format (YYYY-MM-DD).'),
|
|
91
92
|
title: z
|
|
92
93
|
.string()
|
|
93
94
|
.optional()
|
|
94
|
-
.describe('
|
|
95
|
+
.describe('English expression title where available; absent for many older works and judgments.'),
|
|
95
96
|
})
|
|
96
97
|
.describe('A single EU legislative work with its CELEX number, type, and date.'))
|
|
97
98
|
.describe('Matching EU documents ordered by date descending.'),
|
|
@@ -99,6 +100,17 @@ export const eurlex_search_documents = tool('eurlex_search_documents', {
|
|
|
99
100
|
.number()
|
|
100
101
|
.describe('Number of documents returned in this page (not a corpus-wide count).'),
|
|
101
102
|
offset: z.number().describe('Pagination offset used for this response.'),
|
|
103
|
+
query_echo: z
|
|
104
|
+
.object({
|
|
105
|
+
keyword: z.string().optional().describe('Keyword filter applied.'),
|
|
106
|
+
document_type: z.string().optional().describe('Document type filter applied.'),
|
|
107
|
+
date_from: z.string().optional().describe('Start date filter applied.'),
|
|
108
|
+
date_to: z.string().optional().describe('End date filter applied.'),
|
|
109
|
+
eurovoc_concept: z.string().optional().describe('EuroVoc concept URI filter applied.'),
|
|
110
|
+
author_institution: z.string().optional().describe('Author institution filter applied.'),
|
|
111
|
+
in_force: z.boolean().optional().describe('In-force filter applied.'),
|
|
112
|
+
})
|
|
113
|
+
.describe('Echo of filters applied to this search. Useful for diagnosing empty results.'),
|
|
102
114
|
}),
|
|
103
115
|
errors: [
|
|
104
116
|
{
|
|
@@ -143,17 +155,34 @@ export const eurlex_search_documents = tool('eurlex_search_documents', {
|
|
|
143
155
|
? `OPTIONAL { ?work cdm:work_created_by_agent ?agent . ?agent cdm:corporate-body_label ?agentLabel . FILTER(LANG(?agentLabel) = "en") FILTER(CONTAINS(LCASE(STR(?agentLabel)), "${input.author_institution.trim().toLowerCase().replace(/"/g, '\\"')}")) }`
|
|
144
156
|
: '';
|
|
145
157
|
const inForceClause = input.in_force === true ? `OPTIONAL { ?work cdm:resource_legal_in-force ?inForce . }` : '';
|
|
158
|
+
// Titles live on expressions, not works. Traverse the expression graph:
|
|
159
|
+
// ?expr cdm:expression_belongs_to_work ?work (inverse of cdm:work_has_expression)
|
|
160
|
+
// ?expr cdm:expression_uses_language <.../ENG>
|
|
161
|
+
// ?expr cdm:expression_title ?title
|
|
146
162
|
const sparql = `
|
|
147
163
|
SELECT DISTINCT ?work ?celexNumber ?type ?date ?title WHERE {
|
|
148
164
|
?work cdm:resource_legal_id_celex ?celexNumber .
|
|
149
165
|
OPTIONAL { ?work cdm:work_has_resource-type ?type . }
|
|
150
166
|
OPTIONAL { ?work cdm:work_date_document ?date . }
|
|
151
|
-
OPTIONAL {
|
|
167
|
+
OPTIONAL {
|
|
168
|
+
?expr cdm:expression_belongs_to_work ?work .
|
|
169
|
+
?expr cdm:expression_uses_language <${ENG_LANGUAGE_URI}> .
|
|
170
|
+
?expr cdm:expression_title ?title .
|
|
171
|
+
}
|
|
152
172
|
${eurovocClause}
|
|
153
173
|
${authorClause}
|
|
154
174
|
${inForceClause}
|
|
155
175
|
${filters.join('\n ')}
|
|
156
176
|
} ORDER BY DESC(?date) LIMIT ${input.limit} OFFSET ${input.offset}`;
|
|
177
|
+
const queryEcho = {
|
|
178
|
+
...(input.keyword ? { keyword: input.keyword } : {}),
|
|
179
|
+
...(input.document_type ? { document_type: input.document_type } : {}),
|
|
180
|
+
...(input.date_from ? { date_from: input.date_from } : {}),
|
|
181
|
+
...(input.date_to ? { date_to: input.date_to } : {}),
|
|
182
|
+
...(input.eurovoc_concept ? { eurovoc_concept: input.eurovoc_concept } : {}),
|
|
183
|
+
...(input.author_institution ? { author_institution: input.author_institution } : {}),
|
|
184
|
+
...(input.in_force !== undefined ? { in_force: input.in_force } : {}),
|
|
185
|
+
};
|
|
157
186
|
const bindings = await svc.query(sparql, ctx);
|
|
158
187
|
ctx.log.info('Document search', {
|
|
159
188
|
keyword: input.keyword,
|
|
@@ -162,18 +191,19 @@ SELECT DISTINCT ?work ?celexNumber ?type ?date ?title WHERE {
|
|
|
162
191
|
offset: input.offset,
|
|
163
192
|
});
|
|
164
193
|
if (bindings.length === 0) {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
194
|
+
const filterSummary = Object.entries(queryEcho)
|
|
195
|
+
.map(([k, v]) => `${k}=${String(v)}`)
|
|
196
|
+
.join(', ');
|
|
197
|
+
throw ctx.fail('no_results', `No documents matched the search criteria${filterSummary ? `. Filters: ${filterSummary}` : '.'}`, { ...ctx.recoveryFor('no_results') });
|
|
168
198
|
}
|
|
169
199
|
const documents = bindings.map((b) => {
|
|
170
200
|
const doc = {
|
|
171
201
|
work_uri: CellarSparqlService.bindingValue(b, 'work') ?? '',
|
|
172
202
|
celex_number: CellarSparqlService.bindingValue(b, 'celexNumber') ?? '',
|
|
173
203
|
};
|
|
174
|
-
const
|
|
175
|
-
if (
|
|
176
|
-
doc.resource_type =
|
|
204
|
+
const typeUri = CellarSparqlService.bindingValue(b, 'type');
|
|
205
|
+
if (typeUri)
|
|
206
|
+
doc.resource_type = resolveResourceTypeLabel(typeUri);
|
|
177
207
|
const date = CellarSparqlService.bindingValue(b, 'date');
|
|
178
208
|
if (date)
|
|
179
209
|
doc.date = date;
|
|
@@ -182,12 +212,16 @@ SELECT DISTINCT ?work ?celexNumber ?type ?date ?title WHERE {
|
|
|
182
212
|
doc.title = title;
|
|
183
213
|
return doc;
|
|
184
214
|
});
|
|
185
|
-
return { documents, total: documents.length, offset: input.offset };
|
|
215
|
+
return { documents, total: documents.length, offset: input.offset, query_echo: queryEcho };
|
|
186
216
|
},
|
|
187
217
|
format: (result) => {
|
|
188
218
|
const lines = [
|
|
189
219
|
`## EU Documents (${result.total} results, offset ${result.offset})\n`,
|
|
190
220
|
];
|
|
221
|
+
const echoEntries = Object.entries(result.query_echo);
|
|
222
|
+
if (echoEntries.length > 0) {
|
|
223
|
+
lines.push(`*Filters: ${echoEntries.map(([k, v]) => `${k}=${JSON.stringify(v)}`).join(', ')}*\n`);
|
|
224
|
+
}
|
|
191
225
|
for (const doc of result.documents) {
|
|
192
226
|
lines.push(`### ${doc.celex_number}${doc.title ? ` — ${doc.title}` : ''}`);
|
|
193
227
|
if (doc.date)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eurlex-search-documents.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurlex-search-documents.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;AAE3D,6DAA6D;AAC7D,MAAM,kBAAkB,GAA2B;IACjD,GAAG,EAAE,oEAAoE;IACzE,GAAG,EAAE,oEAAoE;IACzE,GAAG,EAAE,oEAAoE;IACzE,MAAM,EAAE,uEAAuE;IAC/E,IAAI,EAAE,qEAAqE;IAC3E,OAAO,EAAE,wEAAwE;IACjF,IAAI,EAAE,yEAAyE;IAC/E,GAAG,EAAE,yEAAyE;CAC/E,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC,yBAAyB,EAAE;IACrE,KAAK,EAAE,qBAAqB;IAC5B,WAAW,EACT,iGAAiG;QACjG,0GAA0G;QAC1G,
|
|
1
|
+
{"version":3,"file":"eurlex-search-documents.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurlex-search-documents.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,6 +45,15 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
|
|
|
45
45
|
}, import("zod/v4/core").$strip>>;
|
|
46
46
|
total: import("zod").ZodNumber;
|
|
47
47
|
offset: import("zod").ZodNumber;
|
|
48
|
+
query_echo: import("zod").ZodObject<{
|
|
49
|
+
case_number: import("zod").ZodOptional<import("zod").ZodString>;
|
|
50
|
+
celex_fragment: import("zod").ZodOptional<import("zod").ZodString>;
|
|
51
|
+
keyword: import("zod").ZodOptional<import("zod").ZodString>;
|
|
52
|
+
court: import("zod").ZodOptional<import("zod").ZodString>;
|
|
53
|
+
case_type: import("zod").ZodOptional<import("zod").ZodString>;
|
|
54
|
+
date_from: import("zod").ZodOptional<import("zod").ZodString>;
|
|
55
|
+
date_to: import("zod").ZodOptional<import("zod").ZodString>;
|
|
56
|
+
}, import("zod/v4/core").$strip>;
|
|
48
57
|
}, import("zod/v4/core").$strip>, readonly [{
|
|
49
58
|
readonly reason: "no_results";
|
|
50
59
|
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
@@ -193,6 +202,15 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
|
|
|
193
202
|
}, import("zod/v4/core").$strip>>;
|
|
194
203
|
total: import("zod").ZodNumber;
|
|
195
204
|
offset: import("zod").ZodNumber;
|
|
205
|
+
query_echo: import("zod").ZodObject<{
|
|
206
|
+
keyword: import("zod").ZodOptional<import("zod").ZodString>;
|
|
207
|
+
document_type: import("zod").ZodOptional<import("zod").ZodString>;
|
|
208
|
+
date_from: import("zod").ZodOptional<import("zod").ZodString>;
|
|
209
|
+
date_to: import("zod").ZodOptional<import("zod").ZodString>;
|
|
210
|
+
eurovoc_concept: import("zod").ZodOptional<import("zod").ZodString>;
|
|
211
|
+
author_institution: import("zod").ZodOptional<import("zod").ZodString>;
|
|
212
|
+
in_force: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
213
|
+
}, import("zod/v4/core").$strip>;
|
|
196
214
|
}, import("zod/v4/core").$strip>, readonly [{
|
|
197
215
|
readonly reason: "no_results";
|
|
198
216
|
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQ9B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview CDM authority-register URI → human-readable label maps and resolvers.
|
|
3
|
+
* Covers resource types (legislation, case law) and corporate bodies (EU institutions).
|
|
4
|
+
* Used by tool handlers that normalise raw CDM URIs into labels before returning results.
|
|
5
|
+
* @module services/cellar-sparql/cdm-labels
|
|
6
|
+
*/
|
|
7
|
+
/** English language URI used in expression-level title queries. */
|
|
8
|
+
export declare const ENG_LANGUAGE_URI = "http://publications.europa.eu/resource/authority/language/ENG";
|
|
9
|
+
/**
|
|
10
|
+
* CDM resource-type URI → human-readable short label.
|
|
11
|
+
* Covers common legislation types, case law types, and preparatory acts.
|
|
12
|
+
* Falls back to the last URI path segment when not in the map.
|
|
13
|
+
*/
|
|
14
|
+
export declare const RESOURCE_TYPE_LABELS: Record<string, string>;
|
|
15
|
+
/** Resolve a CDM resource-type URI to a human-readable label. Falls back to last path segment. */
|
|
16
|
+
export declare function resolveResourceTypeLabel(uri: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* CDM corporate-body URI → human-readable institution name.
|
|
19
|
+
* Falls back to the last URI path segment when not in the map.
|
|
20
|
+
*/
|
|
21
|
+
export declare const CORPORATE_BODY_LABELS: Record<string, string>;
|
|
22
|
+
/** Resolve a CDM corporate-body URI to a human-readable institution name. Falls back to last path segment. */
|
|
23
|
+
export declare function resolveCorporateBodyLabel(uri: string): string;
|
|
24
|
+
//# sourceMappingURL=cdm-labels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cdm-labels.d.ts","sourceRoot":"","sources":["../../../src/services/cellar-sparql/cdm-labels.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,mEAAmE;AACnE,eAAO,MAAM,gBAAgB,kEAAkE,CAAC;AAEhG;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAmBvD,CAAC;AAEF,kGAAkG;AAClG,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAgDxD,CAAC;AAEF,8GAA8G;AAC9G,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7D"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview CDM authority-register URI → human-readable label maps and resolvers.
|
|
3
|
+
* Covers resource types (legislation, case law) and corporate bodies (EU institutions).
|
|
4
|
+
* Used by tool handlers that normalise raw CDM URIs into labels before returning results.
|
|
5
|
+
* @module services/cellar-sparql/cdm-labels
|
|
6
|
+
*/
|
|
7
|
+
/** English language URI used in expression-level title queries. */
|
|
8
|
+
export const ENG_LANGUAGE_URI = 'http://publications.europa.eu/resource/authority/language/ENG';
|
|
9
|
+
/**
|
|
10
|
+
* CDM resource-type URI → human-readable short label.
|
|
11
|
+
* Covers common legislation types, case law types, and preparatory acts.
|
|
12
|
+
* Falls back to the last URI path segment when not in the map.
|
|
13
|
+
*/
|
|
14
|
+
export const RESOURCE_TYPE_LABELS = {
|
|
15
|
+
'http://publications.europa.eu/resource/authority/resource-type/REG': 'Regulation',
|
|
16
|
+
'http://publications.europa.eu/resource/authority/resource-type/DIR': 'Directive',
|
|
17
|
+
'http://publications.europa.eu/resource/authority/resource-type/DEC': 'Decision',
|
|
18
|
+
'http://publications.europa.eu/resource/authority/resource-type/TREATY': 'Treaty',
|
|
19
|
+
'http://publications.europa.eu/resource/authority/resource-type/JUDG': 'Judgment',
|
|
20
|
+
'http://publications.europa.eu/resource/authority/resource-type/ORDER': 'Order',
|
|
21
|
+
'http://publications.europa.eu/resource/authority/resource-type/OPIN_AG': 'AG Opinion',
|
|
22
|
+
'http://publications.europa.eu/resource/authority/resource-type/AG_OPI': 'AG Opinion',
|
|
23
|
+
'http://publications.europa.eu/resource/authority/resource-type/VIEW_AG': 'AG View',
|
|
24
|
+
'http://publications.europa.eu/resource/authority/resource-type/RULING': 'Ruling',
|
|
25
|
+
'http://publications.europa.eu/resource/authority/resource-type/PROP_DIR': 'Proposal',
|
|
26
|
+
'http://publications.europa.eu/resource/authority/resource-type/REC_SOFT': 'Recommendation',
|
|
27
|
+
'http://publications.europa.eu/resource/authority/resource-type/RES': 'Resolution',
|
|
28
|
+
'http://publications.europa.eu/resource/authority/resource-type/AGREE_INTERNATION': 'International Agreement',
|
|
29
|
+
'http://publications.europa.eu/resource/authority/resource-type/IMPL_REG': 'Implementing Regulation',
|
|
30
|
+
'http://publications.europa.eu/resource/authority/resource-type/DEL_REG': 'Delegated Regulation',
|
|
31
|
+
};
|
|
32
|
+
/** Resolve a CDM resource-type URI to a human-readable label. Falls back to last path segment. */
|
|
33
|
+
export function resolveResourceTypeLabel(uri) {
|
|
34
|
+
return RESOURCE_TYPE_LABELS[uri] ?? uri.split('/').pop() ?? uri;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* CDM corporate-body URI → human-readable institution name.
|
|
38
|
+
* Falls back to the last URI path segment when not in the map.
|
|
39
|
+
*/
|
|
40
|
+
export const CORPORATE_BODY_LABELS = {
|
|
41
|
+
'http://publications.europa.eu/resource/authority/corporate-body/EP': 'European Parliament',
|
|
42
|
+
'http://publications.europa.eu/resource/authority/corporate-body/CONSIL': 'Council of the EU',
|
|
43
|
+
'http://publications.europa.eu/resource/authority/corporate-body/COM': 'European Commission',
|
|
44
|
+
'http://publications.europa.eu/resource/authority/corporate-body/CURIA': 'Court of Justice of the EU',
|
|
45
|
+
'http://publications.europa.eu/resource/authority/corporate-body/ECB': 'European Central Bank',
|
|
46
|
+
'http://publications.europa.eu/resource/authority/corporate-body/EIB': 'European Investment Bank',
|
|
47
|
+
'http://publications.europa.eu/resource/authority/corporate-body/ECA': 'European Court of Auditors',
|
|
48
|
+
'http://publications.europa.eu/resource/authority/corporate-body/ESC': 'European Economic and Social Committee',
|
|
49
|
+
'http://publications.europa.eu/resource/authority/corporate-body/COR': 'Committee of the Regions',
|
|
50
|
+
'http://publications.europa.eu/resource/authority/corporate-body/EURATOM': 'Euratom',
|
|
51
|
+
'http://publications.europa.eu/resource/authority/corporate-body/SRB': 'Single Resolution Board',
|
|
52
|
+
'http://publications.europa.eu/resource/authority/corporate-body/ESMA': 'European Securities and Markets Authority',
|
|
53
|
+
'http://publications.europa.eu/resource/authority/corporate-body/EBA': 'European Banking Authority',
|
|
54
|
+
'http://publications.europa.eu/resource/authority/corporate-body/EIOPA': 'European Insurance and Occupational Pensions Authority',
|
|
55
|
+
'http://publications.europa.eu/resource/authority/corporate-body/ECDC': 'European Centre for Disease Prevention and Control',
|
|
56
|
+
'http://publications.europa.eu/resource/authority/corporate-body/EEA': 'European Environment Agency',
|
|
57
|
+
'http://publications.europa.eu/resource/authority/corporate-body/EASA': 'European Union Aviation Safety Agency',
|
|
58
|
+
'http://publications.europa.eu/resource/authority/corporate-body/EFSA': 'European Food Safety Authority',
|
|
59
|
+
'http://publications.europa.eu/resource/authority/corporate-body/EMA': 'European Medicines Agency',
|
|
60
|
+
'http://publications.europa.eu/resource/authority/corporate-body/EMEA': 'European Medicines Agency',
|
|
61
|
+
'http://publications.europa.eu/resource/authority/corporate-body/FRONTEX': 'Frontex',
|
|
62
|
+
'http://publications.europa.eu/resource/authority/corporate-body/EUIPO': 'European Union Intellectual Property Office',
|
|
63
|
+
'http://publications.europa.eu/resource/authority/corporate-body/ETF': 'European Training Foundation',
|
|
64
|
+
'http://publications.europa.eu/resource/authority/corporate-body/EASO': 'European Asylum Support Office',
|
|
65
|
+
'http://publications.europa.eu/resource/authority/corporate-body/ESTAT': 'Eurostat',
|
|
66
|
+
'http://publications.europa.eu/resource/authority/corporate-body/JUST': 'DG Justice',
|
|
67
|
+
'http://publications.europa.eu/resource/authority/corporate-body/GROW': 'DG Internal Market',
|
|
68
|
+
'http://publications.europa.eu/resource/authority/corporate-body/SANTE': 'DG Health and Food Safety',
|
|
69
|
+
'http://publications.europa.eu/resource/authority/corporate-body/COMP': 'DG Competition',
|
|
70
|
+
'http://publications.europa.eu/resource/authority/corporate-body/FISMA': 'DG Financial Stability',
|
|
71
|
+
'http://publications.europa.eu/resource/authority/corporate-body/TRADE': 'DG Trade',
|
|
72
|
+
};
|
|
73
|
+
/** Resolve a CDM corporate-body URI to a human-readable institution name. Falls back to last path segment. */
|
|
74
|
+
export function resolveCorporateBodyLabel(uri) {
|
|
75
|
+
return CORPORATE_BODY_LABELS[uri] ?? uri.split('/').pop() ?? uri;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=cdm-labels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cdm-labels.js","sourceRoot":"","sources":["../../../src/services/cellar-sparql/cdm-labels.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,mEAAmE;AACnE,MAAM,CAAC,MAAM,gBAAgB,GAAG,+DAA+D,CAAC;AAEhG;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA2B;IAC1D,oEAAoE,EAAE,YAAY;IAClF,oEAAoE,EAAE,WAAW;IACjF,oEAAoE,EAAE,UAAU;IAChF,uEAAuE,EAAE,QAAQ;IACjF,qEAAqE,EAAE,UAAU;IACjF,sEAAsE,EAAE,OAAO;IAC/E,wEAAwE,EAAE,YAAY;IACtF,uEAAuE,EAAE,YAAY;IACrF,wEAAwE,EAAE,SAAS;IACnF,uEAAuE,EAAE,QAAQ;IACjF,yEAAyE,EAAE,UAAU;IACrF,yEAAyE,EAAE,gBAAgB;IAC3F,oEAAoE,EAAE,YAAY;IAClF,kFAAkF,EAChF,yBAAyB;IAC3B,yEAAyE,EACvE,yBAAyB;IAC3B,wEAAwE,EAAE,sBAAsB;CACjG,CAAC;AAEF,kGAAkG;AAClG,MAAM,UAAU,wBAAwB,CAAC,GAAW;IAClD,OAAO,oBAAoB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAA2B;IAC3D,oEAAoE,EAAE,qBAAqB;IAC3F,wEAAwE,EAAE,mBAAmB;IAC7F,qEAAqE,EAAE,qBAAqB;IAC5F,uEAAuE,EACrE,4BAA4B;IAC9B,qEAAqE,EAAE,uBAAuB;IAC9F,qEAAqE,EAAE,0BAA0B;IACjG,qEAAqE,EACnE,4BAA4B;IAC9B,qEAAqE,EACnE,wCAAwC;IAC1C,qEAAqE,EAAE,0BAA0B;IACjG,yEAAyE,EAAE,SAAS;IACpF,qEAAqE,EAAE,yBAAyB;IAChG,sEAAsE,EACpE,2CAA2C;IAC7C,qEAAqE,EACnE,4BAA4B;IAC9B,uEAAuE,EACrE,wDAAwD;IAC1D,sEAAsE,EACpE,oDAAoD;IACtD,qEAAqE,EACnE,6BAA6B;IAC/B,sEAAsE,EACpE,uCAAuC;IACzC,sEAAsE,EACpE,gCAAgC;IAClC,qEAAqE,EACnE,2BAA2B;IAC7B,sEAAsE,EACpE,2BAA2B;IAC7B,yEAAyE,EAAE,SAAS;IACpF,uEAAuE,EACrE,6CAA6C;IAC/C,qEAAqE,EACnE,8BAA8B;IAChC,sEAAsE,EACpE,gCAAgC;IAClC,uEAAuE,EAAE,UAAU;IACnF,sEAAsE,EAAE,YAAY;IACpF,sEAAsE,EAAE,oBAAoB;IAC5F,uEAAuE,EACrE,2BAA2B;IAC7B,sEAAsE,EAAE,gBAAgB;IACxF,uEAAuE,EAAE,wBAAwB;IACjG,uEAAuE,EAAE,UAAU;CACpF,CAAC;AAEF,8GAA8G;AAC9G,MAAM,UAAU,yBAAyB,CAAC,GAAW;IACnD,OAAO,qBAAqB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;AACnE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/eur-lex-mcp-server",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"mcpName": "io.github.cyanheads/eur-lex-mcp-server",
|
|
5
5
|
"description": "Search EU legislation, CJEU case law, and treaties; traverse the CELLAR relationship graph; resolve EuroVoc concepts via MCP. STDIO or Streamable HTTP.",
|
|
6
6
|
"type": "module",
|
package/server.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"url": "https://github.com/cyanheads/eur-lex-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.1.
|
|
9
|
+
"version": "0.1.3",
|
|
10
10
|
"remotes": [
|
|
11
11
|
{
|
|
12
12
|
"type": "streamable-http",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
20
20
|
"identifier": "@cyanheads/eur-lex-mcp-server",
|
|
21
21
|
"runtimeHint": "bun",
|
|
22
|
-
"version": "0.1.
|
|
22
|
+
"version": "0.1.3",
|
|
23
23
|
"packageArguments": [
|
|
24
24
|
{
|
|
25
25
|
"type": "positional",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
77
77
|
"identifier": "@cyanheads/eur-lex-mcp-server",
|
|
78
78
|
"runtimeHint": "bun",
|
|
79
|
-
"version": "0.1.
|
|
79
|
+
"version": "0.1.3",
|
|
80
80
|
"packageArguments": [
|
|
81
81
|
{
|
|
82
82
|
"type": "positional",
|