@ansvar/ch-organic-regen-mcp 0.1.0

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 (108) hide show
  1. package/.github/workflows/check-freshness.yml +49 -0
  2. package/.github/workflows/ci.yml +21 -0
  3. package/.github/workflows/codeql.yml +25 -0
  4. package/.github/workflows/ghcr-build.yml +45 -0
  5. package/.github/workflows/gitleaks.yml +18 -0
  6. package/.github/workflows/ingest.yml +59 -0
  7. package/.github/workflows/publish.yml +24 -0
  8. package/CHANGELOG.md +15 -0
  9. package/CODEOWNERS +1 -0
  10. package/COVERAGE.md +47 -0
  11. package/DISCLAIMER.md +67 -0
  12. package/Dockerfile +26 -0
  13. package/LICENSE +17 -0
  14. package/PRIVACY.md +23 -0
  15. package/README.md +117 -0
  16. package/SECURITY.md +25 -0
  17. package/TOOLS.md +141 -0
  18. package/data/coverage.json +22 -0
  19. package/data/database.db +0 -0
  20. package/data/sources.yml +36 -0
  21. package/dist/db.d.ts +25 -0
  22. package/dist/db.d.ts.map +1 -0
  23. package/dist/db.js +184 -0
  24. package/dist/db.js.map +1 -0
  25. package/dist/http-server.d.ts +2 -0
  26. package/dist/http-server.d.ts.map +1 -0
  27. package/dist/http-server.js +263 -0
  28. package/dist/http-server.js.map +1 -0
  29. package/dist/jurisdiction.d.ts +18 -0
  30. package/dist/jurisdiction.d.ts.map +1 -0
  31. package/dist/jurisdiction.js +16 -0
  32. package/dist/jurisdiction.js.map +1 -0
  33. package/dist/metadata.d.ts +11 -0
  34. package/dist/metadata.d.ts.map +1 -0
  35. package/dist/metadata.js +31 -0
  36. package/dist/metadata.js.map +1 -0
  37. package/dist/server.d.ts +3 -0
  38. package/dist/server.d.ts.map +1 -0
  39. package/dist/server.js +209 -0
  40. package/dist/server.js.map +1 -0
  41. package/dist/tools/about.d.ts +15 -0
  42. package/dist/tools/about.d.ts.map +1 -0
  43. package/dist/tools/about.js +27 -0
  44. package/dist/tools/about.js.map +1 -0
  45. package/dist/tools/check-freshness.d.ts +15 -0
  46. package/dist/tools/check-freshness.d.ts.map +1 -0
  47. package/dist/tools/check-freshness.js +26 -0
  48. package/dist/tools/check-freshness.js.map +1 -0
  49. package/dist/tools/get-approved-inputs.d.ts +26 -0
  50. package/dist/tools/get-approved-inputs.d.ts.map +1 -0
  51. package/dist/tools/get-approved-inputs.js +28 -0
  52. package/dist/tools/get-approved-inputs.js.map +1 -0
  53. package/dist/tools/get-conversion-requirements.d.ts +28 -0
  54. package/dist/tools/get-conversion-requirements.d.ts.map +1 -0
  55. package/dist/tools/get-conversion-requirements.js +32 -0
  56. package/dist/tools/get-conversion-requirements.js.map +1 -0
  57. package/dist/tools/get-organic-standards.d.ts +27 -0
  58. package/dist/tools/get-organic-standards.d.ts.map +1 -0
  59. package/dist/tools/get-organic-standards.js +31 -0
  60. package/dist/tools/get-organic-standards.js.map +1 -0
  61. package/dist/tools/get-organic-subsidies.d.ts +28 -0
  62. package/dist/tools/get-organic-subsidies.d.ts.map +1 -0
  63. package/dist/tools/get-organic-subsidies.js +32 -0
  64. package/dist/tools/get-organic-subsidies.js.map +1 -0
  65. package/dist/tools/get-soil-health-guidance.d.ts +25 -0
  66. package/dist/tools/get-soil-health-guidance.d.ts.map +1 -0
  67. package/dist/tools/get-soil-health-guidance.js +27 -0
  68. package/dist/tools/get-soil-health-guidance.js.map +1 -0
  69. package/dist/tools/list-sources.d.ts +18 -0
  70. package/dist/tools/list-sources.d.ts.map +1 -0
  71. package/dist/tools/list-sources.js +61 -0
  72. package/dist/tools/list-sources.js.map +1 -0
  73. package/dist/tools/search-certification-guidance.d.ts +24 -0
  74. package/dist/tools/search-certification-guidance.d.ts.map +1 -0
  75. package/dist/tools/search-certification-guidance.js +24 -0
  76. package/dist/tools/search-certification-guidance.js.map +1 -0
  77. package/dist/tools/search-organic-rules.d.ts +25 -0
  78. package/dist/tools/search-organic-rules.d.ts.map +1 -0
  79. package/dist/tools/search-organic-rules.js +26 -0
  80. package/dist/tools/search-organic-rules.js.map +1 -0
  81. package/docker-compose.yml +12 -0
  82. package/eslint.config.js +26 -0
  83. package/package.json +54 -0
  84. package/scripts/ingest.ts +963 -0
  85. package/server.json +16 -0
  86. package/src/db.ts +225 -0
  87. package/src/http-server.ts +302 -0
  88. package/src/jurisdiction.ts +30 -0
  89. package/src/metadata.ts +45 -0
  90. package/src/server.ts +239 -0
  91. package/src/tools/about.ts +28 -0
  92. package/src/tools/check-freshness.ts +42 -0
  93. package/src/tools/get-approved-inputs.ts +44 -0
  94. package/src/tools/get-conversion-requirements.ts +50 -0
  95. package/src/tools/get-organic-standards.ts +48 -0
  96. package/src/tools/get-organic-subsidies.ts +50 -0
  97. package/src/tools/get-soil-health-guidance.ts +42 -0
  98. package/src/tools/list-sources.ts +75 -0
  99. package/src/tools/search-certification-guidance.ts +41 -0
  100. package/src/tools/search-organic-rules.ts +35 -0
  101. package/tests/db.test.ts +96 -0
  102. package/tests/helpers/seed-db.ts +145 -0
  103. package/tests/jurisdiction.test.ts +35 -0
  104. package/tests/tools/about.test.ts +22 -0
  105. package/tests/tools/check-freshness.test.ts +57 -0
  106. package/tests/tools/list-sources.test.ts +55 -0
  107. package/tests/tools/search-organic-rules.test.ts +56 -0
  108. package/tsconfig.json +19 -0
