obsidian-mcp-server 1.5.8 → 2.0.2

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 (221) hide show
  1. package/README.md +248 -104
  2. package/dist/config/index.d.ts +41 -0
  3. package/dist/config/index.js +191 -0
  4. package/dist/index.d.ts +1 -5
  5. package/dist/index.js +296 -18
  6. package/dist/mcp-server/server.d.ts +33 -0
  7. package/dist/mcp-server/server.js +211 -0
  8. package/dist/mcp-server/tools/obsidianDeleteFileTool/index.d.ts +12 -0
  9. package/dist/mcp-server/tools/obsidianDeleteFileTool/index.js +12 -0
  10. package/dist/mcp-server/tools/obsidianDeleteFileTool/logic.d.ts +51 -0
  11. package/dist/mcp-server/tools/obsidianDeleteFileTool/logic.js +168 -0
  12. package/dist/mcp-server/tools/obsidianDeleteFileTool/registration.d.ts +19 -0
  13. package/dist/mcp-server/tools/obsidianDeleteFileTool/registration.js +91 -0
  14. package/dist/mcp-server/tools/obsidianGlobalSearchTool/index.d.ts +12 -0
  15. package/dist/mcp-server/tools/obsidianGlobalSearchTool/index.js +12 -0
  16. package/dist/mcp-server/tools/obsidianGlobalSearchTool/logic.d.ts +77 -0
  17. package/dist/mcp-server/tools/obsidianGlobalSearchTool/logic.js +341 -0
  18. package/dist/mcp-server/tools/obsidianGlobalSearchTool/registration.d.ts +18 -0
  19. package/dist/mcp-server/tools/obsidianGlobalSearchTool/registration.js +69 -0
  20. package/dist/mcp-server/tools/obsidianListFilesTool/index.d.ts +12 -0
  21. package/dist/mcp-server/tools/obsidianListFilesTool/index.js +12 -0
  22. package/dist/mcp-server/tools/obsidianListFilesTool/logic.d.ts +64 -0
  23. package/dist/mcp-server/tools/obsidianListFilesTool/logic.js +179 -0
  24. package/dist/mcp-server/tools/obsidianListFilesTool/registration.d.ts +19 -0
  25. package/dist/mcp-server/tools/obsidianListFilesTool/registration.js +96 -0
  26. package/dist/mcp-server/tools/obsidianManageFrontmatterTool/index.d.ts +3 -0
  27. package/dist/mcp-server/tools/obsidianManageFrontmatterTool/index.js +2 -0
  28. package/dist/mcp-server/tools/obsidianManageFrontmatterTool/logic.d.ts +42 -0
  29. package/dist/mcp-server/tools/obsidianManageFrontmatterTool/logic.js +152 -0
  30. package/dist/mcp-server/tools/obsidianManageFrontmatterTool/registration.d.ts +3 -0
  31. package/dist/mcp-server/tools/obsidianManageFrontmatterTool/registration.js +52 -0
  32. package/dist/mcp-server/tools/obsidianManageTagsTool/index.d.ts +3 -0
  33. package/dist/mcp-server/tools/obsidianManageTagsTool/index.js +2 -0
  34. package/dist/mcp-server/tools/obsidianManageTagsTool/logic.d.ts +28 -0
  35. package/dist/mcp-server/tools/obsidianManageTagsTool/logic.js +161 -0
  36. package/dist/mcp-server/tools/obsidianManageTagsTool/registration.d.ts +3 -0
  37. package/dist/mcp-server/tools/obsidianManageTagsTool/registration.js +52 -0
  38. package/dist/mcp-server/tools/obsidianReadFileTool/index.d.ts +12 -0
  39. package/dist/mcp-server/tools/obsidianReadFileTool/index.js +12 -0
  40. package/dist/mcp-server/tools/obsidianReadFileTool/logic.d.ts +87 -0
  41. package/dist/mcp-server/tools/obsidianReadFileTool/logic.js +216 -0
  42. package/dist/mcp-server/tools/obsidianReadFileTool/registration.d.ts +20 -0
  43. package/dist/mcp-server/tools/obsidianReadFileTool/registration.js +101 -0
  44. package/dist/mcp-server/tools/obsidianSearchReplaceTool/index.d.ts +12 -0
  45. package/dist/mcp-server/tools/obsidianSearchReplaceTool/index.js +12 -0
  46. package/dist/mcp-server/tools/obsidianSearchReplaceTool/logic.d.ts +255 -0
  47. package/dist/mcp-server/tools/obsidianSearchReplaceTool/logic.js +583 -0
  48. package/dist/mcp-server/tools/obsidianSearchReplaceTool/registration.d.ts +22 -0
  49. package/dist/mcp-server/tools/obsidianSearchReplaceTool/registration.js +111 -0
  50. package/dist/mcp-server/tools/obsidianUpdateFileTool/index.d.ts +12 -0
  51. package/dist/mcp-server/tools/obsidianUpdateFileTool/index.js +12 -0
  52. package/dist/mcp-server/tools/obsidianUpdateFileTool/logic.d.ts +183 -0
  53. package/dist/mcp-server/tools/obsidianUpdateFileTool/logic.js +490 -0
  54. package/dist/mcp-server/tools/obsidianUpdateFileTool/registration.d.ts +21 -0
  55. package/dist/mcp-server/tools/obsidianUpdateFileTool/registration.js +108 -0
  56. package/dist/mcp-server/transports/authentication/authContext.d.ts +33 -0
  57. package/dist/mcp-server/transports/authentication/authContext.js +24 -0
  58. package/dist/mcp-server/transports/authentication/authMiddleware.d.ts +30 -0
  59. package/dist/mcp-server/transports/authentication/authMiddleware.js +145 -0
  60. package/dist/mcp-server/transports/authentication/authUtils.d.ts +18 -0
  61. package/dist/mcp-server/transports/authentication/authUtils.js +45 -0
  62. package/dist/mcp-server/transports/authentication/oauthMiddleware.d.ts +24 -0
  63. package/dist/mcp-server/transports/authentication/oauthMiddleware.js +109 -0
  64. package/dist/mcp-server/transports/authentication/types.d.ts +17 -0
  65. package/dist/mcp-server/transports/authentication/types.js +5 -0
  66. package/dist/mcp-server/transports/httpTransport.d.ts +24 -0
  67. package/dist/mcp-server/transports/httpTransport.js +496 -0
  68. package/dist/mcp-server/transports/stdioTransport.d.ts +42 -0
  69. package/dist/mcp-server/transports/stdioTransport.js +63 -0
  70. package/dist/services/obsidianRestAPI/index.d.ts +15 -0
  71. package/dist/services/obsidianRestAPI/index.js +17 -0
  72. package/dist/services/obsidianRestAPI/methods/activeFileMethods.d.ts +38 -0
  73. package/dist/services/obsidianRestAPI/methods/activeFileMethods.js +62 -0
  74. package/dist/services/obsidianRestAPI/methods/commandMethods.d.ts +22 -0
  75. package/dist/services/obsidianRestAPI/methods/commandMethods.js +31 -0
  76. package/dist/services/obsidianRestAPI/methods/openMethods.d.ts +16 -0
  77. package/dist/services/obsidianRestAPI/methods/openMethods.js +21 -0
  78. package/dist/services/obsidianRestAPI/methods/patchMethods.d.ts +37 -0
  79. package/dist/services/obsidianRestAPI/methods/patchMethods.js +94 -0
  80. package/dist/services/obsidianRestAPI/methods/periodicNoteMethods.d.ts +42 -0
  81. package/dist/services/obsidianRestAPI/methods/periodicNoteMethods.js +66 -0
  82. package/dist/services/obsidianRestAPI/methods/searchMethods.d.ts +25 -0
  83. package/dist/services/obsidianRestAPI/methods/searchMethods.js +36 -0
  84. package/dist/services/obsidianRestAPI/methods/vaultMethods.d.ts +58 -0
  85. package/dist/services/obsidianRestAPI/methods/vaultMethods.js +144 -0
  86. package/dist/services/obsidianRestAPI/service.d.ts +195 -0
  87. package/dist/services/obsidianRestAPI/service.js +379 -0
  88. package/dist/services/obsidianRestAPI/types.d.ts +127 -0
  89. package/dist/services/obsidianRestAPI/types.js +7 -0
  90. package/dist/services/obsidianRestAPI/vaultCache/index.d.ts +4 -0
  91. package/dist/services/obsidianRestAPI/vaultCache/index.js +4 -0
  92. package/dist/services/obsidianRestAPI/vaultCache/service.d.ts +88 -0
  93. package/dist/services/obsidianRestAPI/vaultCache/service.js +299 -0
  94. package/dist/types-global/errors.d.ts +73 -0
  95. package/dist/types-global/errors.js +71 -0
  96. package/dist/utils/index.d.ts +5 -8
  97. package/dist/utils/index.js +13 -9
  98. package/dist/utils/internal/asyncUtils.d.ts +54 -0
  99. package/dist/utils/internal/asyncUtils.js +101 -0
  100. package/dist/utils/internal/errorHandler.d.ts +176 -0
  101. package/dist/utils/internal/errorHandler.js +351 -0
  102. package/dist/utils/internal/index.d.ts +4 -0
  103. package/dist/utils/internal/index.js +4 -0
  104. package/dist/utils/internal/logger.d.ts +141 -0
  105. package/dist/utils/internal/logger.js +406 -0
  106. package/dist/utils/internal/requestContext.d.ts +83 -0
  107. package/dist/utils/internal/requestContext.js +72 -0
  108. package/dist/utils/metrics/index.d.ts +1 -0
  109. package/dist/utils/metrics/index.js +1 -0
  110. package/dist/utils/metrics/tokenCounter.d.ts +27 -0
  111. package/dist/utils/metrics/tokenCounter.js +128 -0
  112. package/dist/utils/obsidian/index.d.ts +5 -0
  113. package/dist/utils/obsidian/index.js +5 -0
  114. package/dist/utils/obsidian/obsidianApiUtils.d.ts +14 -0
  115. package/dist/utils/obsidian/obsidianApiUtils.js +29 -0
  116. package/dist/utils/obsidian/obsidianStatUtils.d.ts +68 -0
  117. package/dist/utils/obsidian/obsidianStatUtils.js +143 -0
  118. package/dist/utils/parsing/dateParser.d.ts +56 -0
  119. package/dist/utils/parsing/dateParser.js +104 -0
  120. package/dist/utils/parsing/index.d.ts +2 -0
  121. package/dist/utils/parsing/index.js +3 -0
  122. package/dist/utils/parsing/jsonParser.d.ts +80 -0
  123. package/dist/utils/parsing/jsonParser.js +133 -0
  124. package/dist/utils/security/idGenerator.d.ts +140 -0
  125. package/dist/utils/security/idGenerator.js +194 -0
  126. package/dist/utils/security/index.d.ts +3 -0
  127. package/dist/utils/security/index.js +3 -0
  128. package/dist/utils/security/rateLimiter.d.ts +156 -0
  129. package/dist/utils/security/rateLimiter.js +235 -0
  130. package/dist/utils/security/sanitization.d.ts +244 -0
  131. package/dist/utils/security/sanitization.js +599 -0
  132. package/package.json +58 -37
  133. package/dist/index.js.map +0 -1
  134. package/dist/mcp/handlers.d.ts +0 -29
  135. package/dist/mcp/handlers.js +0 -305
  136. package/dist/mcp/handlers.js.map +0 -1
  137. package/dist/mcp/index.d.ts +0 -6
  138. package/dist/mcp/index.js +0 -7
  139. package/dist/mcp/index.js.map +0 -1
  140. package/dist/mcp/server.d.ts +0 -18
  141. package/dist/mcp/server.js +0 -240
  142. package/dist/mcp/server.js.map +0 -1
  143. package/dist/mcp/types.d.ts +0 -70
  144. package/dist/mcp/types.js +0 -49
  145. package/dist/mcp/types.js.map +0 -1
  146. package/dist/obsidian/client.d.ts +0 -109
  147. package/dist/obsidian/client.js +0 -403
  148. package/dist/obsidian/client.js.map +0 -1
  149. package/dist/obsidian/errors.d.ts +0 -28
  150. package/dist/obsidian/errors.js +0 -75
  151. package/dist/obsidian/errors.js.map +0 -1
  152. package/dist/obsidian/index.d.ts +0 -6
  153. package/dist/obsidian/index.js +0 -7
  154. package/dist/obsidian/index.js.map +0 -1
  155. package/dist/obsidian/types.d.ts +0 -107
  156. package/dist/obsidian/types.js +0 -12
  157. package/dist/obsidian/types.js.map +0 -1
  158. package/dist/resources/index.d.ts +0 -13
  159. package/dist/resources/index.js +0 -15
  160. package/dist/resources/index.js.map +0 -1
  161. package/dist/resources/tags.d.ts +0 -39
  162. package/dist/resources/tags.js +0 -257
  163. package/dist/resources/tags.js.map +0 -1
  164. package/dist/resources/types.d.ts +0 -27
  165. package/dist/resources/types.js +0 -5
  166. package/dist/resources/types.js.map +0 -1
  167. package/dist/tools/base.d.ts +0 -46
  168. package/dist/tools/base.js +0 -88
  169. package/dist/tools/base.js.map +0 -1
  170. package/dist/tools/files/content.d.ts +0 -58
  171. package/dist/tools/files/content.js +0 -171
  172. package/dist/tools/files/content.js.map +0 -1
  173. package/dist/tools/files/index.d.ts +0 -14
  174. package/dist/tools/files/index.js +0 -22
  175. package/dist/tools/files/index.js.map +0 -1
  176. package/dist/tools/files/list.d.ts +0 -35
  177. package/dist/tools/files/list.js +0 -133
  178. package/dist/tools/files/list.js.map +0 -1
  179. package/dist/tools/index.d.ts +0 -21
  180. package/dist/tools/index.js +0 -31
  181. package/dist/tools/index.js.map +0 -1
  182. package/dist/tools/properties/index.d.ts +0 -14
  183. package/dist/tools/properties/index.js +0 -19
  184. package/dist/tools/properties/index.js.map +0 -1
  185. package/dist/tools/properties/manager.d.ts +0 -62
  186. package/dist/tools/properties/manager.js +0 -302
  187. package/dist/tools/properties/manager.js.map +0 -1
  188. package/dist/tools/properties/tools.d.ts +0 -47
  189. package/dist/tools/properties/tools.js +0 -239
  190. package/dist/tools/properties/tools.js.map +0 -1
  191. package/dist/tools/properties/types.d.ts +0 -141
  192. package/dist/tools/properties/types.js +0 -70
  193. package/dist/tools/properties/types.js.map +0 -1
  194. package/dist/tools/search/complex.d.ts +0 -38
  195. package/dist/tools/search/complex.js +0 -270
  196. package/dist/tools/search/complex.js.map +0 -1
  197. package/dist/tools/search/index.d.ts +0 -14
  198. package/dist/tools/search/index.js +0 -20
  199. package/dist/tools/search/index.js.map +0 -1
  200. package/dist/tools/search/simple.d.ts +0 -25
  201. package/dist/tools/search/simple.js +0 -127
  202. package/dist/tools/search/simple.js.map +0 -1
  203. package/dist/utils/errors.d.ts +0 -24
  204. package/dist/utils/errors.js +0 -59
  205. package/dist/utils/errors.js.map +0 -1
  206. package/dist/utils/idGenerator.d.ts +0 -15
  207. package/dist/utils/idGenerator.js +0 -21
  208. package/dist/utils/idGenerator.js.map +0 -1
  209. package/dist/utils/index.js.map +0 -1
  210. package/dist/utils/logging.d.ts +0 -245
  211. package/dist/utils/logging.js +0 -417
  212. package/dist/utils/logging.js.map +0 -1
  213. package/dist/utils/rate-limiting.d.ts +0 -50
  214. package/dist/utils/rate-limiting.js +0 -94
  215. package/dist/utils/rate-limiting.js.map +0 -1
  216. package/dist/utils/tokenization.d.ts +0 -28
  217. package/dist/utils/tokenization.js +0 -75
  218. package/dist/utils/tokenization.js.map +0 -1
  219. package/dist/utils/validation.d.ts +0 -22
  220. package/dist/utils/validation.js +0 -92
  221. package/dist/utils/validation.js.map +0 -1
