obsidian-mcp-server 3.7.2 → 3.8.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 (99) hide show
  1. package/AGENTS.md +10 -7
  2. package/CLAUDE.md +10 -7
  3. package/README.md +22 -14
  4. package/changelog/3.8.x/3.8.0.md +38 -0
  5. package/dist/config/server-config.d.ts +1 -0
  6. package/dist/config/server-config.d.ts.map +1 -1
  7. package/dist/config/server-config.js +24 -15
  8. package/dist/config/server-config.js.map +1 -1
  9. package/dist/index.js +6 -1
  10. package/dist/index.js.map +1 -1
  11. package/dist/instructions.d.ts.map +1 -1
  12. package/dist/instructions.js +21 -7
  13. package/dist/instructions.js.map +1 -1
  14. package/dist/mcp-server/resources/definitions/index.d.ts +2 -2
  15. package/dist/mcp-server/resources/definitions/obsidian-tags.resource.d.ts +3 -2
  16. package/dist/mcp-server/resources/definitions/obsidian-tags.resource.d.ts.map +1 -1
  17. package/dist/mcp-server/resources/definitions/obsidian-tags.resource.js +6 -5
  18. package/dist/mcp-server/resources/definitions/obsidian-tags.resource.js.map +1 -1
  19. package/dist/mcp-server/resources/definitions/obsidian-vault-note.resource.d.ts +2 -2
  20. package/dist/mcp-server/resources/definitions/obsidian-vault-note.resource.js +2 -2
  21. package/dist/mcp-server/resources/definitions/obsidian-vault-note.resource.js.map +1 -1
  22. package/dist/mcp-server/tools/definitions/_shared/suggest-paths.d.ts +8 -1
  23. package/dist/mcp-server/tools/definitions/_shared/suggest-paths.d.ts.map +1 -1
  24. package/dist/mcp-server/tools/definitions/_shared/suggest-paths.js +14 -5
  25. package/dist/mcp-server/tools/definitions/_shared/suggest-paths.js.map +1 -1
  26. package/dist/mcp-server/tools/definitions/index.d.ts +18 -18
  27. package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.d.ts +2 -2
  28. package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.js +2 -2
  29. package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.js.map +1 -1
  30. package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.d.ts +7 -6
  31. package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.d.ts.map +1 -1
  32. package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.js +7 -7
  33. package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.js.map +1 -1
  34. package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.d.ts +2 -2
  35. package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.d.ts.map +1 -1
  36. package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.js +8 -5
  37. package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.js.map +1 -1
  38. package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.d.ts +6 -6
  39. package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.d.ts.map +1 -1
  40. package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.js +8 -8
  41. package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.js.map +1 -1
  42. package/dist/mcp-server/tools/definitions/obsidian-list-tags.tool.d.ts +4 -4
  43. package/dist/mcp-server/tools/definitions/obsidian-list-tags.tool.js +6 -6
  44. package/dist/mcp-server/tools/definitions/obsidian-list-tags.tool.js.map +1 -1
  45. package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.d.ts +2 -2
  46. package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.d.ts.map +1 -1
  47. package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.js +2 -2
  48. package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.js.map +1 -1
  49. package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.d.ts +2 -2
  50. package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.d.ts.map +1 -1
  51. package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.js +2 -2
  52. package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.js.map +1 -1
  53. package/dist/mcp-server/tools/definitions/obsidian-open-in-ui.tool.d.ts +2 -2
  54. package/dist/mcp-server/tools/definitions/obsidian-open-in-ui.tool.js +2 -2
  55. package/dist/mcp-server/tools/definitions/obsidian-open-in-ui.tool.js.map +1 -1
  56. package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.d.ts +2 -2
  57. package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.js +2 -2
  58. package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.js.map +1 -1
  59. package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.d.ts +2 -2
  60. package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.js +2 -2
  61. package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.js.map +1 -1
  62. package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.d.ts +46 -12
  63. package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.d.ts.map +1 -1
  64. package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.js +77 -22
  65. package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.js.map +1 -1
  66. package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.d.ts +2 -2
  67. package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.js +2 -2
  68. package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.js.map +1 -1
  69. package/dist/services/obsidian/jsonlogic-evaluator.d.ts +33 -8
  70. package/dist/services/obsidian/jsonlogic-evaluator.d.ts.map +1 -1
  71. package/dist/services/obsidian/jsonlogic-evaluator.js +171 -32
  72. package/dist/services/obsidian/jsonlogic-evaluator.js.map +1 -1
  73. package/dist/services/obsidian/jsonlogic-worker.d.ts +6 -5
  74. package/dist/services/obsidian/jsonlogic-worker.d.ts.map +1 -1
  75. package/dist/services/obsidian/jsonlogic-worker.js +7 -5
  76. package/dist/services/obsidian/jsonlogic-worker.js.map +1 -1
  77. package/dist/services/obsidian/obsidian-service.d.ts +38 -22
  78. package/dist/services/obsidian/obsidian-service.d.ts.map +1 -1
  79. package/dist/services/obsidian/obsidian-service.js +293 -99
  80. package/dist/services/obsidian/obsidian-service.js.map +1 -1
  81. package/dist/services/obsidian/patch-instruction.d.ts +4 -1
  82. package/dist/services/obsidian/patch-instruction.d.ts.map +1 -1
  83. package/dist/services/obsidian/patch-instruction.js +5 -2
  84. package/dist/services/obsidian/patch-instruction.js.map +1 -1
  85. package/dist/services/obsidian/path-policy.d.ts +67 -23
  86. package/dist/services/obsidian/path-policy.d.ts.map +1 -1
  87. package/dist/services/obsidian/path-policy.js +183 -80
  88. package/dist/services/obsidian/path-policy.js.map +1 -1
  89. package/dist/services/obsidian/section-extractor.d.ts +6 -1
  90. package/dist/services/obsidian/section-extractor.d.ts.map +1 -1
  91. package/dist/services/obsidian/section-extractor.js +106 -11
  92. package/dist/services/obsidian/section-extractor.js.map +1 -1
  93. package/dist/services/obsidian/simple-search.d.ts +62 -0
  94. package/dist/services/obsidian/simple-search.d.ts.map +1 -0
  95. package/dist/services/obsidian/simple-search.js +264 -0
  96. package/dist/services/obsidian/simple-search.js.map +1 -0
  97. package/manifest.json +10 -2
  98. package/package.json +3 -3
  99. package/server.json +19 -7
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "obsidian-mcp-server",
3
- "version": "3.7.2",
3
+ "version": "3.8.0",
4
4
  "mcpName": "io.github.cyanheads/obsidian-mcp-server",