@@ -0,0 +1,12 @@
1
+ services:
2
+ ch-organic-regen-mcp:
3
+ build: .
4
+ ports:
5
+ - "3000:3000"
6
+ environment:
7
+ - NODE_ENV=production
8
+ - PORT=3000
9
+ read_only: false
10
+ mem_limit: 128m
11
+ cpus: 0.5
12
+ restart: unless-stopped
@@ -0,0 +1,26 @@
1
+ import tseslint from '@typescript-eslint/eslint-plugin';
2
+ import tsparser from '@typescript-eslint/parser';
3
+
4
+ export default [
5
+ {
6
+ files: ['src/**/*.ts', 'tests/**/*.ts'],
7
+ languageOptions: {
8
+ parser: tsparser,
9
+ parserOptions: {
10
+ ecmaVersion: 2022,
11
+ sourceType: 'module',
12
+ },
13
+ },
14
+ plugins: {
15
+ '@typescript-eslint': tseslint,
16
+ },
17
+ rules: {
18
+ ...tseslint.configs.recommended.rules,
19
+ '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
20
+ 'no-console': 'off',
21
+ },
22
+ },
23
+ {
24
+ ignores: ['dist/', 'node_modules/', 'scripts/'],
25
+ },
26
+ ];
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@ansvar/ch-organic-regen-mcp",
3
+ "mcpName": "io.github.ansvar-systems/ch-organic-regen",
4
+ "version": "0.1.0",
5
+ "description": "Swiss organic and regenerative farming via MCP -- Bio Suisse Knospe, FiBL Betriebsmittelliste, Demeter, conversion, soil health",
6
+ "type": "module",
7
+ "main": "dist/server.js",
8
+ "bin": {
9
+ "ch-organic-regen-mcp": "dist/server.js"
10
+ },
11
+ "scripts": {
12
+ "build": "tsc",
13
+ "dev": "tsx watch src/server.ts",
14
+ "start": "node dist/server.js",
15
+ "start:http": "node dist/http-server.js",
16
+ "test": "vitest run",
17
+ "test:watch": "vitest",
18
+ "lint": "eslint src/ tests/",
19
+ "typecheck": "tsc --noEmit",
20
+ "ingest": "tsx scripts/ingest.ts",
21
+ "ingest:fetch": "tsx scripts/ingest.ts --fetch-only",
22
+ "ingest:diff": "tsx scripts/ingest.ts --diff-only",
23
+ "ingest:full": "tsx scripts/ingest.ts --force",
24
+ "build:db": "tsx scripts/build-db.ts",
25
+ "freshness:check": "tsx scripts/check-freshness.ts",
26
+ "coverage:update": "tsx scripts/update-coverage.ts"
27
+ },
28
+ "keywords": ["mcp", "agriculture", "organic", "regenerative", "bio-suisse", "knospe", "demeter", "fibl", "farming", "switzerland"],
29
+ "author": "Ansvar Systems <info@ansvar.eu>",
30
+ "license": "Apache-2.0",
31
+ "repository": {
32
+ "type": "git",
33
+ "url": "https://github.com/Ansvar-Systems/ch-organic-regen-mcp"
34
+ },
35
+ "homepage": "https://ansvar.eu/open-agriculture",
36
+ "engines": {
37
+ "node": ">=20"
38
+ },
39
+ "dependencies": {
40
+ "@modelcontextprotocol/sdk": "^1.12.0",
41
+ "better-sqlite3": "^11.0.0",
42
+ "zod": "^3.23.0"
43
+ },
44
+ "devDependencies": {
45
+ "@types/better-sqlite3": "^7.6.0",
46
+ "@types/node": "^20.0.0",
47
+ "@typescript-eslint/eslint-plugin": "^8.0.0",
48
+ "@typescript-eslint/parser": "^8.0.0",
49
+ "eslint": "^9.0.0",
50
+ "tsx": "^4.0.0",
51
+ "typescript": "^5.5.0",
52
+ "vitest": "^2.0.0"
53
+ }
54
+ }