@@ -1,240 +0,0 @@
1
- /**
2
- * MCP server implementation
3
- */
4
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
5
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
6
- import { config } from "dotenv";
7
- import { ObsidianClient } from "../obsidian/client.js";
8
- import { createTagResource } from "../resources/index.js";
9
- import { createToolHandlerMap, createToolHandlers } from "../tools/index.js";
10
- import { ObsidianError } from "../utils/errors.js"; // Import ObsidianError
11
- import { createLogger, ErrorCategoryType } from "../utils/logging.js";
12
- import { rateLimiter } from "../utils/rate-limiting.js";
13
- import { setupResourceListingHandler, setupResourceReadingHandler, setupToolCallingHandler, setupToolListingHandler } from "./handlers.js";
14
- import { McpErrorCode } from "./types.js";
15
- // Create a logger for the server
16
- const logger = createLogger('McpServer');
17
- // Load environment variables
18
- config();
19
- /**
20
- * Initialize MCP server components
21
- */
22
- export async function initializeServer() {
23
- // Start initialization timer
24
- logger.startTimer('server_init');
25
- try {
26
- // Verify API key exists
27
- const API_KEY = process.env.OBSIDIAN_API_KEY;
28
- if (!API_KEY) {
29
- logger.error("Missing API key", {
30
- errorCategory: ErrorCategoryType.CATEGORY_AUTHENTICATION,
31
- errorCode: McpErrorCode.UNAUTHORIZED
32
- });
33
- // Use ObsidianError for consistency
34
- throw new ObsidianError("OBSIDIAN_API_KEY environment variable is required", McpErrorCode.UNAUTHORIZED);
35
- }
36
- // Initialize Obsidian client with environment configuration
37
- logger.info('Initializing Obsidian client', {
38
- verifySSL: process.env.VERIFY_SSL === 'true',
39
- timeout: parseInt(process.env.REQUEST_TIMEOUT || '5000'),
40
- maxContentLength: parseInt(process.env.MAX_CONTENT_LENGTH || String(50 * 1024 * 1024)),
41
- maxBodyLength: parseInt(process.env.MAX_BODY_LENGTH || String(50 * 1024 * 1024))
42
- });
43
- const client = new ObsidianClient({
44
- apiKey: API_KEY,
45
- verifySSL: process.env.VERIFY_SSL === 'true',
46
- timeout: parseInt(process.env.REQUEST_TIMEOUT || '5000'),
47
- maxContentLength: parseInt(process.env.MAX_CONTENT_LENGTH || String(50 * 1024 * 1024)),
48
- maxBodyLength: parseInt(process.env.MAX_BODY_LENGTH || String(50 * 1024 * 1024))
49
- });
50
- // Initialize tool handlers
51
- logger.startTimer('init_tools');
52
- logger.info('Initializing tool handlers');
53
- const toolHandlers = createToolHandlers(client);
54
- const toolHandlerMap = createToolHandlerMap(toolHandlers);
55
- const toolsElapsedMs = logger.endTimer('init_tools');
56
- logger.info(`Initialized ${toolHandlerMap.size} tool handlers`, {
57
- processingTimeMs: toolsElapsedMs,
58
- toolCount: toolHandlerMap.size
59
- });
60
- // Initialize resources
61
- logger.startTimer('init_resources');
62
- logger.info('Initializing resources');
63
- const tagResource = createTagResource(client);
64
- const resources = {
65
- [tagResource.getResourceDescription().uri]: tagResource
66
- };
67
- const resourcesElapsedMs = logger.endTimer('init_resources');
68
- logger.info(`Initialized ${Object.keys(resources).length} resources`, {
69
- processingTimeMs: resourcesElapsedMs,
70
- resourceCount: Object.keys(resources).length
71
- });
72
- // Create MCP server
73
- const serverConfig = {
74
- name: "obsidian-mcp-server",
75
- version: process.env.npm_package_version ?? "1.1.0" // Use version from package.json
76
- };
77
- logger.info(`Creating MCP server: ${serverConfig.name} v${serverConfig.version}`, {
78
- serverName: serverConfig.name,
79
- serverVersion: serverConfig.version
80
- });
81
- const server = new Server(serverConfig, {
82
- capabilities: {
83
- tools: {},
84
- resources
85
- }
86
- });
87
- // Set up request handlers
88
- logger.startTimer('setup_handlers');
89
- setupToolListingHandler(server, toolHandlerMap);
90
- setupToolCallingHandler(server, toolHandlerMap);
91
- setupResourceListingHandler(server, resources);
92
- setupResourceReadingHandler(server, resources);
93
- const handlersElapsedMs = logger.endTimer('setup_handlers');
94
- logger.info('Request handlers configured', { processingTimeMs: handlersElapsedMs });
95
- // Set up enhanced error handler
96
- server.onerror = (error) => {
97
- if (error instanceof Error) {
98
- logger.error("MCP Server Error", {
99
- name: error.name,
100
- message: error.message,
101
- stack: error.stack,
102
- errorCategory: ErrorCategoryType.CATEGORY_SYSTEM
103
- });
104
- }
105
- else {
106
- logger.error("MCP Server Error (Unknown)", {
107
- error: String(error),
108
- errorCategory: ErrorCategoryType.CATEGORY_UNKNOWN
109
- });
110
- }
111
- };
112
- // Log successful initialization
113
- const totalElapsedMs = logger.endTimer('server_init');
114
- logger.logOperationResult(true, 'server_initialization', totalElapsedMs, {
115
- toolCount: toolHandlerMap.size,
116
- resourceCount: Object.keys(resources).length
117
- });
118
- return server;
119
- }
120
- catch (error) {
121
- // Log initialization failure
122
- const totalElapsedMs = logger.endTimer('server_init');
123
- logger.logOperationResult(false, 'server_initialization', totalElapsedMs);
124
- // Enhance error reporting
125
- const errorMessage = error instanceof Error ? error.message : String(error);
126
- const errorStack = error instanceof Error ? error.stack : undefined;
127
- logger.error("Failed to initialize server", {
128
- error: errorMessage,
129
- stack: errorStack,
130
- errorCategory: ErrorCategoryType.CATEGORY_SYSTEM
131
- });
132
- throw error;
133
- }
134
- }
135
- /**
136
- * Set up graceful shutdown handling
137
- * @param server The MCP server instance
138
- * @param cleanupHandlers Additional cleanup handlers to run on shutdown
139
- */
140
- export function setupShutdownHandling(server, cleanupHandlers = []) {
141
- // Cleanup function for graceful shutdown
142
- const cleanup = async (signal) => {
143
- logger.startTimer('server_shutdown');
144
- logger.info('Shutting down server...', { signal });
145
- try {
146
- // Run cleanup handlers sequentially, stopping on error
147
- logger.debug('Running cleanup handlers', { handlersCount: cleanupHandlers.length });
148
- for (const handler of cleanupHandlers) {
149
- // No try-catch here; let errors propagate to the main catch block
150
- await handler();
151
- }
152
- // Dispose rate limiter
153
- logger.debug('Disposing rate limiter');
154
- rateLimiter.dispose();
155
- // Close server
156
- logger.debug('Closing MCP server connection');
157
- await server.close();
158
- const elapsedMs = logger.endTimer('server_shutdown');
159
- logger.logOperationResult(true, 'server_shutdown', elapsedMs);
160
- logger.info('Server shutdown completed successfully');
161
- process.exit(0);
162
- }
163
- catch (error) {
164
- const elapsedMs = logger.endTimer('server_shutdown');
165
- logger.logOperationResult(false, 'server_shutdown', elapsedMs);
166
- const errorMessage = error instanceof Error ? error.message : String(error);
167
- logger.error('Failed to shut down server gracefully', {
168
- error: errorMessage,
169
- stack: error instanceof Error ? error.stack : undefined,
170
- errorCategory: ErrorCategoryType.CATEGORY_SYSTEM
171
- });
172
- process.exit(1);
173
- }
174
- };
175
- // Handle various termination signals
176
- process.on('SIGINT', () => cleanup('SIGINT')); // Ctrl+C on all platforms
177
- process.on('SIGTERM', () => cleanup('SIGTERM')); // Termination request
178
- if (process.platform === 'win32') {
179
- // Windows-specific handling
180
- process.on('SIGHUP', () => cleanup('SIGHUP')); // Terminal closed
181
- }
182
- else {
183
- // Unix-specific signals
184
- process.on('SIGUSR1', () => cleanup('SIGUSR1'));
185
- process.on('SIGUSR2', () => cleanup('SIGUSR2'));
186
- }
187
- // Handle uncaught errors
188
- process.on('uncaughtException', async (error) => {
189
- logger.error('Uncaught exception', {
190
- name: error.name,
191
- message: error.message,
192
- stack: error.stack,
193
- errorCategory: ErrorCategoryType.CATEGORY_SYSTEM
194
- });
195
- await cleanup('uncaughtException');
196
- });
197
- process.on('unhandledRejection', async (reason, promise) => {
198
- const errorMessage = reason instanceof Error ? reason.message : String(reason);
199
- logger.error('Unhandled promise rejection', {
200
- reason: errorMessage,
201
- stack: reason instanceof Error ? reason.stack : undefined,
202
- errorCategory: ErrorCategoryType.CATEGORY_SYSTEM
203
- });
204
- await cleanup('unhandledRejection');
205
- });
206
- }
207
- /**
208
- * Run the MCP server
209
- */
210
- export async function run() {
211
- try {
212
- logger.info("Starting Obsidian MCP server");
213
- logger.startTimer('server_startup');
214
- const server = await initializeServer();
215
- setupShutdownHandling(server, []);
216
- // Connect to transport
217
- logger.debug("Connecting to stdio transport");
218
- const transport = new StdioServerTransport();
219
- await server.connect(transport);
220
- const elapsedMs = logger.endTimer('server_startup');
221
- logger.logOperationResult(true, 'server_startup', elapsedMs);
222
- logger.info("Obsidian MCP server running on stdio", {
223
- serverName: "obsidian-mcp-server",
224
- serverVersion: process.env.npm_package_version ?? "1.1.0",
225
- transport: "stdio"
226
- });
227
- }
228
- catch (error) {
229
- const elapsedMs = logger.endTimer('server_startup', 'Server startup failed');
230
- logger.logOperationResult(false, 'server_startup', elapsedMs);
231
- const errorMessage = error instanceof Error ? error.message : String(error);
232
- logger.error("Failed to start server", {
233
- error: errorMessage,
234
- stack: error instanceof Error ? error.stack : undefined,
235
- errorCategory: ErrorCategoryType.CATEGORY_SYSTEM
236
- });
237
- process.exit(1);
238
- }
239
- }
240
- //# sourceMappingURL=server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -1,70 +0,0 @@
1
- /**
2
- * MCP server type definitions
3
- */
4
- import { TextContent, Tool } from "@modelcontextprotocol/sdk/types.js";
5
- import { ErrorCategoryType, StandardizedErrorObject } from "../utils/logging.js";
6
- /**
7
- * MCP server configuration
8
- */
9
- export interface McpServerConfig extends Record<string, unknown> {
10
- name: string;
11
- version: string;
12
- }
13
- /**
14
- * Timeout configuration for tool execution
15
- */
16
- export interface TimeoutConfig {
17
- toolExecutionMs: number;
18
- }
19
- /**
20
- * Map of resources by URI
21
- */
22
- export interface ResourceMap {
23
- [uri: string]: {
24
- getContent(): Promise<TextContent[]>;
25
- getResourceDescription(): any;
26
- };
27
- }
28
- /**
29
- * Server capabilities configuration
30
- */
31
- export interface ServerCapabilities {
32
- tools: Record<string, Tool>;
33
- resources: ResourceMap;
34
- }
35
- /**
36
- * Operation result interface following MCP best practices
37
- */
38
- export interface OperationResultSuccess<DataType> {
39
- resultSuccessful: true;
40
- resultData: DataType;
41
- }
42
- export interface OperationResultFailure {
43
- resultSuccessful: false;
44
- resultError: StandardizedErrorObject;
45
- }
46
- export type OperationResult<DataType> = OperationResultSuccess<DataType> | OperationResultFailure;
47
- /**
48
- * Error codes used in the MCP server
49
- */
50
- export declare enum McpErrorCode {
51
- INTERNAL_SERVER_ERROR = 50000,
52
- SERVICE_UNAVAILABLE = 50300,
53
- TIMEOUT = 50800,
54
- BAD_REQUEST = 40000,
55
- UNAUTHORIZED = 40100,
56
- FORBIDDEN = 40300,
57
- NOT_FOUND = 40400,
58
- METHOD_NOT_ALLOWED = 40500,
59
- RATE_LIMIT_EXCEEDED = 40900,
60
- SUCCESS_NO_CONTENT = 20400
61
- }
62
- /**
63
- * Default timeout configuration
64
- */
65
- export declare const DEFAULT_TIMEOUT_CONFIG: TimeoutConfig;
66
- /**
67
- * Helper functions for creating operation results
68
- */
69
- export declare function createSuccessResult<DataType>(data: DataType): OperationResultSuccess<DataType>;
70
- export declare function createFailureResult(message: string, code: string | McpErrorCode, category?: ErrorCategoryType, context?: Record<string, unknown>): OperationResultFailure;
package/dist/mcp/types.js DELETED
@@ -1,49 +0,0 @@
1
- import { ErrorCategoryType, LogLevel } from "../utils/logging.js";
2
- /**
3
- * Error codes used in the MCP server
4
- */
5
- export var McpErrorCode;
6
- (function (McpErrorCode) {
7
- // Server errors (5xxxx)
8
- McpErrorCode[McpErrorCode["INTERNAL_SERVER_ERROR"] = 50000] = "INTERNAL_SERVER_ERROR";
9
- McpErrorCode[McpErrorCode["SERVICE_UNAVAILABLE"] = 50300] = "SERVICE_UNAVAILABLE";
10
- McpErrorCode[McpErrorCode["TIMEOUT"] = 50800] = "TIMEOUT";
11
- // Client errors (4xxxx)
12
- McpErrorCode[McpErrorCode["BAD_REQUEST"] = 40000] = "BAD_REQUEST";
13
- McpErrorCode[McpErrorCode["UNAUTHORIZED"] = 40100] = "UNAUTHORIZED";
14
- McpErrorCode[McpErrorCode["FORBIDDEN"] = 40300] = "FORBIDDEN";
15
- McpErrorCode[McpErrorCode["NOT_FOUND"] = 40400] = "NOT_FOUND";
16
- McpErrorCode[McpErrorCode["METHOD_NOT_ALLOWED"] = 40500] = "METHOD_NOT_ALLOWED";
17
- McpErrorCode[McpErrorCode["RATE_LIMIT_EXCEEDED"] = 40900] = "RATE_LIMIT_EXCEEDED";
18
- // Success with special handling
19
- McpErrorCode[McpErrorCode["SUCCESS_NO_CONTENT"] = 20400] = "SUCCESS_NO_CONTENT";
20
- })(McpErrorCode || (McpErrorCode = {}));
21
- /**
22
- * Default timeout configuration
23
- */
24
- export const DEFAULT_TIMEOUT_CONFIG = {
25
- toolExecutionMs: parseInt(process.env.TOOL_TIMEOUT_MS ?? '60000') // 60 second default timeout
26
- };
27
- /**
28
- * Helper functions for creating operation results
29
- */
30
- export function createSuccessResult(data) {
31
- return {
32
- resultSuccessful: true,
33
- resultData: data
34
- };
35
- }
36
- export function createFailureResult(message, code, category = ErrorCategoryType.CATEGORY_UNKNOWN, context) {
37
- return {
38
- resultSuccessful: false,
39
- resultError: {
40
- errorMessage: message,
41
- errorCode: typeof code === 'string' ? code : String(code),
42
- errorCategory: category,
43
- errorSeverity: LogLevel.ERROR,
44
- errorTimestamp: new Date().toISOString(),
45
- errorContext: context
46
- }
47
- };
48
- }
49
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAA2B,MAAM,qBAAqB,CAAC;AAoD3F;;GAEG;AACH,MAAM,CAAN,IAAY,YAgBX;AAhBD,WAAY,YAAY;IACtB,wBAAwB;IACxB,qFAA6B,CAAA;IAC7B,iFAA2B,CAAA;IAC3B,yDAAe,CAAA;IAEf,wBAAwB;IACxB,iEAAmB,CAAA;IACnB,mEAAoB,CAAA;IACpB,6DAAiB,CAAA;IACjB,6DAAiB,CAAA;IACjB,+EAA0B,CAAA;IAC1B,iFAA2B,CAAA;IAE3B,gCAAgC;IAChC,+EAA0B,CAAA;AAC5B,CAAC,EAhBW,YAAY,KAAZ,YAAY,QAgBvB;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAkB;IACnD,eAAe,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,CAAC,4BAA4B;CAC/F,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAW,IAAc;IAC1D,OAAO;QACL,gBAAgB,EAAE,IAAI;QACtB,UAAU,EAAE,IAAI;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,OAAe,EACf,IAA2B,EAC3B,WAA8B,iBAAiB,CAAC,gBAAgB,EAChE,OAAiC;IAEjC,OAAO;QACL,gBAAgB,EAAE,KAAK;QACvB,WAAW,EAAE;YACX,YAAY,EAAE,OAAO;YACrB,SAAS,EAAE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;YACzD,aAAa,EAAE,QAAQ;YACvB,aAAa,EAAE,QAAQ,CAAC,KAAK;YAC7B,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACxC,YAAY,EAAE,OAAO;SACtB;KACF,CAAC;AACJ,CAAC"}
@@ -1,109 +0,0 @@
1
- import { JsonLogicQuery, NoteJson, ObsidianCommand, ObsidianConfig, ObsidianFile, ObsidianStatus, PeriodType, SearchResponse, SimpleSearchResult } from './types.js';
2
- /**
3
- * Client for interacting with the Obsidian Local REST API
4
- */
5
- export declare class ObsidianClient {
6
- private client;
7
- private config;
8
- /**
9
- * Create a new ObsidianClient
10
- * @param config Configuration for the client
11
- */
12
- constructor(config: ObsidianConfig);
13
- /**
14
- * Get the base URL for the Obsidian API
15
- */
16
- private getBaseUrl;
17
- /**
18
- * Get headers for requests to the Obsidian API
19
- */
20
- private getHeaders;
21
- /**
22
- * Safely execute an API request with error handling
23
- */
24
- private safeRequest;
25
- /**
26
- * List all files in the vault
27
- */
28
- listFilesInVault(): Promise<ObsidianFile[]>;
29
- /**
30
- * List files in a specific directory
31
- */
32
- listFilesInDir(dirpath: string): Promise<ObsidianFile[]>;
33
- /**
34
- * Get the contents of a file
35
- */
36
- getFileContents(filepath: string): Promise<string>;
37
- /**
38
- * Search for a string across all files
39
- */
40
- search(query: string, contextLength?: number): Promise<SimpleSearchResult[]>;
41
- /**
42
- * Append content to a file
43
- */
44
- appendContent(filepath: string, content: string): Promise<void>;
45
- /**
46
- * Update the entire content of a file
47
- */
48
- updateContent(filepath: string, content: string): Promise<void>;
49
- /**
50
- * Execute a complex search using JsonLogic query
51
- */
52
- searchJson(query: JsonLogicQuery): Promise<SearchResponse[]>;
53
- /**
54
- * Get server status
55
- */
56
- getStatus(): Promise<ObsidianStatus>;
57
- /**
58
- * List available commands
59
- */
60
- listCommands(): Promise<ObsidianCommand[]>;
61
- /**
62
- * Execute a command by ID
63
- */
64
- executeCommand(commandId: string): Promise<void>;
65
- /**
66
- * Open a file in Obsidian
67
- */
68
- openFile(filepath: string, newLeaf?: boolean): Promise<void>;
69
- /**
70
- * Get the currently active file
71
- */
72
- getActiveFile(): Promise<NoteJson>;
73
- /**
74
- * Update the active file
75
- */
76
- updateActiveFile(content: string): Promise<void>;
77
- /**
78
- * Delete the active file
79
- */
80
- deleteActiveFile(): Promise<void>;
81
- /**
82
- * Patch the active file
83
- */
84
- patchActiveFile(operation: "append" | "prepend" | "replace", targetType: "heading" | "block" | "frontmatter", target: string, content: string, options?: {
85
- delimiter?: string;
86
- trimWhitespace?: boolean;
87
- contentType?: "text/markdown" | "application/json";
88
- }): Promise<void>;
89
- /**
90
- * Get a periodic note (e.g., daily, weekly)
91
- */
92
- getPeriodicNote(period: PeriodType["type"]): Promise<NoteJson>;
93
- /**
94
- * Update a periodic note
95
- */
96
- updatePeriodicNote(period: PeriodType["type"], content: string): Promise<void>;
97
- /**
98
- * Delete a periodic note
99
- */
100
- deletePeriodicNote(period: PeriodType["type"]): Promise<void>;
101
- /**
102
- * Patch a periodic note
103
- */
104
- patchPeriodicNote(period: PeriodType["type"], operation: "append" | "prepend" | "replace", targetType: "heading" | "block" | "frontmatter", target: string, content: string, options?: {
105
- delimiter?: string;
106
- trimWhitespace?: boolean;
107
- contentType?: "text/markdown" | "application/json";
108
- }): Promise<void>;
109
- }