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.
- package/README.md +248 -104
- package/dist/config/index.d.ts +41 -0
- package/dist/config/index.js +191 -0
- package/dist/index.d.ts +1 -5
- package/dist/index.js +296 -18
- package/dist/mcp-server/server.d.ts +33 -0
- package/dist/mcp-server/server.js +211 -0
- package/dist/mcp-server/tools/obsidianDeleteFileTool/index.d.ts +12 -0
- package/dist/mcp-server/tools/obsidianDeleteFileTool/index.js +12 -0
- package/dist/mcp-server/tools/obsidianDeleteFileTool/logic.d.ts +51 -0
- package/dist/mcp-server/tools/obsidianDeleteFileTool/logic.js +168 -0
- package/dist/mcp-server/tools/obsidianDeleteFileTool/registration.d.ts +19 -0
- package/dist/mcp-server/tools/obsidianDeleteFileTool/registration.js +91 -0
- package/dist/mcp-server/tools/obsidianGlobalSearchTool/index.d.ts +12 -0
- package/dist/mcp-server/tools/obsidianGlobalSearchTool/index.js +12 -0
- package/dist/mcp-server/tools/obsidianGlobalSearchTool/logic.d.ts +77 -0
- package/dist/mcp-server/tools/obsidianGlobalSearchTool/logic.js +341 -0
- package/dist/mcp-server/tools/obsidianGlobalSearchTool/registration.d.ts +18 -0
- package/dist/mcp-server/tools/obsidianGlobalSearchTool/registration.js +69 -0
- package/dist/mcp-server/tools/obsidianListFilesTool/index.d.ts +12 -0
- package/dist/mcp-server/tools/obsidianListFilesTool/index.js +12 -0
- package/dist/mcp-server/tools/obsidianListFilesTool/logic.d.ts +64 -0
- package/dist/mcp-server/tools/obsidianListFilesTool/logic.js +179 -0
- package/dist/mcp-server/tools/obsidianListFilesTool/registration.d.ts +19 -0
- package/dist/mcp-server/tools/obsidianListFilesTool/registration.js +96 -0
- package/dist/mcp-server/tools/obsidianManageFrontmatterTool/index.d.ts +3 -0
- package/dist/mcp-server/tools/obsidianManageFrontmatterTool/index.js +2 -0
- package/dist/mcp-server/tools/obsidianManageFrontmatterTool/logic.d.ts +42 -0
- package/dist/mcp-server/tools/obsidianManageFrontmatterTool/logic.js +152 -0
- package/dist/mcp-server/tools/obsidianManageFrontmatterTool/registration.d.ts +3 -0
- package/dist/mcp-server/tools/obsidianManageFrontmatterTool/registration.js +52 -0
- package/dist/mcp-server/tools/obsidianManageTagsTool/index.d.ts +3 -0
- package/dist/mcp-server/tools/obsidianManageTagsTool/index.js +2 -0
- package/dist/mcp-server/tools/obsidianManageTagsTool/logic.d.ts +28 -0
- package/dist/mcp-server/tools/obsidianManageTagsTool/logic.js +161 -0
- package/dist/mcp-server/tools/obsidianManageTagsTool/registration.d.ts +3 -0
- package/dist/mcp-server/tools/obsidianManageTagsTool/registration.js +52 -0
- package/dist/mcp-server/tools/obsidianReadFileTool/index.d.ts +12 -0
- package/dist/mcp-server/tools/obsidianReadFileTool/index.js +12 -0
- package/dist/mcp-server/tools/obsidianReadFileTool/logic.d.ts +87 -0
- package/dist/mcp-server/tools/obsidianReadFileTool/logic.js +216 -0
- package/dist/mcp-server/tools/obsidianReadFileTool/registration.d.ts +20 -0
- package/dist/mcp-server/tools/obsidianReadFileTool/registration.js +101 -0
- package/dist/mcp-server/tools/obsidianSearchReplaceTool/index.d.ts +12 -0
- package/dist/mcp-server/tools/obsidianSearchReplaceTool/index.js +12 -0
- package/dist/mcp-server/tools/obsidianSearchReplaceTool/logic.d.ts +255 -0
- package/dist/mcp-server/tools/obsidianSearchReplaceTool/logic.js +583 -0
- package/dist/mcp-server/tools/obsidianSearchReplaceTool/registration.d.ts +22 -0
- package/dist/mcp-server/tools/obsidianSearchReplaceTool/registration.js +111 -0
- package/dist/mcp-server/tools/obsidianUpdateFileTool/index.d.ts +12 -0
- package/dist/mcp-server/tools/obsidianUpdateFileTool/index.js +12 -0
- package/dist/mcp-server/tools/obsidianUpdateFileTool/logic.d.ts +183 -0
- package/dist/mcp-server/tools/obsidianUpdateFileTool/logic.js +490 -0
- package/dist/mcp-server/tools/obsidianUpdateFileTool/registration.d.ts +21 -0
- package/dist/mcp-server/tools/obsidianUpdateFileTool/registration.js +108 -0
- package/dist/mcp-server/transports/authentication/authContext.d.ts +33 -0
- package/dist/mcp-server/transports/authentication/authContext.js +24 -0
- package/dist/mcp-server/transports/authentication/authMiddleware.d.ts +30 -0
- package/dist/mcp-server/transports/authentication/authMiddleware.js +145 -0
- package/dist/mcp-server/transports/authentication/authUtils.d.ts +18 -0
- package/dist/mcp-server/transports/authentication/authUtils.js +45 -0
- package/dist/mcp-server/transports/authentication/oauthMiddleware.d.ts +24 -0
- package/dist/mcp-server/transports/authentication/oauthMiddleware.js +109 -0
- package/dist/mcp-server/transports/authentication/types.d.ts +17 -0
- package/dist/mcp-server/transports/authentication/types.js +5 -0
- package/dist/mcp-server/transports/httpTransport.d.ts +24 -0
- package/dist/mcp-server/transports/httpTransport.js +496 -0
- package/dist/mcp-server/transports/stdioTransport.d.ts +42 -0
- package/dist/mcp-server/transports/stdioTransport.js +63 -0
- package/dist/services/obsidianRestAPI/index.d.ts +15 -0
- package/dist/services/obsidianRestAPI/index.js +17 -0
- package/dist/services/obsidianRestAPI/methods/activeFileMethods.d.ts +38 -0
- package/dist/services/obsidianRestAPI/methods/activeFileMethods.js +62 -0
- package/dist/services/obsidianRestAPI/methods/commandMethods.d.ts +22 -0
- package/dist/services/obsidianRestAPI/methods/commandMethods.js +31 -0
- package/dist/services/obsidianRestAPI/methods/openMethods.d.ts +16 -0
- package/dist/services/obsidianRestAPI/methods/openMethods.js +21 -0
- package/dist/services/obsidianRestAPI/methods/patchMethods.d.ts +37 -0
- package/dist/services/obsidianRestAPI/methods/patchMethods.js +94 -0
- package/dist/services/obsidianRestAPI/methods/periodicNoteMethods.d.ts +42 -0
- package/dist/services/obsidianRestAPI/methods/periodicNoteMethods.js +66 -0
- package/dist/services/obsidianRestAPI/methods/searchMethods.d.ts +25 -0
- package/dist/services/obsidianRestAPI/methods/searchMethods.js +36 -0
- package/dist/services/obsidianRestAPI/methods/vaultMethods.d.ts +58 -0
- package/dist/services/obsidianRestAPI/methods/vaultMethods.js +144 -0
- package/dist/services/obsidianRestAPI/service.d.ts +195 -0
- package/dist/services/obsidianRestAPI/service.js +379 -0
- package/dist/services/obsidianRestAPI/types.d.ts +127 -0
- package/dist/services/obsidianRestAPI/types.js +7 -0
- package/dist/services/obsidianRestAPI/vaultCache/index.d.ts +4 -0
- package/dist/services/obsidianRestAPI/vaultCache/index.js +4 -0
- package/dist/services/obsidianRestAPI/vaultCache/service.d.ts +88 -0
- package/dist/services/obsidianRestAPI/vaultCache/service.js +299 -0
- package/dist/types-global/errors.d.ts +73 -0
- package/dist/types-global/errors.js +71 -0
- package/dist/utils/index.d.ts +5 -8
- package/dist/utils/index.js +13 -9
- package/dist/utils/internal/asyncUtils.d.ts +54 -0
- package/dist/utils/internal/asyncUtils.js +101 -0
- package/dist/utils/internal/errorHandler.d.ts +176 -0
- package/dist/utils/internal/errorHandler.js +351 -0
- package/dist/utils/internal/index.d.ts +4 -0
- package/dist/utils/internal/index.js +4 -0
- package/dist/utils/internal/logger.d.ts +141 -0
- package/dist/utils/internal/logger.js +406 -0
- package/dist/utils/internal/requestContext.d.ts +83 -0
- package/dist/utils/internal/requestContext.js +72 -0
- package/dist/utils/metrics/index.d.ts +1 -0
- package/dist/utils/metrics/index.js +1 -0
- package/dist/utils/metrics/tokenCounter.d.ts +27 -0
- package/dist/utils/metrics/tokenCounter.js +128 -0
- package/dist/utils/obsidian/index.d.ts +5 -0
- package/dist/utils/obsidian/index.js +5 -0
- package/dist/utils/obsidian/obsidianApiUtils.d.ts +14 -0
- package/dist/utils/obsidian/obsidianApiUtils.js +29 -0
- package/dist/utils/obsidian/obsidianStatUtils.d.ts +68 -0
- package/dist/utils/obsidian/obsidianStatUtils.js +143 -0
- package/dist/utils/parsing/dateParser.d.ts +56 -0
- package/dist/utils/parsing/dateParser.js +104 -0
- package/dist/utils/parsing/index.d.ts +2 -0
- package/dist/utils/parsing/index.js +3 -0
- package/dist/utils/parsing/jsonParser.d.ts +80 -0
- package/dist/utils/parsing/jsonParser.js +133 -0
- package/dist/utils/security/idGenerator.d.ts +140 -0
- package/dist/utils/security/idGenerator.js +194 -0
- package/dist/utils/security/index.d.ts +3 -0
- package/dist/utils/security/index.js +3 -0
- package/dist/utils/security/rateLimiter.d.ts +156 -0
- package/dist/utils/security/rateLimiter.js +235 -0
- package/dist/utils/security/sanitization.d.ts +244 -0
- package/dist/utils/security/sanitization.js +599 -0
- package/package.json +58 -37
- package/dist/index.js.map +0 -1
- package/dist/mcp/handlers.d.ts +0 -29
- package/dist/mcp/handlers.js +0 -305
- package/dist/mcp/handlers.js.map +0 -1
- package/dist/mcp/index.d.ts +0 -6
- package/dist/mcp/index.js +0 -7
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp/server.d.ts +0 -18
- package/dist/mcp/server.js +0 -240
- package/dist/mcp/server.js.map +0 -1
- package/dist/mcp/types.d.ts +0 -70
- package/dist/mcp/types.js +0 -49
- package/dist/mcp/types.js.map +0 -1
- package/dist/obsidian/client.d.ts +0 -109
- package/dist/obsidian/client.js +0 -403
- package/dist/obsidian/client.js.map +0 -1
- package/dist/obsidian/errors.d.ts +0 -28
- package/dist/obsidian/errors.js +0 -75
- package/dist/obsidian/errors.js.map +0 -1
- package/dist/obsidian/index.d.ts +0 -6
- package/dist/obsidian/index.js +0 -7
- package/dist/obsidian/index.js.map +0 -1
- package/dist/obsidian/types.d.ts +0 -107
- package/dist/obsidian/types.js +0 -12
- package/dist/obsidian/types.js.map +0 -1
- package/dist/resources/index.d.ts +0 -13
- package/dist/resources/index.js +0 -15
- package/dist/resources/index.js.map +0 -1
- package/dist/resources/tags.d.ts +0 -39
- package/dist/resources/tags.js +0 -257
- package/dist/resources/tags.js.map +0 -1
- package/dist/resources/types.d.ts +0 -27
- package/dist/resources/types.js +0 -5
- package/dist/resources/types.js.map +0 -1
- package/dist/tools/base.d.ts +0 -46
- package/dist/tools/base.js +0 -88
- package/dist/tools/base.js.map +0 -1
- package/dist/tools/files/content.d.ts +0 -58
- package/dist/tools/files/content.js +0 -171
- package/dist/tools/files/content.js.map +0 -1
- package/dist/tools/files/index.d.ts +0 -14
- package/dist/tools/files/index.js +0 -22
- package/dist/tools/files/index.js.map +0 -1
- package/dist/tools/files/list.d.ts +0 -35
- package/dist/tools/files/list.js +0 -133
- package/dist/tools/files/list.js.map +0 -1
- package/dist/tools/index.d.ts +0 -21
- package/dist/tools/index.js +0 -31
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/properties/index.d.ts +0 -14
- package/dist/tools/properties/index.js +0 -19
- package/dist/tools/properties/index.js.map +0 -1
- package/dist/tools/properties/manager.d.ts +0 -62
- package/dist/tools/properties/manager.js +0 -302
- package/dist/tools/properties/manager.js.map +0 -1
- package/dist/tools/properties/tools.d.ts +0 -47
- package/dist/tools/properties/tools.js +0 -239
- package/dist/tools/properties/tools.js.map +0 -1
- package/dist/tools/properties/types.d.ts +0 -141
- package/dist/tools/properties/types.js +0 -70
- package/dist/tools/properties/types.js.map +0 -1
- package/dist/tools/search/complex.d.ts +0 -38
- package/dist/tools/search/complex.js +0 -270
- package/dist/tools/search/complex.js.map +0 -1
- package/dist/tools/search/index.d.ts +0 -14
- package/dist/tools/search/index.js +0 -20
- package/dist/tools/search/index.js.map +0 -1
- package/dist/tools/search/simple.d.ts +0 -25
- package/dist/tools/search/simple.js +0 -127
- package/dist/tools/search/simple.js.map +0 -1
- package/dist/utils/errors.d.ts +0 -24
- package/dist/utils/errors.js +0 -59
- package/dist/utils/errors.js.map +0 -1
- package/dist/utils/idGenerator.d.ts +0 -15
- package/dist/utils/idGenerator.js +0 -21
- package/dist/utils/idGenerator.js.map +0 -1
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/logging.d.ts +0 -245
- package/dist/utils/logging.js +0 -417
- package/dist/utils/logging.js.map +0 -1
- package/dist/utils/rate-limiting.d.ts +0 -50
- package/dist/utils/rate-limiting.js +0 -94
- package/dist/utils/rate-limiting.js.map +0 -1
- package/dist/utils/tokenization.d.ts +0 -28
- package/dist/utils/tokenization.js +0 -75
- package/dist/utils/tokenization.js.map +0 -1
- package/dist/utils/validation.d.ts +0 -22
- package/dist/utils/validation.js +0 -92
- package/dist/utils/validation.js.map +0 -1
package/dist/mcp/server.js
DELETED
|
@@ -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
|
package/dist/mcp/server.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC,CAAC,uBAAuB;AAC3E,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EACL,2BAA2B,EAC3B,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,YAAY,EAGb,MAAM,YAAY,CAAC;AAEpB,iCAAiC;AACjC,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;AAEzC,6BAA6B;AAC7B,MAAM,EAAE,CAAC;AAET;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,6BAA6B;IAC7B,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAEjC,IAAI,CAAC;QACH,wBAAwB;QACxB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE;gBAC9B,aAAa,EAAE,iBAAiB,CAAC,uBAAuB;gBACvD,SAAS,EAAE,YAAY,CAAC,YAAY;aACrC,CAAC,CAAC;YACH,oCAAoC;YACpC,MAAM,IAAI,aAAa,CACrB,mDAAmD,EACnD,YAAY,CAAC,YAAY,CAC1B,CAAC;QACJ,CAAC;QAEF,4DAA4D;QAC5D,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE;YAC1C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,MAAM;YAC5C,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,MAAM,CAAC;YACxD,gBAAgB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,MAAM,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;YACtF,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,MAAM,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;SACjF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC;YAChC,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,MAAM;YAC5C,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,MAAM,CAAC;YACxD,gBAAgB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,MAAM,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;YACtF,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,MAAM,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;SACjF,CAAC,CAAC;QAEH,2BAA2B;QAC3B,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC1C,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,cAAc,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;QAC1D,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,eAAe,cAAc,CAAC,IAAI,gBAAgB,EAAE;YAC9D,gBAAgB,EAAE,cAAc;YAChC,SAAS,EAAE,cAAc,CAAC,IAAI;SAC/B,CAAC,CAAC;QAEH,uBAAuB;QACvB,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAgB;YAC7B,CAAC,WAAW,CAAC,sBAAsB,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW;SACxD,CAAC;QACF,MAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,YAAY,EAAE;YACpE,gBAAgB,EAAE,kBAAkB;YACpC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM;SAC7C,CAAC,CAAC;QAEH,oBAAoB;QACpB,MAAM,YAAY,GAAoB;YACpC,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,CAAC,gCAAgC;SACrF,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,wBAAwB,YAAY,CAAC,IAAI,KAAK,YAAY,CAAC,OAAO,EAAE,EAAE;YAChF,UAAU,EAAE,YAAY,CAAC,IAAI;YAC7B,aAAa,EAAE,YAAY,CAAC,OAAO;SACpC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,YAAY,EACZ;YACE,YAAY,EAAE;gBACZ,KAAK,EAAE,EAAE;gBACT,SAAS;aACV;SACF,CACF,CAAC;QAEF,0BAA0B;QAC1B,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QACpC,uBAAuB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAChD,uBAAuB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAChD,2BAA2B,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC/C,2BAA2B,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC/C,MAAM,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAC5D,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAEpF,gCAAgC;QAChC,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;YACzB,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE;oBAC/B,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,aAAa,EAAE,iBAAiB,CAAC,eAAe;iBACjD,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE;oBACzC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;oBACpB,aAAa,EAAE,iBAAiB,CAAC,gBAAgB;iBAClD,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC;QAEF,gCAAgC;QAChC,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACtD,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,uBAAuB,EAAE,cAAc,EAAE;YACvE,SAAS,EAAE,cAAc,CAAC,IAAI;YAC9B,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM;SAC7C,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,6BAA6B;QAC7B,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACtD,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,EAAE,cAAc,CAAC,CAAC;QAE1E,0BAA0B;QAC1B,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM,UAAU,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAEpE,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;YAC1C,KAAK,EAAE,YAAY;YACnB,KAAK,EAAE,UAAU;YACjB,aAAa,EAAE,iBAAiB,CAAC,eAAe;SACjD,CAAC,CAAC;QAEH,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAc,EACd,kBAAkD,EAAE;IAEpD,yCAAyC;IACzC,MAAM,OAAO,GAAG,KAAK,EAAE,MAAe,EAAE,EAAE;QACxC,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnD,IAAI,CAAC;YACH,uDAAuD;YACvD,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,aAAa,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;YACpF,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;gBACtC,kEAAkE;gBAClE,MAAM,OAAO,EAAE,CAAC;YAClB,CAAC;YAED,uBAAuB;YACvB,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACvC,WAAW,CAAC,OAAO,EAAE,CAAC;YAEtB,eAAe;YACf,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC9C,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YAErB,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YACrD,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;YAEtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YACrD,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAC;YAE/D,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE;gBACpD,KAAK,EAAE,YAAY;gBACnB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;gBACvD,aAAa,EAAE,iBAAiB,CAAC,eAAe;aACjD,CAAC,CAAC;YAEH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;IAEF,qCAAqC;IACrC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,0BAA0B;IAC1E,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,sBAAsB;IAEvE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,4BAA4B;QAC5B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,kBAAkB;IACpE,CAAC;SAAM,CAAC;QACN,wBAAwB;QACxB,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,yBAAyB;IACzB,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QAC9C,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE;YACjC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,aAAa,EAAE,iBAAiB,CAAC,eAAe;SACjD,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;QACzD,MAAM,YAAY,GAAG,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/E,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;YAC1C,MAAM,EAAE,YAAY;YACpB,KAAK,EAAE,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACzD,aAAa,EAAE,iBAAiB,CAAC,eAAe;SACjD,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,GAAG;IACvB,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC5C,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAEpC,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,qBAAqB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAElC,uBAAuB;QACvB,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEhC,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACpD,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,sCAAsC,EAAE;YAClD,UAAU,EAAE,qBAAqB;YACjC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO;YACzD,SAAS,EAAE,OAAO;SACnB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,CAAC;QAC7E,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;QAE9D,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE;YACrC,KAAK,EAAE,YAAY;YACnB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACvD,aAAa,EAAE,iBAAiB,CAAC,eAAe;SACjD,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
package/dist/mcp/types.d.ts
DELETED
|
@@ -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
|
package/dist/mcp/types.js.map
DELETED
|
@@ -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
|
-
}
|