@aborruso/ckan-mcp-server 0.4.16 → 0.4.18

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.
Files changed (87) hide show
  1. package/LOG.md +78 -0
  2. package/README.md +104 -34
  3. package/dist/index.js +161 -45
  4. package/dist/worker.js +42 -42
  5. package/package.json +12 -1
  6. package/.devin/wiki.json +0 -273
  7. package/CLAUDE.md +0 -398
  8. package/PRD.md +0 -999
  9. package/REFACTORING.md +0 -238
  10. package/examples/langgraph/01_basic_workflow.py +0 -277
  11. package/examples/langgraph/02_data_exploration.py +0 -366
  12. package/examples/langgraph/README.md +0 -719
  13. package/examples/langgraph/metadata_quality.py +0 -299
  14. package/examples/langgraph/requirements.txt +0 -12
  15. package/examples/langgraph/setup.sh +0 -32
  16. package/examples/langgraph/test_setup.py +0 -106
  17. package/openspec/AGENTS.md +0 -456
  18. package/openspec/changes/add-ckan-analyze-dataset-structure/proposal.md +0 -17
  19. package/openspec/changes/add-ckan-analyze-dataset-structure/specs/ckan-insights/spec.md +0 -7
  20. package/openspec/changes/add-ckan-analyze-dataset-structure/tasks.md +0 -6
  21. package/openspec/changes/add-ckan-analyze-dataset-updates/proposal.md +0 -17
  22. package/openspec/changes/add-ckan-analyze-dataset-updates/specs/ckan-insights/spec.md +0 -7
  23. package/openspec/changes/add-ckan-analyze-dataset-updates/tasks.md +0 -6
  24. package/openspec/changes/add-ckan-audit-tool/proposal.md +0 -17
  25. package/openspec/changes/add-ckan-audit-tool/specs/ckan-insights/spec.md +0 -7
  26. package/openspec/changes/add-ckan-audit-tool/tasks.md +0 -6
  27. package/openspec/changes/add-ckan-dataset-insights/proposal.md +0 -17
  28. package/openspec/changes/add-ckan-dataset-insights/specs/ckan-insights/spec.md +0 -7
  29. package/openspec/changes/add-ckan-dataset-insights/tasks.md +0 -6
  30. package/openspec/changes/add-ckan-host-allowlist-env/design.md +0 -38
  31. package/openspec/changes/add-ckan-host-allowlist-env/proposal.md +0 -16
  32. package/openspec/changes/add-ckan-host-allowlist-env/specs/ckan-request-allowlist/spec.md +0 -15
  33. package/openspec/changes/add-ckan-host-allowlist-env/specs/cloudflare-deployment/spec.md +0 -11
  34. package/openspec/changes/add-ckan-host-allowlist-env/tasks.md +0 -12
  35. package/openspec/changes/add-escape-text-query/proposal.md +0 -12
  36. package/openspec/changes/add-escape-text-query/specs/ckan-search/spec.md +0 -11
  37. package/openspec/changes/add-escape-text-query/tasks.md +0 -8
  38. package/openspec/changes/add-mqa-quality-tool/proposal.md +0 -21
  39. package/openspec/changes/add-mqa-quality-tool/specs/ckan-quality/spec.md +0 -71
  40. package/openspec/changes/add-mqa-quality-tool/tasks.md +0 -29
  41. package/openspec/changes/archive/2026-01-08-add-mcp-resources/design.md +0 -115
  42. package/openspec/changes/archive/2026-01-08-add-mcp-resources/proposal.md +0 -52
  43. package/openspec/changes/archive/2026-01-08-add-mcp-resources/specs/mcp-resources/spec.md +0 -92
  44. package/openspec/changes/archive/2026-01-08-add-mcp-resources/tasks.md +0 -56
  45. package/openspec/changes/archive/2026-01-08-expand-test-coverage-specs/design.md +0 -355
  46. package/openspec/changes/archive/2026-01-08-expand-test-coverage-specs/proposal.md +0 -161
  47. package/openspec/changes/archive/2026-01-08-expand-test-coverage-specs/tasks.md +0 -162
  48. package/openspec/changes/archive/2026-01-08-translate-project-to-english/proposal.md +0 -115
  49. package/openspec/changes/archive/2026-01-08-translate-project-to-english/specs/documentation-language/spec.md +0 -32
  50. package/openspec/changes/archive/2026-01-08-translate-project-to-english/tasks.md +0 -115
  51. package/openspec/changes/archive/2026-01-10-add-ckan-find-relevant-datasets/proposal.md +0 -17
  52. package/openspec/changes/archive/2026-01-10-add-ckan-find-relevant-datasets/specs/ckan-insights/spec.md +0 -7
  53. package/openspec/changes/archive/2026-01-10-add-ckan-find-relevant-datasets/tasks.md +0 -6
  54. package/openspec/changes/archive/2026-01-10-add-cloudflare-workers/design.md +0 -734
  55. package/openspec/changes/archive/2026-01-10-add-cloudflare-workers/proposal.md +0 -183
  56. package/openspec/changes/archive/2026-01-10-add-cloudflare-workers/specs/cloudflare-deployment/spec.md +0 -389
  57. package/openspec/changes/archive/2026-01-10-add-cloudflare-workers/tasks.md +0 -519
  58. package/openspec/changes/archive/2026-01-15-add-mcp-prompts/proposal.md +0 -13
  59. package/openspec/changes/archive/2026-01-15-add-mcp-prompts/specs/mcp-prompts/spec.md +0 -22
  60. package/openspec/changes/archive/2026-01-15-add-mcp-prompts/tasks.md +0 -10
  61. package/openspec/changes/archive/2026-01-15-add-mcp-resource-filters/proposal.md +0 -13
  62. package/openspec/changes/archive/2026-01-15-add-mcp-resource-filters/specs/mcp-resources/spec.md +0 -38
  63. package/openspec/changes/archive/2026-01-15-add-mcp-resource-filters/tasks.md +0 -10
  64. package/openspec/changes/archive/2026-01-19-update-repo-owner-ondata/proposal.md +0 -13
  65. package/openspec/changes/archive/2026-01-19-update-repo-owner-ondata/specs/repository-metadata/spec.md +0 -14
  66. package/openspec/changes/archive/2026-01-19-update-repo-owner-ondata/tasks.md +0 -12
  67. package/openspec/changes/archive/2026-01-19-update-search-parser-config/proposal.md +0 -13
  68. package/openspec/changes/archive/2026-01-19-update-search-parser-config/specs/ckan-insights/spec.md +0 -11
  69. package/openspec/changes/archive/2026-01-19-update-search-parser-config/specs/ckan-search/spec.md +0 -11
  70. package/openspec/changes/archive/2026-01-19-update-search-parser-config/tasks.md +0 -6
  71. package/openspec/changes/archive/add-automated-tests/design.md +0 -324
  72. package/openspec/changes/archive/add-automated-tests/proposal.md +0 -167
  73. package/openspec/changes/archive/add-automated-tests/specs/automated-testing/spec.md +0 -143
  74. package/openspec/changes/archive/add-automated-tests/tasks.md +0 -132
  75. package/openspec/project.md +0 -115
  76. package/openspec/specs/ckan-insights/spec.md +0 -23
  77. package/openspec/specs/ckan-search/spec.md +0 -16
  78. package/openspec/specs/cloudflare-deployment/spec.md +0 -344
  79. package/openspec/specs/documentation-language/spec.md +0 -32
  80. package/openspec/specs/mcp-prompts/spec.md +0 -26
  81. package/openspec/specs/mcp-resources/spec.md +0 -120
  82. package/openspec/specs/repository-metadata/spec.md +0 -19
  83. package/private/commenti-privati.yaml +0 -14
  84. package/testo.md +0 -12
  85. package/web-gui/PRD.md +0 -158
  86. package/web-gui/public/index.html +0 -883
  87. package/wrangler.toml +0 -6
