obsidian-mcp-server 2.0.7 → 3.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 (254) hide show
  1. package/CLAUDE.md +364 -0
  2. package/Dockerfile +99 -0
  3. package/LICENSE +4 -6
  4. package/README.md +246 -206
  5. package/changelog/3.0.x/3.0.0.md +102 -0
  6. package/changelog/3.1.x/3.1.0.md +26 -0
  7. package/changelog/template.md +51 -0
  8. package/dist/config/server-config.d.ts +19 -0
  9. package/dist/config/server-config.d.ts.map +1 -0
  10. package/dist/config/server-config.js +55 -0
  11. package/dist/config/server-config.js.map +1 -0
  12. package/dist/index.d.ts +7 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +23 -295
  15. package/dist/index.js.map +1 -0
  16. package/dist/mcp-server/prompts/definitions/index.d.ts +8 -0
  17. package/dist/mcp-server/prompts/definitions/index.d.ts.map +1 -0
  18. package/dist/mcp-server/prompts/definitions/index.js +8 -0
  19. package/dist/mcp-server/prompts/definitions/index.js.map +1 -0
  20. package/dist/mcp-server/resources/definitions/index.d.ts +36 -0
  21. package/dist/mcp-server/resources/definitions/index.d.ts.map +1 -0
  22. package/dist/mcp-server/resources/definitions/index.js +9 -0
  23. package/dist/mcp-server/resources/definitions/index.js.map +1 -0
  24. package/dist/mcp-server/resources/definitions/obsidian-status.resource.d.ts +23 -0
  25. package/dist/mcp-server/resources/definitions/obsidian-status.resource.d.ts.map +1 -0
  26. package/dist/mcp-server/resources/definitions/obsidian-status.resource.js +47 -0
  27. package/dist/mcp-server/resources/definitions/obsidian-status.resource.js.map +1 -0
  28. package/dist/mcp-server/resources/definitions/obsidian-tags.resource.d.ts +13 -0
  29. package/dist/mcp-server/resources/definitions/obsidian-tags.resource.d.ts.map +1 -0
  30. package/dist/mcp-server/resources/definitions/obsidian-tags.resource.js +30 -0
  31. package/dist/mcp-server/resources/definitions/obsidian-tags.resource.js.map +1 -0
  32. package/dist/mcp-server/resources/definitions/obsidian-vault-note.resource.d.ts +21 -0
  33. package/dist/mcp-server/resources/definitions/obsidian-vault-note.resource.d.ts.map +1 -0
  34. package/dist/mcp-server/resources/definitions/obsidian-vault-note.resource.js +38 -0
  35. package/dist/mcp-server/resources/definitions/obsidian-vault-note.resource.js.map +1 -0
  36. package/dist/mcp-server/tools/definitions/_shared/schemas.d.ts +45 -0
  37. package/dist/mcp-server/tools/definitions/_shared/schemas.d.ts.map +1 -0
  38. package/dist/mcp-server/tools/definitions/_shared/schemas.js +66 -0
  39. package/dist/mcp-server/tools/definitions/_shared/schemas.js.map +1 -0
  40. package/dist/mcp-server/tools/definitions/_shared/suggest-paths.d.ts +51 -0
  41. package/dist/mcp-server/tools/definitions/_shared/suggest-paths.d.ts.map +1 -0
  42. package/dist/mcp-server/tools/definitions/_shared/suggest-paths.js +120 -0
  43. package/dist/mcp-server/tools/definitions/_shared/suggest-paths.js.map +1 -0
  44. package/dist/mcp-server/tools/definitions/index.d.ts +582 -0
  45. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -0
  46. package/dist/mcp-server/tools/definitions/index.js +40 -0
  47. package/dist/mcp-server/tools/definitions/index.js.map +1 -0
  48. package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.d.ts +42 -0
  49. package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.d.ts.map +1 -0
  50. package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.js +58 -0
  51. package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.js.map +1 -0
  52. package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.d.ts +46 -0
  53. package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.d.ts.map +1 -0
  54. package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.js +66 -0
  55. package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.js.map +1 -0
  56. package/dist/mcp-server/tools/definitions/obsidian-execute-command.tool.d.ts +19 -0
  57. package/dist/mcp-server/tools/definitions/obsidian-execute-command.tool.d.ts.map +1 -0
  58. package/dist/mcp-server/tools/definitions/obsidian-execute-command.tool.js +43 -0
  59. package/dist/mcp-server/tools/definitions/obsidian-execute-command.tool.js.map +1 -0
  60. package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.d.ts +92 -0
  61. package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.d.ts.map +1 -0
  62. package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.js +245 -0
  63. package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.js.map +1 -0
  64. package/dist/mcp-server/tools/definitions/obsidian-list-commands.tool.d.ts +13 -0
  65. package/dist/mcp-server/tools/definitions/obsidian-list-commands.tool.d.ts.map +1 -0
  66. package/dist/mcp-server/tools/definitions/obsidian-list-commands.tool.js +38 -0
  67. package/dist/mcp-server/tools/definitions/obsidian-list-commands.tool.js.map +1 -0
  68. package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.d.ts +59 -0
  69. package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.d.ts.map +1 -0
  70. package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.js +273 -0
  71. package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.js.map +1 -0
  72. package/dist/mcp-server/tools/definitions/obsidian-list-tags.tool.d.ts +13 -0
  73. package/dist/mcp-server/tools/definitions/obsidian-list-tags.tool.d.ts.map +1 -0
  74. package/dist/mcp-server/tools/definitions/obsidian-list-tags.tool.js +38 -0
  75. package/dist/mcp-server/tools/definitions/obsidian-list-tags.tool.js.map +1 -0
  76. package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.d.ts +68 -0
  77. package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.d.ts.map +1 -0
  78. package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.js +178 -0
  79. package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.js.map +1 -0
  80. package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.d.ts +77 -0
  81. package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.d.ts.map +1 -0
  82. package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.js +172 -0
  83. package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.js.map +1 -0
  84. package/dist/mcp-server/tools/definitions/obsidian-open-in-ui.tool.d.ts +22 -0
  85. package/dist/mcp-server/tools/definitions/obsidian-open-in-ui.tool.d.ts.map +1 -0
  86. package/dist/mcp-server/tools/definitions/obsidian-open-in-ui.tool.js +88 -0
  87. package/dist/mcp-server/tools/definitions/obsidian-open-in-ui.tool.js.map +1 -0
  88. package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.d.ts +81 -0
  89. package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.d.ts.map +1 -0
  90. package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.js +83 -0
  91. package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.js.map +1 -0
  92. package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.d.ts +59 -0
  93. package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.d.ts.map +1 -0
  94. package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.js +167 -0
  95. package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.js.map +1 -0
  96. package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.d.ts +76 -0
  97. package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.d.ts.map +1 -0
  98. package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.js +244 -0
  99. package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.js.map +1 -0
  100. package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.d.ts +48 -0
  101. package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.d.ts.map +1 -0
  102. package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.js +100 -0
  103. package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.js.map +1 -0
  104. package/dist/services/obsidian/frontmatter-ops.d.ts +34 -0
  105. package/dist/services/obsidian/frontmatter-ops.d.ts.map +1 -0
  106. package/dist/services/obsidian/frontmatter-ops.js +230 -0
  107. package/dist/services/obsidian/frontmatter-ops.js.map +1 -0
  108. package/dist/services/obsidian/obsidian-service.d.ts +83 -0
  109. package/dist/services/obsidian/obsidian-service.d.ts.map +1 -0
  110. package/dist/services/obsidian/obsidian-service.js +435 -0
  111. package/dist/services/obsidian/obsidian-service.js.map +1 -0
  112. package/dist/services/obsidian/section-extractor.d.ts +13 -0
  113. package/dist/services/obsidian/section-extractor.d.ts.map +1 -0
  114. package/dist/services/obsidian/section-extractor.js +124 -0
  115. package/dist/services/obsidian/section-extractor.js.map +1 -0
  116. package/dist/services/obsidian/types.d.ts +91 -0
  117. package/dist/services/obsidian/types.d.ts.map +1 -0
  118. package/dist/services/obsidian/types.js +7 -0
  119. package/dist/services/obsidian/types.js.map +1 -0
  120. package/package.json +63 -69
  121. package/server.json +167 -0
  122. package/CHANGELOG.md +0 -124
  123. package/dist/config/index.d.ts +0 -41
  124. package/dist/config/index.js +0 -191
  125. package/dist/mcp-server/server.d.ts +0 -33
  126. package/dist/mcp-server/server.js +0 -211
  127. package/dist/mcp-server/tools/obsidianDeleteNoteTool/index.d.ts +0 -12
  128. package/dist/mcp-server/tools/obsidianDeleteNoteTool/index.js +0 -12
  129. package/dist/mcp-server/tools/obsidianDeleteNoteTool/logic.d.ts +0 -51
  130. package/dist/mcp-server/tools/obsidianDeleteNoteTool/logic.js +0 -168
  131. package/dist/mcp-server/tools/obsidianDeleteNoteTool/registration.d.ts +0 -19
  132. package/dist/mcp-server/tools/obsidianDeleteNoteTool/registration.js +0 -91
  133. package/dist/mcp-server/tools/obsidianGlobalSearchTool/index.d.ts +0 -12
  134. package/dist/mcp-server/tools/obsidianGlobalSearchTool/index.js +0 -12
  135. package/dist/mcp-server/tools/obsidianGlobalSearchTool/logic.d.ts +0 -77
  136. package/dist/mcp-server/tools/obsidianGlobalSearchTool/logic.js +0 -341
  137. package/dist/mcp-server/tools/obsidianGlobalSearchTool/registration.d.ts +0 -18
  138. package/dist/mcp-server/tools/obsidianGlobalSearchTool/registration.js +0 -69
  139. package/dist/mcp-server/tools/obsidianListNotesTool/index.d.ts +0 -12
  140. package/dist/mcp-server/tools/obsidianListNotesTool/index.js +0 -12
  141. package/dist/mcp-server/tools/obsidianListNotesTool/logic.d.ts +0 -68
  142. package/dist/mcp-server/tools/obsidianListNotesTool/logic.js +0 -215
  143. package/dist/mcp-server/tools/obsidianListNotesTool/registration.d.ts +0 -23
  144. package/dist/mcp-server/tools/obsidianListNotesTool/registration.js +0 -98
  145. package/dist/mcp-server/tools/obsidianManageFrontmatterTool/index.d.ts +0 -3
  146. package/dist/mcp-server/tools/obsidianManageFrontmatterTool/index.js +0 -2
  147. package/dist/mcp-server/tools/obsidianManageFrontmatterTool/logic.d.ts +0 -42
  148. package/dist/mcp-server/tools/obsidianManageFrontmatterTool/logic.js +0 -152
  149. package/dist/mcp-server/tools/obsidianManageFrontmatterTool/registration.d.ts +0 -3
  150. package/dist/mcp-server/tools/obsidianManageFrontmatterTool/registration.js +0 -52
  151. package/dist/mcp-server/tools/obsidianManageTagsTool/index.d.ts +0 -3
  152. package/dist/mcp-server/tools/obsidianManageTagsTool/index.js +0 -2
  153. package/dist/mcp-server/tools/obsidianManageTagsTool/logic.d.ts +0 -28
  154. package/dist/mcp-server/tools/obsidianManageTagsTool/logic.js +0 -161
  155. package/dist/mcp-server/tools/obsidianManageTagsTool/registration.d.ts +0 -3
  156. package/dist/mcp-server/tools/obsidianManageTagsTool/registration.js +0 -52
  157. package/dist/mcp-server/tools/obsidianReadNoteTool/index.d.ts +0 -12
  158. package/dist/mcp-server/tools/obsidianReadNoteTool/index.js +0 -12
  159. package/dist/mcp-server/tools/obsidianReadNoteTool/logic.d.ts +0 -87
  160. package/dist/mcp-server/tools/obsidianReadNoteTool/logic.js +0 -216
  161. package/dist/mcp-server/tools/obsidianReadNoteTool/registration.d.ts +0 -20
  162. package/dist/mcp-server/tools/obsidianReadNoteTool/registration.js +0 -101
  163. package/dist/mcp-server/tools/obsidianSearchReplaceTool/index.d.ts +0 -12
  164. package/dist/mcp-server/tools/obsidianSearchReplaceTool/index.js +0 -12
  165. package/dist/mcp-server/tools/obsidianSearchReplaceTool/logic.d.ts +0 -255
  166. package/dist/mcp-server/tools/obsidianSearchReplaceTool/logic.js +0 -583
  167. package/dist/mcp-server/tools/obsidianSearchReplaceTool/registration.d.ts +0 -22
  168. package/dist/mcp-server/tools/obsidianSearchReplaceTool/registration.js +0 -111
  169. package/dist/mcp-server/tools/obsidianUpdateNoteTool/index.d.ts +0 -12
  170. package/dist/mcp-server/tools/obsidianUpdateNoteTool/index.js +0 -12
  171. package/dist/mcp-server/tools/obsidianUpdateNoteTool/logic.d.ts +0 -183
  172. package/dist/mcp-server/tools/obsidianUpdateNoteTool/logic.js +0 -490
  173. package/dist/mcp-server/tools/obsidianUpdateNoteTool/registration.d.ts +0 -21
  174. package/dist/mcp-server/tools/obsidianUpdateNoteTool/registration.js +0 -108
  175. package/dist/mcp-server/transports/auth/core/authContext.d.ts +0 -33
  176. package/dist/mcp-server/transports/auth/core/authContext.js +0 -24
  177. package/dist/mcp-server/transports/auth/core/authTypes.d.ts +0 -17
  178. package/dist/mcp-server/transports/auth/core/authTypes.js +0 -5
  179. package/dist/mcp-server/transports/auth/core/authUtils.d.ts +0 -18
  180. package/dist/mcp-server/transports/auth/core/authUtils.js +0 -45
  181. package/dist/mcp-server/transports/auth/index.d.ts +0 -10
  182. package/dist/mcp-server/transports/auth/index.js +0 -9
  183. package/dist/mcp-server/transports/auth/strategies/jwt/jwtMiddleware.d.ts +0 -27
  184. package/dist/mcp-server/transports/auth/strategies/jwt/jwtMiddleware.js +0 -149
  185. package/dist/mcp-server/transports/auth/strategies/oauth/oauthMiddleware.d.ts +0 -20
  186. package/dist/mcp-server/transports/auth/strategies/oauth/oauthMiddleware.js +0 -124
  187. package/dist/mcp-server/transports/httpErrorHandler.d.ts +0 -26
  188. package/dist/mcp-server/transports/httpErrorHandler.js +0 -73
  189. package/dist/mcp-server/transports/httpTransport.d.ts +0 -21
  190. package/dist/mcp-server/transports/httpTransport.js +0 -208
  191. package/dist/mcp-server/transports/stdioTransport.d.ts +0 -42
  192. package/dist/mcp-server/transports/stdioTransport.js +0 -63
  193. package/dist/services/obsidianRestAPI/index.d.ts +0 -15
  194. package/dist/services/obsidianRestAPI/index.js +0 -17
  195. package/dist/services/obsidianRestAPI/methods/activeFileMethods.d.ts +0 -38
  196. package/dist/services/obsidianRestAPI/methods/activeFileMethods.js +0 -62
  197. package/dist/services/obsidianRestAPI/methods/commandMethods.d.ts +0 -22
  198. package/dist/services/obsidianRestAPI/methods/commandMethods.js +0 -31
  199. package/dist/services/obsidianRestAPI/methods/openMethods.d.ts +0 -16
  200. package/dist/services/obsidianRestAPI/methods/openMethods.js +0 -21
  201. package/dist/services/obsidianRestAPI/methods/patchMethods.d.ts +0 -37
  202. package/dist/services/obsidianRestAPI/methods/patchMethods.js +0 -94
  203. package/dist/services/obsidianRestAPI/methods/periodicNoteMethods.d.ts +0 -42
  204. package/dist/services/obsidianRestAPI/methods/periodicNoteMethods.js +0 -66
  205. package/dist/services/obsidianRestAPI/methods/searchMethods.d.ts +0 -25
  206. package/dist/services/obsidianRestAPI/methods/searchMethods.js +0 -36
  207. package/dist/services/obsidianRestAPI/methods/vaultMethods.d.ts +0 -58
  208. package/dist/services/obsidianRestAPI/methods/vaultMethods.js +0 -144
  209. package/dist/services/obsidianRestAPI/service.d.ts +0 -195
  210. package/dist/services/obsidianRestAPI/service.js +0 -379
  211. package/dist/services/obsidianRestAPI/types.d.ts +0 -127
  212. package/dist/services/obsidianRestAPI/types.js +0 -7
  213. package/dist/services/obsidianRestAPI/vaultCache/index.d.ts +0 -4
  214. package/dist/services/obsidianRestAPI/vaultCache/index.js +0 -4
  215. package/dist/services/obsidianRestAPI/vaultCache/service.d.ts +0 -88
  216. package/dist/services/obsidianRestAPI/vaultCache/service.js +0 -299
  217. package/dist/types-global/errors.d.ts +0 -73
  218. package/dist/types-global/errors.js +0 -71
  219. package/dist/utils/index.d.ts +0 -5
  220. package/dist/utils/index.js +0 -13
  221. package/dist/utils/internal/asyncUtils.d.ts +0 -54
  222. package/dist/utils/internal/asyncUtils.js +0 -101
  223. package/dist/utils/internal/errorHandler.d.ts +0 -176
  224. package/dist/utils/internal/errorHandler.js +0 -351
  225. package/dist/utils/internal/index.d.ts +0 -4
  226. package/dist/utils/internal/index.js +0 -4
  227. package/dist/utils/internal/logger.d.ts +0 -141
  228. package/dist/utils/internal/logger.js +0 -406
  229. package/dist/utils/internal/requestContext.d.ts +0 -83
  230. package/dist/utils/internal/requestContext.js +0 -72
  231. package/dist/utils/metrics/index.d.ts +0 -1
  232. package/dist/utils/metrics/index.js +0 -1
  233. package/dist/utils/metrics/tokenCounter.d.ts +0 -27
  234. package/dist/utils/metrics/tokenCounter.js +0 -128
  235. package/dist/utils/obsidian/index.d.ts +0 -5
  236. package/dist/utils/obsidian/index.js +0 -5
  237. package/dist/utils/obsidian/obsidianApiUtils.d.ts +0 -14
  238. package/dist/utils/obsidian/obsidianApiUtils.js +0 -29
  239. package/dist/utils/obsidian/obsidianStatUtils.d.ts +0 -68
  240. package/dist/utils/obsidian/obsidianStatUtils.js +0 -143
  241. package/dist/utils/parsing/dateParser.d.ts +0 -56
  242. package/dist/utils/parsing/dateParser.js +0 -104
  243. package/dist/utils/parsing/index.d.ts +0 -2
  244. package/dist/utils/parsing/index.js +0 -3
  245. package/dist/utils/parsing/jsonParser.d.ts +0 -80
  246. package/dist/utils/parsing/jsonParser.js +0 -133
  247. package/dist/utils/security/idGenerator.d.ts +0 -140
  248. package/dist/utils/security/idGenerator.js +0 -194
  249. package/dist/utils/security/index.d.ts +0 -3
  250. package/dist/utils/security/index.js +0 -3
  251. package/dist/utils/security/rateLimiter.d.ts +0 -156
  252. package/dist/utils/security/rateLimiter.js +0 -235
  253. package/dist/utils/security/sanitization.d.ts +0 -244
  254. package/dist/utils/security/sanitization.js +0 -599