5
5
  "description": "Read, write, search, and surgically edit Obsidian vault notes, tags, and frontmatter via MCP. STDIO or Streamable HTTP.",
6
6
  "type": "module",
@@ -102,9 +102,9 @@
102
102
  "zod": "^4.6.7"
103
103
  },
104
104
  "devDependencies": {
105
- "@biomejs/biome": "^2.6.3",
105
+ "@biomejs/biome": "^2.6.4",
106
106
  "@socketsecurity/bun-security-scanner": "^1.1.3",
107
- "@types/node": "^26.6.5",
107
+ "@types/node": "^26.6.6",
108
108
  "@vitest/coverage-istanbul": "^5.0.5",
109
109
  "depcheck": "^1.4.7",
110
110
  "ignore": "^7.0.14",
package/server.json CHANGED
@@ -6,14 +6,14 @@
6
6
  "url": "https://github.com/cyanheads/obsidian-mcp-server",
7
7
  "source": "github"
8
8
  },
9
- "version": "3.7.2",
9
+ "version": "3.8.0",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "registryBaseUrl": "https://registry.npmjs.org",
14
14
  "identifier": "obsidian-mcp-server",
15
15
  "runtimeHint": "npx",
16
- "version": "3.7.2",
16
+ "version": "3.8.0",
17
17
  "environmentVariables": [
18
18
  {
19
19
  "name": "OBSIDIAN_API_KEY",
@@ -51,13 +51,19 @@
51
51
  },
52
52
  {
53
53
  "name": "OBSIDIAN_READ_PATHS",
54
- "description": "Optional comma-separated vault-relative folder allowlist for reads. Prefix-based with implicit recursion; case-insensitive; trailing slashes normalized. Unset = full vault. Write paths are implicitly readable. Example: 'public/,projects/'.",
54
+ "description": "Optional comma-separated vault-relative folder allowlist for reads. Prefix-based with implicit recursion; case-insensitive; backslashes read as slashes, repeated and trailing slashes and '.' segments dropped, and names normalized to Unicode NFC; an entry naming the vault root ('.') is rejected at startup. Unset = full vault. Write paths are implicitly readable. Example: 'public/,projects/'.",
55
55
  "format": "string",
56
56
  "isRequired": false
57
57
  },
58
58
  {
59
59
  "name": "OBSIDIAN_WRITE_PATHS",
60
- "description": "Optional comma-separated vault-relative folder allowlist for writes. Same syntax as OBSIDIAN_READ_PATHS. Unset = full vault, or the read scope when reads are restricted. Example: 'projects/,scratch/'.",
60
+ "description": "Optional comma-separated vault-relative folder allowlist for writes. Same syntax as OBSIDIAN_READ_PATHS. Unset = full vault, or the read scope when reads are restricted; paths in OBSIDIAN_DENY_PATHS stay denied. Example: 'projects/,scratch/'.",
61
+ "format": "string",
62
+ "isRequired": false
63
+ },
64
+ {
65
+ "name": "OBSIDIAN_DENY_PATHS",
66
+ "description": "Optional comma-separated vault-relative paths withheld from reads and writes. Same syntax as OBSIDIAN_READ_PATHS. Wins over both allowlists; denied paths are left out of listings, search results, and tag counts. Unset = nothing denied. Example: 'private/,journal/therapy/'.",
61
67
  "format": "string",
62
68
  "isRequired": false
63
69
  },
@@ -98,7 +104,7 @@
98
104
  "registryBaseUrl": "https://registry.npmjs.org",
99
105
  "identifier": "obsidian-mcp-server",
100
106
  "runtimeHint": "npx",
101
- "version": "3.7.2",
107
+ "version": "3.8.0",
102
108
  "environmentVariables": [
103
109
  {
104
110
  "name": "MCP_TRANSPORT_TYPE",
@@ -142,13 +148,19 @@
142
148
  },
143
149
  {
144
150
  "name": "OBSIDIAN_READ_PATHS",
145
- "description": "Optional comma-separated vault-relative folder allowlist for reads. Prefix-based with implicit recursion; case-insensitive; trailing slashes normalized. Unset = full vault. Write paths are implicitly readable. Example: 'public/,projects/'.",
151
+ "description": "Optional comma-separated vault-relative folder allowlist for reads. Prefix-based with implicit recursion; case-insensitive; backslashes read as slashes, repeated and trailing slashes and '.' segments dropped, and names normalized to Unicode NFC; an entry naming the vault root ('.') is rejected at startup. Unset = full vault. Write paths are implicitly readable. Example: 'public/,projects/'.",
146
152
  "format": "string",
147
153
  "isRequired": false
148
154
  },
149
155
  {
150
156
  "name": "OBSIDIAN_WRITE_PATHS",
151
- "description": "Optional comma-separated vault-relative folder allowlist for writes. Same syntax as OBSIDIAN_READ_PATHS. Unset = full vault, or the read scope when reads are restricted. Example: 'projects/,scratch/'.",
157
+ "description": "Optional comma-separated vault-relative folder allowlist for writes. Same syntax as OBSIDIAN_READ_PATHS. Unset = full vault, or the read scope when reads are restricted; paths in OBSIDIAN_DENY_PATHS stay denied. Example: 'projects/,scratch/'.",
158
+ "format": "string",
159
+ "isRequired": false
160
+ },
161
+ {
162
+ "name": "OBSIDIAN_DENY_PATHS",
163
+ "description": "Optional comma-separated vault-relative paths withheld from reads and writes. Same syntax as OBSIDIAN_READ_PATHS. Wins over both allowlists; denied paths are left out of listings, search results, and tag counts. Unset = nothing denied. Example: 'private/,journal/therapy/'.",
152
164
  "format": "string",
153
165
  "isRequired": false
154
166
  },