@@ -1,115 +0,0 @@
1
- # Proposal: Translate Project to English
2
-
3
- **Status:** Completed
4
- **Created:** 2026-01-08
5
- **Author:** OpenCode
6
- **Archived:** 2026-01-08 (as expand-test-coverage-specs)
7
-
8
- ## Summary
9
-
10
- Translate the CKAN MCP Server project documentation from Italian to English to improve accessibility and align with international open data standards.
11
-
12
- ## Motivation
13
-
14
- The CKAN MCP Server project is currently documented in Italian, which limits its accessibility to the global open data community. Since:
15
- - CKAN is an international platform used by 500+ portals worldwide
16
- - The MCP protocol and most technical documentation are in English
17
- - The target audience (data scientists, developers, researchers) is primarily English-speaking
18
- - The source code comments are already in English
19
-
20
- Translating the documentation will:
21
- - Lower adoption barriers for international users
22
- - Improve discoverability through search engines
23
- - Align with CKAN's global community
24
- - Maintain consistency with the already-English codebase
25
-
26
- ## Scope
27
-
28
- ### Included
29
- - **README.md**: Main project documentation (285 lines)
30
- - **EXAMPLES.md**: Usage examples and workflows (427 lines)
31
-
32
- ### Excluded
33
- - Source code files (already in English)
34
- - SKILL.md (English skill documentation)
35
- - AGENTS.md, LOG.md, other internal docs
36
- - Package metadata (package.json, package-lock.json)
37
- - API/tool names (already English)
38
- - User-facing tool outputs (already English)
39
-
40
- ## Proposed Changes
41
-
42
- ### Files to Translate
43
-
44
- 1. **README.md**
45
- - Project description and features
46
- - Installation and usage instructions
47
- - Tool descriptions and examples
48
- - Troubleshooting guide
49
- - Links and support section
50
-
51
- 2. **EXAMPLES.md**
52
- - Connection tests
53
- - Italy-specific examples (dati.gov.it)
54
- - USA examples (data.gov)
55
- - Demo CKAN examples
56
- - DataStore queries
57
- - Advanced Solr queries
58
- - Complete workflows
59
-
60
- ### Translation Approach
61
-
62
- - Direct translation maintaining technical accuracy
63
- - Preserve all code examples (already in English)
64
- - Keep Italian portal names, organization titles, and data values in Italian (e.g., "Regione Siciliana")
65
- - Maintain structure and formatting
66
- - Use official CKAN terminology (DataStore, faceting, Solr)
67
- - Use ISO format for dates
68
- - Keep current examples (Italy, USA, demo.ckan.org)
69
-
70
- ## Alternatives Considered
71
-
72
- 1. **Bilingual documentation**: Keep Italian and add English sections
73
- - *Rejected*: Increases maintenance burden, creates version drift issues
74
-
75
- 2. **Auto-translation tools only**: Use machine translation without review
76
- - *Rejected*: Quality concerns, potential technical errors
77
-
78
- 3. **No translation**: Keep Italian only
79
- - *Rejected*: Limits project adoption and community growth
80
-
81
- ## Impact Assessment
82
-
83
- ### Benefits
84
- - + Improved accessibility for international users
85
- - + Better alignment with CKAN global community
86
- - + Consistent language across code and documentation
87
- - + Easier onboarding for new contributors
88
-
89
- ### Risks
90
- - - Loss of Italy-specific context in translation
91
- - - Possible translation errors in technical terms
92
- - - Need to maintain English for future updates
93
-
94
- ### Mitigation
95
- - Review all technical translations against CKAN API documentation
96
- - Keep Italian portal names and organization titles in Italian
97
- - Use official CKAN terminology for technical terms
98
-
99
- ## Open Questions
100
-
101
- None - clarified with project owner.
102
-
103
- ## Dependencies
104
-
105
- None - this is a documentation-only change with no code modifications.
106
-
107
- ## Success Criteria
108
-
109
- - [ ] README.md fully translated to English
110
- - [ ] EXAMPLES.md fully translated to English
111
- - [ ] All technical terms accurate and consistent with CKAN API docs
112
- - [ ] Code examples unchanged
113
- - [ ] Markdown formatting preserved
114
- - [ ] No broken links or references
115
- - [ ] Validation: `openspec validate translate-project-to-english --strict` passes
@@ -1,32 +0,0 @@
1
- # Spec: Documentation Language
2
-
3
- Defines the language requirements for project documentation.
4
-
5
- ## ADDED Requirements
6
-
7
- ### Requirement: Project documentation in English
8
-
9
- The project SHALL provide all user-facing documentation in English to ensure accessibility for the international open data community.
10
-
11
- #### Scenario: English documentation
12
- Given a CKAN MCP Server project
13
- When a user reads the documentation
14
- Then the documentation is in English
15
- And code examples are in English
16
- And technical terms follow CKAN API terminology
17
-
18
- ### Requirement: Preserve multilingual examples
19
-
20
- The project SHALL preserve non-English portal names, organization titles, or data values in their original language to accurately reflect real-world CKAN portals.
21
-
22
- #### Scenario: Italian portal example
23
- Given an example using dati.gov.it
24
- When the example references Italian organizations
25
- Then organization names remain in Italian (e.g., "Regione Siciliana")
26
- And descriptions are in English
27
-
28
- #### Scenario: Non-English data values
29
- Given an example query with data filters
30
- When the data contains non-English values
31
- Then those values are preserved in their original language
32
- And the surrounding documentation explains the context in English
@@ -1,115 +0,0 @@
1
- # Tasks: Translate Project to English
2
-
3
- Ordered list of work items to translate the project documentation to English.
4
-
5
- ## Phase 1: Preparation
6
-
7
- - [x] Create backup copies of README.md and EXAMPLES.md
8
- - [x] Review CKAN API documentation for standard English terminology
9
- - [x] Identify technical terms requiring precise translation (e.g., "DataStore", "facet", "Solr")
10
- - [x] Note any Italy-specific context to preserve (e.g., portal names, organization titles)
11
-
12
- ## Phase 2: Translate README.md
13
-
14
- - [x] Translate header and project description (lines 1-4)
15
- - [x] Translate features section (lines 5-13)
16
- - [x] Translate installation instructions (lines 15-26)
17
- - [x] Translate usage section (lines 28-42)
18
- - [x] Translate Claude Desktop configuration (lines 44-61)
19
- - [x] Translate available tools section (lines 63-83)
20
- - [x] Translate usage examples (lines 85-140)
21
- - [x] Translate supported CKAN portals section (lines 142-152)
22
- - [x] Translate advanced Solr queries section (lines 154-181)
23
- - [x] Translate project structure section (lines 183-194)
24
- - [x] Translate development section (lines 196-221)
25
- - [x] Translate troubleshooting section (lines 223-252)
26
- - [x] Translate contributing section (lines 254-262)
27
- - [x] Translate license and useful links sections (lines 264-274)
28
- - [x] Translate support section and footer (lines 276-285)
29
- - [x] Verify all links remain functional
30
- - [x] Check markdown formatting consistency
31
-
32
- ## Phase 3: Translate EXAMPLES.md
33
-
34
- - [x] Translate header and introduction (lines 1-4)
35
- - [x] Translate connection tests section (lines 5-21)
36
- - [x] Translate Italy examples header (line 23)
37
- - [x] Translate recent datasets example (lines 25-33)
38
- - [x] Translate COVID-19 datasets example (lines 35-42)
39
- - [x] Translate Regione Siciliana datasets example (lines 44-52)
40
- - [x] Translate organization search examples (lines 54-73)
41
- - [x] Translate wildcard organization search example (lines 75-85)
42
- - [x] Translate organization statistics examples (lines 87-95)
43
- - [x] Translate format statistics example (lines 97-105)
44
- - [x] Translate organization list example (lines 107-115)
45
- - [x] Translate organization details example (lines 117-124)
46
- - [x] Translate CSV datasets example (lines 126-133)
47
- - [x] Translate USA examples header (line 135)
48
- - [x] Translate government datasets example (lines 137-144)
49
- - [x] Translate tag-based datasets example (lines 146-153)
50
- - [x] Translate demo CKAN examples (lines 155-178)
51
- - [x] Translate DataStore queries header (line 180)
52
- - [x] Translate basic DataStore query example (lines 182-189)
53
- - [x] Translate filtered DataStore query example (lines 191-201)
54
- - [x] Translate sorted DataStore query example (lines 203-211)
55
- - [x] Translate advanced Solr queries header (line 213)
56
- - [x] Translate AND combination example (lines 215-222)
57
- - [x] Translate OR combination example (lines 224-231)
58
- - [x] Translate NOT exclusion example (lines 233-240)
59
- - [x] Translate title search example (lines 242-249)
60
- - [x] Translate description search example (lines 251-258)
61
- - [x] Translate wildcard search example (lines 260-267)
62
- - [x] Translate date range filter example (lines 269-276)
63
- - [x] Translate recent datasets example (lines 278-286)
64
- - [x] Translate complete workflows header (line 288)
65
- - [x] Translate workflow 1: regional dataset analysis (lines 290-314)
66
- - [x] Translate workflow 2: monitoring new publications (lines 316-334)
67
- - [x] Translate workflow 3: data coverage analysis (lines 336-370)
68
- - [x] Translate workflow 4: thematic search (lines 372-401)
69
- - [x] Translate output formats section (lines 403-418)
70
- - [x] Translate notes section (lines 420-427)
71
- - [x] Verify all code examples unchanged
72
- - [x] Check markdown formatting consistency
73
-
74
- ## Phase 4: Review and Validation
75
-
76
- - [x] Proofread README.md for English grammar and flow
77
- - [x] Proofread EXAMPLES.md for English grammar and flow
78
- - [x] Verify technical terminology matches CKAN API docs
79
- - [x] Check all tool names are consistent with code
80
- - [x] Ensure all URLs remain correct
81
- - [x] Validate markdown syntax using a linter or manual check
82
- - [x] Test all code examples for syntax errors
83
- - [x] Confirm no Italian text remains in translated sections
84
- - [x] Verify formatting, spacing, and indentation preserved
85
- - [x] Check section headings follow markdown conventions
86
-
87
- ## Phase 5: Documentation Updates
88
-
89
- - [x] Update README.md to reflect English-only documentation
90
- - [x] Update any references to Italian docs in project files
91
- - [x] Update project.md if it references language conventions
92
- - [x] Verify package.json metadata remains accurate
93
- - [x] Add note about translation history if appropriate
94
-
95
- ## Phase 6: Final Verification
96
-
97
- - [x] Run `openspec validate translate-project-to-english --strict`
98
- - [x] Resolve all validation errors
99
- - [x] Final review of translated files
100
- - [x] Prepare commit message (concise, following project conventions)
101
-
102
- ## Dependencies
103
-
104
- - All tasks in Phase 2 and Phase 3 can be done in parallel after Phase 1
105
- - Phase 4 depends on completion of Phase 2 and Phase 3
106
- - Phase 5 depends on completion of Phase 4
107
- - Phase 6 is final verification, depends on all previous phases
108
-
109
- ## Notes
110
-
111
- - Preserve all Italian proper nouns (Regione Siciliana, Autorità Idrica Toscana, etc.)
112
- - Keep all code examples and function names in English
113
- - Maintain existing markdown structure and formatting
114
- - Use standard English technical documentation style
115
- - Refer to CKAN API docs (https://docs.ckan.org/en/latest/api/) for terminology
@@ -1,17 +0,0 @@
1
- # Change: Add ckan_find_relevant_datasets tool
2
-
3
- ## Why
4
- Ranked discovery helps surface the best datasets for a query without manual sorting.
5
-
6
- ## What Changes
7
- - Add MCP tool `ckan_find_relevant_datasets` wrapping `package_search`.
8
- - Score results using weighted fields (title, notes, tags, organization).
9
- - Return top N datasets with score breakdown.
10
-
11
- ## Impact
12
- - Affected specs: `ckan-insights`
13
- - Affected code: `src/tools/package.ts` (or new insights module)
14
-
15
- ## Open Questions
16
- - Default weights for title/notes/tags/organization?
17
- - Default `limit` when omitted?
@@ -1,7 +0,0 @@
1
- ## ADDED Requirements
2
- ### Requirement: Find relevant datasets
3
- The system SHALL provide a `ckan_find_relevant_datasets` tool that accepts `server_url`, `query`, `limit`, and optional weights for title, notes, tags, and organization, and returns the top N datasets ranked by score with a per-field score breakdown.
4
-
5
- #### Scenario: Ranked results returned
6
- - **WHEN** the tool is invoked with a query and limit
7
- - **THEN** the system uses `package_search` results to return the top N datasets with numeric scores and field contributions
@@ -1,6 +0,0 @@
1
- ## 1. Implementation
2
- - [ ] 1.1 Add tool schema and registration
3
- - [ ] 1.2 Implement weighted scoring + ranking
4
- - [ ] 1.3 Define markdown/json output shape
5
- - [ ] 1.4 Add fixtures + tests
6
- - [ ] 1.5 Update README/EXAMPLES