@@ -0,0 +1,91 @@
1
+ /**
2
+ * @fileoverview Shared types for the Obsidian Local REST API service layer.
3
+ * Mirrors the upstream plugin's response shapes (NoteJson, document map, etc.).
4
+ * @module services/obsidian/types
5
+ */
6
+ export type PeriodicPeriod = 'daily' | 'weekly' | 'monthly' | 'quarterly' | 'yearly';
7
+ export type NoteTarget = {
8
+ type: 'path';
9
+ path: string;
10
+ } | {
11
+ type: 'active';
12
+ } | {
13
+ type: 'periodic';
14
+ period: PeriodicPeriod;
15
+ date?: string | undefined;
16
+ };
17
+ export type SectionType = 'heading' | 'block' | 'frontmatter';
18
+ export interface SectionTarget {
19
+ /** Heading name ("::" delimits nesting), block reference, or frontmatter field name. */
20
+ target: string;
21
+ type: SectionType;
22
+ }
23
+ export interface NoteStat {
24
+ ctime: number;
25
+ mtime: number;
26
+ size: number;
27
+ }
28
+ export interface NoteJson {
29
+ content: string;
30
+ frontmatter: Record<string, unknown>;
31
+ path: string;
32
+ stat: NoteStat;
33
+ tags: string[];
34
+ }
35
+ export interface DocumentMap {
36
+ blocks: string[];
37
+ frontmatterFields: string[];
38
+ headings: string[];
39
+ }
40
+ export interface FileListing {
41
+ files: string[];
42
+ }
43
+ export interface VaultStatus {
44
+ authenticated: boolean;
45
+ manifest?: {
46
+ id: string;
47
+ name: string;
48
+ version: string;
49
+ };
50
+ service: string;
51
+ status: string;
52
+ versions?: {
53
+ obsidian?: string;
54
+ self?: string;
55
+ };
56
+ }
57
+ export interface ObsidianTag {
58
+ count: number;
59
+ name: string;
60
+ }
61
+ export interface ObsidianCommand {
62
+ id: string;
63
+ name: string;
64
+ }
65
+ export type SearchMode = 'text' | 'dataview' | 'jsonlogic';
66
+ export interface TextSearchHit {
67
+ filename: string;
68
+ matches: Array<{
69
+ context: string;
70
+ match: {
71
+ start: number;
72
+ end: number;
73
+ };
74
+ }>;
75
+ score?: number;
76
+ }
77
+ export interface StructuredSearchHit {
78
+ filename: string;
79
+ result: unknown;
80
+ }
81
+ export interface PatchHeaders {
82
+ applyIfContentPreexists?: boolean | undefined;
83
+ contentType?: 'markdown' | 'json' | undefined;
84
+ createTargetIfMissing?: boolean | undefined;
85
+ operation: 'append' | 'prepend' | 'replace';
86
+ target: string;
87
+ targetDelimiter?: string | undefined;
88
+ targetType: SectionType;
89
+ trimTargetWhitespace?: boolean | undefined;
90
+ }
91
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/obsidian/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @fileoverview Shared types for the Obsidian Local REST API service layer.
3
+ * Mirrors the upstream plugin's response shapes (NoteJson, document map, etc.).
4
+ * @module services/obsidian/types
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/obsidian/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
package/package.json CHANGED
@@ -1,91 +1,85 @@
1
1
  {
2
2
  "name": "obsidian-mcp-server",
3
- "version": "2.0.7",
4
- "description": "Obsidian Knowledge-Management MCP (Model Context Protocol) server that enables AI agents and development tools to interact with an Obsidian vault. It provides a comprehensive suite of tools for reading, writing, searching, and managing notes, tags, and frontmatter, acting as a bridge to the Obsidian Local REST API plugin.",
3
+ "version": "3.1.0",
4
+ "mcpName": "io.github.cyanheads/obsidian-mcp-server",
5
+ "description": "MCP server for Obsidian vaults — read, write, search, and surgically edit notes, tags, and frontmatter via the Local REST API plugin. STDIO or Streamable HTTP.",
6
+ "type": "module",
5
7
  "main": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "bin": {
10
+ "obsidian-mcp-server": "dist/index.js"
11
+ },
6
12
  "files": [
7
- "dist",
13
+ "changelog/",
14
+ "dist/",
8
15
  "README.md",
9
16
  "LICENSE",
10
- "CHANGELOG.md"
17
+ "CLAUDE.md",
18
+ "Dockerfile",
19
+ "server.json"
11
20
  ],
12
- "bin": {
13
- "obsidian-mcp-server": "dist/index.js"
14
- },
15
- "type": "module",
16
- "repository": {
17
- "type": "git",
18
- "url": "git+https://github.com/cyanheads/obsidian-mcp-server.git"
19
- },
20
- "bugs": {
21
- "url": "https://github.com/cyanheads/obsidian-mcp-server/issues"
22
- },
23
- "homepage": "https://github.com/cyanheads/obsidian-mcp-server#readme",
24
21
  "scripts": {
25
- "build": "tsc && node --loader ts-node/esm scripts/make-executable.ts dist/index.js",
22
+ "build": "bun run scripts/build.ts",
23
+ "rebuild": "bun run scripts/clean.ts && bun run build",
24
+ "clean": "bun run scripts/clean.ts",
25
+ "devcheck": "bun run scripts/devcheck.ts",
26
+ "tree": "bun run scripts/tree.ts",
27
+ "format": "biome check --write --unsafe .",
28
+ "lint:mcp": "bun run scripts/lint-mcp.ts",
29
+ "changelog:build": "bun run scripts/build-changelog.ts",
30
+ "changelog:check": "bun run scripts/build-changelog.ts --check",
31
+ "test": "bunx vitest run",
32
+ "dev:stdio": "MCP_TRANSPORT_TYPE=stdio bun --watch src/index.ts",
33
+ "dev:http": "MCP_TRANSPORT_TYPE=http bun --watch src/index.ts",
26
34
  "start": "node dist/index.js",
27
- "start:stdio": "MCP_LOG_LEVEL=debug MCP_TRANSPORT_TYPE=stdio node dist/index.js",
28
- "start:http": "MCP_LOG_LEVEL=debug MCP_TRANSPORT_TYPE=http node dist/index.js",
29
- "rebuild": "npx ts-node --esm scripts/clean.ts && npm run build",
30
- "fetch:spec": "npx ts-node --esm scripts/fetch-openapi-spec.ts",
31
- "docs:generate": "typedoc --tsconfig ./tsconfig.typedoc.json",
32
- "tree": "npx ts-node --esm scripts/tree.ts",
33
- "format": "prettier --write \"**/*.{ts,js,json,md,html,css}\"",
34
- "inspect": "mcp-inspector --config mcp.json",
35
- "inspect:stdio": "mcp-inspector --config mcp.json --server obsidian-mcp-server-stdio",
36
- "inspect:http": "mcp-inspector --config mcp.json --server obsidian-mcp-server-http"
37
- },
38
- "dependencies": {
39
- "@hono/node-server": "^1.14.4",
40
- "@modelcontextprotocol/inspector": "^0.14.3",
41
- "@modelcontextprotocol/sdk": "^1.13.0",
42
- "@types/sanitize-html": "^2.16.0",
43
- "@types/validator": "13.15.2",
44
- "axios": "^1.10.0",
45
- "chrono-node": "2.8.0",
46
- "date-fns": "^4.1.0",
47
- "dotenv": "^16.5.0",
48
- "hono": "^4.8.2",
49
- "ignore": "^7.0.5",
50
- "jose": "^6.0.11",
51
- "js-yaml": "^4.1.0",
52
- "openai": "^5.6.0",
53
- "partial-json": "^0.1.7",
54
- "sanitize-html": "^2.17.0",
55
- "tiktoken": "^1.0.21",
56
- "ts-node": "^10.9.2",
57
- "typescript": "^5.8.3",
58
- "validator": "13.15.15",
59
- "winston": "^3.17.0",
60
- "winston-transport": "^4.9.0",
61
- "zod": "^3.25.67"
35
+ "start:stdio": "MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js",
36
+ "start:http": "MCP_TRANSPORT_TYPE=http bun ./dist/index.js"
62
37
  },
63
38
  "keywords": [
64
39
  "mcp",
40
+ "mcp-server",
65
41
  "model-context-protocol",
66
42
  "obsidian",
67
- "obsidian-md",
68
- "ai",
69
- "llm",
70
- "agent",
71
- "automation",
72
- "api",
73
- "server",
74
- "typescript",
75
- "knowledge-management",
43
+ "obsidian-vault",
44
+ "knowledge-base",
76
45
  "note-taking",
77
- "rest-api",
78
- "integration"
46
+ "llm",
47
+ "llm-agent",
48
+ "ai-tools",
49
+ "typescript"
79
50
  ],
80
- "author": "Casey Hand @cyanheads",
51
+ "author": "cyanheads <casey@caseyjhand.com> (https://github.com/cyanheads/obsidian-mcp-server#readme)",
52
+ "repository": {
53
+ "type": "git",
54
+ "url": "git+https://github.com/cyanheads/obsidian-mcp-server.git"
55
+ },
56
+ "homepage": "https://github.com/cyanheads/obsidian-mcp-server#readme",
57
+ "bugs": {
58
+ "url": "https://github.com/cyanheads/obsidian-mcp-server/issues"
59
+ },
81
60
  "license": "Apache-2.0",
82
61
  "engines": {
83
- "node": ">=16.0.0"
62
+ "bun": ">=1.3.11",
63
+ "node": ">=22.0.0"
84
64
  },
85
- "devDependencies": {
65
+ "packageManager": "bun@1.3.11",
66
+ "publishConfig": {
67
+ "access": "public"
68
+ },
69
+ "dependencies": {
70
+ "@cyanheads/mcp-ts-core": "^0.8.2",
86
71
  "@types/js-yaml": "^4.0.9",
87
- "@types/node": "^24.0.3",
88
- "prettier": "^3.5.3",
89
- "typedoc": "^0.28.5"
72
+ "js-yaml": "^4.1.1",
73
+ "pino-pretty": "^13.1.3",
74
+ "undici": "^8.1.0"
75
+ },
76
+ "devDependencies": {
77
+ "@biomejs/biome": "^2.4.13",
78
+ "@types/node": "^25.6.0",
79
+ "depcheck": "^1.4.7",
80
+ "ignore": "^7.0.5",
81
+ "tsc-alias": "^1.8.16",
82
+ "typescript": "^6.0.3",
83
+ "vitest": "^4.1.5"
90
84
  }
91
85
  }
package/server.json ADDED
@@ -0,0 +1,167 @@
1
+ {
2
+ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
+ "name": "io.github.cyanheads/obsidian-mcp-server",
4
+ "description": "MCP server for Obsidian vaults — read, write, search, and edit notes via the Local REST API plugin.",
5
+ "repository": {
6
+ "url": "https://github.com/cyanheads/obsidian-mcp-server",
7
+ "source": "github"
8
+ },
9
+ "version": "3.1.0",
10
+ "packages": [
11
+ {
12
+ "registryType": "npm",
13
+ "registryBaseUrl": "https://registry.npmjs.org",
14
+ "identifier": "obsidian-mcp-server",
15
+ "runtimeHint": "node",
16
+ "version": "3.1.0",
17
+ "packageArguments": [
18
+ {
19
+ "type": "positional",
20
+ "value": "run"
21
+ },
22
+ {
23
+ "type": "positional",
24
+ "value": "start:stdio"
25
+ }
26
+ ],
27
+ "environmentVariables": [
28
+ {
29
+ "name": "OBSIDIAN_API_KEY",
30
+ "description": "Bearer token for the Obsidian Local REST API plugin (Settings → Community Plugins → Local REST API).",
31
+ "format": "string",
32
+ "isRequired": true
33
+ },
34
+ {
35
+ "name": "OBSIDIAN_BASE_URL",
36
+ "description": "Base URL of the Obsidian Local REST API. Default: http://127.0.0.1:27123 (enable \"Non-encrypted (HTTP) Server\" in plugin settings). Use https://127.0.0.1:27124 for the always-on HTTPS port (self-signed cert; pair with OBSIDIAN_VERIFY_SSL=false).",
37
+ "format": "string",
38
+ "isRequired": false,
39
+ "default": "http://127.0.0.1:27123"
40
+ },
41
+ {
42
+ "name": "OBSIDIAN_VERIFY_SSL",
43
+ "description": "Whether to verify the TLS certificate on the Obsidian endpoint. Default false because the plugin uses a self-signed cert.",
44
+ "format": "string",
45
+ "isRequired": false,
46
+ "default": "false"
47
+ },
48
+ {
49
+ "name": "OBSIDIAN_REQUEST_TIMEOUT_MS",
50
+ "description": "Per-request timeout in milliseconds.",
51
+ "format": "string",
52
+ "isRequired": false,
53
+ "default": "30000"
54
+ },
55
+ {
56
+ "name": "OBSIDIAN_ENABLE_COMMANDS",
57
+ "description": "Opt-in flag for the command-palette pair (obsidian_list_commands + obsidian_execute_command). Off by default — Obsidian commands are opaque and can be destructive.",
58
+ "format": "string",
59
+ "isRequired": false,
60
+ "default": "false"
61
+ },
62
+ {
63
+ "name": "MCP_LOG_LEVEL",
64
+ "description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').",
65
+ "format": "string",
66
+ "isRequired": false,
67
+ "default": "info"
68
+ }
69
+ ],
70
+ "transport": {
71
+ "type": "stdio"
72
+ }
73
+ },
74
+ {
75
+ "registryType": "npm",
76
+ "registryBaseUrl": "https://registry.npmjs.org",
77
+ "identifier": "obsidian-mcp-server",
78
+ "runtimeHint": "node",
79
+ "version": "3.1.0",
80
+ "packageArguments": [
81
+ {
82
+ "type": "positional",
83
+ "value": "run"
84
+ },
85
+ {
86
+ "type": "positional",
87
+ "value": "start:http"
88
+ }
89
+ ],
90
+ "environmentVariables": [
91
+ {
92
+ "name": "OBSIDIAN_API_KEY",
93
+ "description": "Bearer token for the Obsidian Local REST API plugin (Settings → Community Plugins → Local REST API).",
94
+ "format": "string",
95
+ "isRequired": true
96
+ },
97
+ {
98
+ "name": "OBSIDIAN_BASE_URL",
99
+ "description": "Base URL of the Obsidian Local REST API. Default: http://127.0.0.1:27123 (enable \"Non-encrypted (HTTP) Server\" in plugin settings). Use https://127.0.0.1:27124 for the always-on HTTPS port (self-signed cert; pair with OBSIDIAN_VERIFY_SSL=false).",
100
+ "format": "string",
101
+ "isRequired": false,
102
+ "default": "http://127.0.0.1:27123"
103
+ },
104
+ {
105
+ "name": "OBSIDIAN_VERIFY_SSL",
106
+ "description": "Whether to verify the TLS certificate on the Obsidian endpoint. Default false because the plugin uses a self-signed cert.",
107
+ "format": "string",
108
+ "isRequired": false,
109
+ "default": "false"
110
+ },
111
+ {
112
+ "name": "OBSIDIAN_REQUEST_TIMEOUT_MS",
113
+ "description": "Per-request timeout in milliseconds.",
114
+ "format": "string",
115
+ "isRequired": false,
116
+ "default": "30000"
117
+ },
118
+ {
119
+ "name": "OBSIDIAN_ENABLE_COMMANDS",
120
+ "description": "Opt-in flag for the command-palette pair (obsidian_list_commands + obsidian_execute_command). Off by default — Obsidian commands are opaque and can be destructive.",
121
+ "format": "string",
122
+ "isRequired": false,
123
+ "default": "false"
124
+ },
125
+ {
126
+ "name": "MCP_HTTP_HOST",
127
+ "description": "The hostname for the HTTP server.",
128
+ "format": "string",
129
+ "isRequired": false,
130
+ "default": "127.0.0.1"
131
+ },
132
+ {
133
+ "name": "MCP_HTTP_PORT",
134
+ "description": "The port to run the HTTP server on.",
135
+ "format": "string",
136
+ "isRequired": false,
137
+ "default": "3010"
138
+ },
139
+ {
140
+ "name": "MCP_HTTP_ENDPOINT_PATH",
141
+ "description": "The endpoint path for the MCP server.",
142
+ "format": "string",
143
+ "isRequired": false,
144
+ "default": "/mcp"
145
+ },
146
+ {
147
+ "name": "MCP_AUTH_MODE",
148
+ "description": "Authentication mode to use: 'none', 'jwt', or 'oauth'.",
149
+ "format": "string",
150
+ "isRequired": false,
151
+ "default": "none"
152
+ },
153
+ {
154
+ "name": "MCP_LOG_LEVEL",
155
+ "description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').",
156
+ "format": "string",
157
+ "isRequired": false,
158
+ "default": "info"
159
+ }
160
+ ],
161
+ "transport": {
162
+ "type": "streamable-http",
163
+ "url": "http://localhost:3010/mcp"
164
+ }
165
+ }
166
+ ]
167
+ }
package/CHANGELOG.md DELETED
@@ -1,124 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to this project will be documented in this file.
4
-
5
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
-
8
- ## [2.0.7] - 2025-06-20
9
-
10
- ### Changed
11
-
12
- - **Package Update**: Fixed README & incremented version to 2.0.7 to ensure the latest changes are reflected in the npm package.
13
-
14
- ## [2.0.6] - 2025-06-20
15
-
16
- ### Changed
17
-
18
- - **Tool Renaming**: Renamed `obsidian_read_file`, `obsidian_delete_file`, and `obsidian_list_files` to `obsidian_read_note`, `obsidian_delete_note`, and `obsidian_list_notes` respectively. This change improves semantic clarity and aligns the tool names more closely with Obsidian's terminology, reducing ambiguity for AI agents.
19
- - **Dependency Updates**: Updated all dependencies to their latest versions.
20
- - **Documentation Improvements**: Updated `.clinerules` to reflect the new tool names and ensure all documentation is current.
21
-
22
- ## [2.0.5] - 2025-06-20
23
-
24
- ### Changed
25
-
26
- - **Tool Renaming**: Renamed the `obsidian_update_file` tool to `obsidian_update_note` to avoid conflicts and better reflect its function. During agentic use, LLMs confused this tool with filesystem operations, leading to errors. The new name clarifies that it operates on Obsidian notes specifically.
27
- - **HTTP Transport Refactor**: Restructured the HTTP transport layer for improved clarity and robustness. Authentication logic is now more modular, and a centralized error handler has been implemented.
28
- - **Dependency Updates**: Updated all dependencies to their latest versions.
29
- - **Documentation Improvements**: Enhanced the documentation around installation & MCP Client configuration. Suggested by [@bgheneti](https://github.com/bgheneti) in [PR #14](https://github.com/cyanheads/obsidian-mcp-server/pull/14). Thanks!
30
-
31
- ## [2.0.4] - 2025-06-13
32
-
33
- ### Added
34
-
35
- - **Recursive File Listing**: The `obsidian_list_files` tool now supports recursive listing of directories with a `recursionDepth` parameter.
36
-
37
- ### Changed
38
-
39
- - **Documentation**:
40
- - Consolidated tool specifications into `obsidian_mcp_tools_spec.md`.
41
- - Updated `.clinerules` with a detailed logger implementation example for the agent.
42
- - Updated the repository's directory tree documentation.
43
-
44
- ## [2.0.3] - 2025-06-12
45
-
46
- ### Fixed
47
-
48
- - **NPM Package Display**: Explicitly included `README.md`, `LICENSE`, and `CHANGELOG.md` in the `files` array in `package.json` to ensure they are displayed correctly on the npm package page.
49
-
50
- ## [2.0.2] - 2025-06-12
51
-
52
- ### Fixed
53
-
54
- - **NPM Package Version**: Bad npm package. Bumping to v2.0.2 for publishing.
55
-
56
- ## [2.0.1] - 2025-06-12
57
-
58
- ### Added
59
-
60
- - **Enhanced Documentation**:
61
- - Added a warning to the `VaultCacheService` documentation about its potential for high memory usage on large vaults.
62
- - Added a code comment in `obsidianManageFrontmatterTool` to clarify the regex-based key deletion strategy.
63
-
64
- ### Changed
65
-
66
- - **Improved SSL Handling**: The `OBSIDIAN_VERIFY_SSL` environment variable is now correctly parsed as a boolean, ensuring more reliable SSL verification behavior.
67
- - **API Service Refactoring**: Simplified the `httpsAgent` handling within the `ObsidianRestApiService` to improve code clarity and remove redundant agent creation on each request.
68
-
69
- ### Fixed
70
-
71
- - **Path Import Correction**: Corrected a path import in the `obsidianGlobalSearchTool` to use `node:path/posix` for better cross-platform compatibility.
72
-
73
- ## [2.0.0] - 2025-06-12
74
-
75
- Version 2.0.0 is a complete overhaul of the Obsidian MCP Server, migrating it to my [`cyanheads/mcp-ts-template`](https://github.com/cyanheads/mcp-ts-template). This release introduces a more robust architecture, a streamlined toolset, enhanced security, and significant performance improvements. It is a breaking change from the 1.x series.
76
-
77
- ### Added
78
-
79
- - **New Core Architecture**: The server is now built on the [`cyanheads/mcp-ts-template`](https://github.com/cyanheads/mcp-ts-template), providing a standardized, modular, and maintainable structure.
80
- - **Hono HTTP Transport**: The HTTP transport has been migrated from Express to Hono, offering a more lightweight and performant server.
81
- - **Vault Cache Service**: A new in-memory `VaultCacheService` has been introduced. It caches vault content to improve performance for search operations and provides a resilient fallback if the Obsidian API is temporarily unavailable. It also refreshes periodically.
82
- - **Advanced Authentication**:
83
- - Added support for **OAuth 2.1** bearer token validation alongside the existing secret key-based JWTs.
84
- - Introduced `authContext` using `AsyncLocalStorage` for secure, request-scoped access to authentication details.
85
- - **New Tools**:
86
- - `obsidian_delete_file`: A new tool to permanently delete files from the vault.
87
- - `obsidian_search_replace`: A powerful new tool to perform search and replace operations with regex support.
88
- - **Enhanced Utilities**:
89
- - **Request Context**: A robust request context system (`requestContextService`) for improved logging and tracing.
90
- - **Error Handling**: A centralized `ErrorHandler` for consistent and detailed error reporting.
91
- - **Async Utilities**: A `retryWithDelay` utility is now used across the application to make API calls more resilient.
92
- - **New Development Scripts**: Added `docs:generate` (for TypeDoc) and `inspect:stdio`/`inspect:http` (for MCP Inspector) to `package.json`.
93
-
94
- ### Changed
95
-
96
- - **Project Structure**: The entire project has been reorganized to align with the [`cyanheads/mcp-ts-template`](https://github.com/cyanheads/mcp-ts-template), improving separation of concerns (e.g., `services`, `mcp-server`, `types-global`).
97
- - **Tool Consolidation and Enhancement**: The toolset has been redesigned for clarity and power:
98
- - `obsidian_list_files` replaces `obsidian_list_files_in_vault` and `obsidian_list_files_in_dir`, offering more flexible filtering.
99
- - `obsidian_read_file` replaces `obsidian_get_file_contents` and now supports returning content as structured JSON.
100
- - `obsidian_update_file` replaces `obsidian_append_content` and `obsidian_update_content` with explicit modes (`append`, `prepend`, `overwrite`).
101
- - `obsidian_global_search` replaces `obsidian_find_in_file` with added support for path/date filtering and pagination.
102
- - `obsidian_manage_frontmatter` replaces `obsidian_get_properties` and `obsidian_update_properties` with atomic get/set/delete operations.
103
- - `obsidian_manage_tags` replaces `obsidian_get_tags` and now manages both frontmatter and inline tags.
104
- - **Configuration Overhaul**: Environment variables have been renamed for consistency and clarity.
105
- - `OBSIDIAN_BASE_URL` now consolidates protocol, host, and port.
106
- - New variables like `MCP_TRANSPORT_TYPE`, `MCP_LOG_LEVEL`, and `MCP_AUTH_SECRET_KEY` have been introduced.
107
- - **Dependency Updates**: All dependencies, including the MCP SDK, have been updated to their latest stable versions.
108
- - **Obsidian API Service**: The `ObsidianRestApiService` has been completely refactored into a modular class, providing a typed, resilient, and centralized client for all interactions with the Obsidian Local REST API.
109
-
110
- ### Removed
111
-
112
- - **Removed Tools**: The following tools from version 1.x have been removed and their functionality integrated into the new, more comprehensive tools:
113
- - `obsidian_list_files_in_vault`
114
- - `obsidian_list_files_in_dir`
115
- - `obsidian_get_file_contents`
116
- - `obsidian_append_content`
117
- - `obsidian_update_content`
118
- - `obsidian_find_in_file`
119
- - `obsidian_complex_search` (path-based searching is now a filter in `obsidian_global_search`)
120
- - `obsidian_get_tags`
121
- - `obsidian_get_properties`
122
- - `obsidian_update_properties`
123
- - **Removed Resources**: The `obsidian://tags` resource has been removed. Tag information is now available through the `obsidian_manage_tags` tool. I may add the resource back in the future if there is demand for it. Please open an issue if you would like to see it return.
124
- - **Old Configuration**: All old, non-prefixed environment variables (e.g., `VERIFY_SSL`, `REQUEST_TIMEOUT`) have been removed in favor of the new, standardized configuration schema.
@@ -1,41 +0,0 @@
1
- /**
2
- * Main application configuration object.
3
- */
4
- export declare const config: {
5
- pkg: {
6
- name: string;
7
- version: string;
8
- };
9
- mcpServerName: string;
10
- mcpServerVersion: string;
11
- logLevel: string;
12
- logsPath: string;
13
- environment: string;
14
- mcpTransportType: "stdio" | "http";
15
- mcpHttpPort: number;
16
- mcpHttpHost: string;
17
- mcpAllowedOrigins: string[] | undefined;
18
- mcpAuthMode: "jwt" | "oauth" | undefined;
19
- mcpAuthSecretKey: string | undefined;
20
- oauthIssuerUrl: string | undefined;
21
- oauthAudience: string | undefined;
22
- oauthJwksUri: string | undefined;
23
- obsidianApiKey: string;
24
- obsidianBaseUrl: string;
25
- obsidianVerifySsl: boolean;
26
- obsidianCacheRefreshIntervalMin: number;
27
- obsidianEnableCache: boolean;
28
- obsidianApiSearchTimeoutMs: number;
29
- };
30
- /**
31
- * The configured logging level for the application.
32
- * Exported separately for convenience (e.g., logger initialization).
33
- * @type {string}
34
- */
35
- export declare const logLevel: string;
36
- /**
37
- * The configured runtime environment for the application.
38
- * Exported separately for convenience.
39
- * @type {string}
40
- */
41
- export declare const environment: string;