obsidian-mcp-server 1.5.6 → 1.5.8
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 +75 -211
- package/dist/index.d.ts +6 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/handlers.d.ts +29 -0
- package/dist/mcp/handlers.js.map +1 -0
- package/{src/mcp/index.ts → dist/mcp/index.d.ts} +0 -1
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.d.ts +18 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/types.d.ts +70 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/obsidian/client.d.ts +109 -0
- package/dist/obsidian/client.js.map +1 -0
- package/dist/obsidian/errors.d.ts +28 -0
- package/dist/obsidian/errors.js.map +1 -0
- package/{src/obsidian/index.ts → dist/obsidian/index.d.ts} +0 -1
- package/dist/obsidian/index.js.map +1 -0
- package/{src/obsidian/types.ts → dist/obsidian/types.d.ts} +43 -60
- package/dist/obsidian/types.js.map +1 -0
- package/{src/resources/index.ts → dist/resources/index.d.ts} +1 -5
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/tags.d.ts +39 -0
- package/dist/resources/tags.js.map +1 -0
- package/{src/resources/types.ts → dist/resources/types.d.ts} +10 -13
- package/dist/resources/types.js.map +1 -0
- package/dist/tools/base.d.ts +46 -0
- package/dist/tools/base.js.map +1 -0
- package/dist/tools/files/content.d.ts +58 -0
- package/dist/tools/files/content.js.map +1 -0
- package/dist/tools/files/index.d.ts +14 -0
- package/dist/tools/files/index.js.map +1 -0
- package/dist/tools/files/list.d.ts +35 -0
- package/dist/tools/files/list.js.map +1 -0
- package/dist/tools/index.d.ts +21 -0
- package/dist/tools/index.js.map +1 -0
- package/{src/tools/properties/index.ts → dist/tools/properties/index.d.ts} +1 -8
- package/dist/tools/properties/index.js.map +1 -0
- package/dist/tools/properties/manager.d.ts +62 -0
- package/dist/tools/properties/manager.js.map +1 -0
- package/dist/tools/properties/tools.d.ts +47 -0
- package/dist/tools/properties/tools.js.map +1 -0
- package/dist/tools/properties/types.d.ts +141 -0
- package/dist/tools/properties/types.js.map +1 -0
- package/dist/tools/search/complex.d.ts +38 -0
- package/dist/tools/search/complex.js.map +1 -0
- package/{src/tools/search/index.ts → dist/tools/search/index.d.ts} +1 -9
- package/dist/tools/search/index.js.map +1 -0
- package/dist/tools/search/simple.d.ts +25 -0
- package/dist/tools/search/simple.js.map +1 -0
- package/dist/utils/errors.d.ts +24 -0
- package/dist/utils/errors.js.map +1 -0
- package/{src/utils/idGenerator.ts → dist/utils/idGenerator.d.ts} +2 -9
- package/dist/utils/idGenerator.js.map +1 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logging.d.ts +245 -0
- package/dist/utils/logging.js.map +1 -0
- package/dist/utils/rate-limiting.d.ts +50 -0
- package/dist/utils/rate-limiting.js.map +1 -0
- package/dist/utils/tokenization.d.ts +28 -0
- package/dist/utils/tokenization.js.map +1 -0
- package/dist/utils/validation.d.ts +22 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +33 -19
- package/.github/workflows/publish.yml +0 -35
- package/Dockerfile +0 -63
- package/debug.js +0 -98
- package/docs/tree.md +0 -67
- package/env.json +0 -42
- package/mcp-client-config.example.json +0 -23
- package/repomix.config.json +0 -20
- package/scripts/clean.ts +0 -103
- package/scripts/tree.ts +0 -599
- package/src/index.ts +0 -23
- package/src/mcp/handlers.ts +0 -410
- package/src/mcp/server.ts +0 -288
- package/src/mcp/types.ts +0 -112
- package/src/obsidian/client.ts +0 -505
- package/src/obsidian/errors.ts +0 -105
- package/src/resources/tags.ts +0 -283
- package/src/tools/base.ts +0 -123
- package/src/tools/files/content.ts +0 -206
- package/src/tools/files/index.ts +0 -31
- package/src/tools/files/list.ts +0 -150
- package/src/tools/index.ts +0 -38
- package/src/tools/properties/manager.ts +0 -370
- package/src/tools/properties/tools.ts +0 -280
- package/src/tools/properties/types.ts +0 -117
- package/src/tools/search/complex.ts +0 -303
- package/src/tools/search/simple.ts +0 -147
- package/src/utils/errors.ts +0 -69
- package/src/utils/logging.ts +0 -558
- package/src/utils/rate-limiting.ts +0 -114
- package/src/utils/tokenization.ts +0 -85
- package/src/utils/validation.ts +0 -105
- package/tsconfig.json +0 -17
- /package/{build → dist}/index.js +0 -0
- /package/{build → dist}/mcp/handlers.js +0 -0
- /package/{build → dist}/mcp/index.js +0 -0
- /package/{build → dist}/mcp/server.js +0 -0
- /package/{build → dist}/mcp/types.js +0 -0
- /package/{build → dist}/obsidian/client.js +0 -0
- /package/{build → dist}/obsidian/errors.js +0 -0
- /package/{build → dist}/obsidian/index.js +0 -0
- /package/{build → dist}/obsidian/types.js +0 -0
- /package/{build → dist}/resources/index.js +0 -0
- /package/{build → dist}/resources/tags.js +0 -0
- /package/{build → dist}/resources/types.js +0 -0
- /package/{build → dist}/tools/base.js +0 -0
- /package/{build → dist}/tools/files/content.js +0 -0
- /package/{build → dist}/tools/files/index.js +0 -0
- /package/{build → dist}/tools/files/list.js +0 -0
- /package/{build → dist}/tools/index.js +0 -0
- /package/{build → dist}/tools/properties/index.js +0 -0
- /package/{build → dist}/tools/properties/manager.js +0 -0
- /package/{build → dist}/tools/properties/tools.js +0 -0
- /package/{build → dist}/tools/properties/types.js +0 -0
- /package/{build → dist}/tools/search/complex.js +0 -0
- /package/{build → dist}/tools/search/index.js +0 -0
- /package/{build → dist}/tools/search/simple.js +0 -0
- /package/{build → dist}/utils/errors.js +0 -0
- /package/{build → dist}/utils/idGenerator.js +0 -0
- /package/{src/utils/index.ts → dist/utils/index.d.ts} +0 -0
- /package/{build → dist}/utils/index.js +0 -0
- /package/{build → dist}/utils/logging.js +0 -0
- /package/{build → dist}/utils/rate-limiting.js +0 -0
- /package/{build → dist}/utils/tokenization.js +0 -0
- /package/{build → dist}/utils/validation.js +0 -0
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://www.typescriptlang.org/)
|
|
4
4
|
[](https://modelcontextprotocol.io/)
|
|
5
|
-
[](https://opensource.org/licenses/Apache-2.0)
|
|
6
6
|
[]()
|
|
7
7
|
[](https://github.com/cyanheads/obsidian-mcp-server)
|
|
8
8
|
|
|
@@ -10,55 +10,55 @@ A Model Context Protocol server designed for LLMs to interact with Obsidian vaul
|
|
|
10
10
|
|
|
11
11
|
The Model Context Protocol (MCP) enables AI models to interact with external tools and resources through a standardized interface.
|
|
12
12
|
|
|
13
|
-
Requires the Local REST API plugin in Obsidian.
|
|
13
|
+
Requires the [Local REST API plugin](https://github.com/coddingtonbear/obsidian-local-rest-api) in Obsidian.
|
|
14
14
|
|
|
15
|
-
##
|
|
15
|
+
## 📋 Table of Contents
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
[Features](#-features) | [Installation](#-installation) | [Configuration](#-configuration) |
|
|
18
|
+
[Tools](#-tools) | [Resources](#-resources) | [Project Structure](#-project-structure) |
|
|
19
|
+
[Contributing](#-contributing) | [Publishing](#-publishing) | [License](#-license)
|
|
18
20
|
|
|
19
|
-
|
|
20
|
-
- Resource monitoring and cleanup
|
|
21
|
-
- Error handling and graceful failure
|
|
21
|
+
## ✨ Features
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
- **File Operations**: Atomic file/directory operations with validation, resource monitoring, and error handling.
|
|
24
|
+
- **Search System**: Full-text search with configurable context, advanced JsonLogic queries, glob patterns, and frontmatter field support.
|
|
25
|
+
- **Property Management**: YAML frontmatter parsing, intelligent merging, automatic timestamps, and custom field support.
|
|
26
|
+
- **Security & Performance**: API key authentication, rate limiting, SSL options, resource monitoring, and graceful shutdown.
|
|
24
27
|
|
|
25
|
-
|
|
26
|
-
- Advanced JsonLogic queries for files, tags, and metadata
|
|
27
|
-
- Support for glob patterns and frontmatter fields
|
|
28
|
+
## 🚀 Installation
|
|
28
29
|
|
|
29
|
-
|
|
30
|
+
Note: Requires Node.js and the [Local REST API plugin](https://github.com/coddingtonbear/obsidian-local-rest-api) enabled in Obsidian.
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
- Automatic timestamps (created by Obsidian, modified by server)
|
|
33
|
-
- Custom field support
|
|
32
|
+
### Option 1: Clone and Build (for development or direct use)
|
|
34
33
|
|
|
35
|
-
|
|
34
|
+
1. Enable the Local REST API plugin in Obsidian.
|
|
35
|
+
2. Clone the repository, install dependencies, and build the project:
|
|
36
|
+
```bash
|
|
37
|
+
git clone git@github.com:cyanheads/obsidian-mcp-server.git
|
|
38
|
+
cd obsidian-mcp-server
|
|
39
|
+
npm install
|
|
40
|
+
npm run build
|
|
41
|
+
```
|
|
42
|
+
3. Configure the server using environment variables (see Configuration section below).
|
|
36
43
|
|
|
37
|
-
|
|
38
|
-
- Resource monitoring and health checks
|
|
39
|
-
- Graceful shutdown handling
|
|
44
|
+
4. Configure your MCP client settings (e.g., `claude_desktop_config.json` or `cline_mcp_settings.json`) to include the server. See the Configuration section for details.
|
|
40
45
|
|
|
41
|
-
|
|
46
|
+
### Option 2: Install via npm (as a dependency or globally)
|
|
42
47
|
|
|
43
|
-
|
|
48
|
+
1. Enable the Local REST API plugin in Obsidian.
|
|
49
|
+
2. Install the package using npm:
|
|
44
50
|
|
|
45
|
-
|
|
46
|
-
|
|
51
|
+
```bash
|
|
52
|
+
# Install locally (e.g., within another project)
|
|
53
|
+
npm install obsidian-mcp-server
|
|
47
54
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
npm install
|
|
52
|
-
npm run build
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
Or install from npm:
|
|
55
|
+
# Or install globally
|
|
56
|
+
npm install -g obsidian-mcp-server
|
|
57
|
+
```
|
|
56
58
|
|
|
57
|
-
|
|
58
|
-
npm install obsidian-mcp-server
|
|
59
|
-
```
|
|
59
|
+
3. Configure your MCP client settings (e.g., `claude_desktop_config.json` or `cline_mcp_settings.json`) to include the server. See the Configuration section for details.
|
|
60
60
|
|
|
61
|
-
## Configuration
|
|
61
|
+
## ⚙️ Configuration
|
|
62
62
|
|
|
63
63
|
Add to your MCP client settings (e.g., `claude_desktop_config.json` or `cline_mcp_settings.json`):
|
|
64
64
|
|
|
@@ -67,7 +67,7 @@ Add to your MCP client settings (e.g., `claude_desktop_config.json` or `cline_mc
|
|
|
67
67
|
"mcpServers": {
|
|
68
68
|
"obsidian-mcp-server": {
|
|
69
69
|
"command": "node",
|
|
70
|
-
"args": ["/path/to/obsidian-mcp-server/
|
|
70
|
+
"args": ["/path/to/obsidian-mcp-server/dist/index.js"],
|
|
71
71
|
"env": {
|
|
72
72
|
"OBSIDIAN_API_KEY": "your_api_key_here",
|
|
73
73
|
"VERIFY_SSL": "false",
|
|
@@ -86,35 +86,42 @@ Add to your MCP client settings (e.g., `claude_desktop_config.json` or `cline_mc
|
|
|
86
86
|
}
|
|
87
87
|
```
|
|
88
88
|
|
|
89
|
-
Environment Variables
|
|
90
|
-
|
|
91
|
-
Required:
|
|
92
|
-
|
|
93
|
-
- `
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
- `
|
|
98
|
-
- `
|
|
99
|
-
- `
|
|
100
|
-
- `
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
89
|
+
**Environment Variables:**
|
|
90
|
+
|
|
91
|
+
- `OBSIDIAN_API_KEY` (Required): Your API key from Obsidian's Local REST API plugin settings.
|
|
92
|
+
- `VERIFY_SSL` (Default: `false`): Enable SSL verification. Set to `false` for self-signed certificates or local use.
|
|
93
|
+
- `OBSIDIAN_PROTOCOL` (Default: `"https"`): Protocol (`http` or `https`).
|
|
94
|
+
- `OBSIDIAN_HOST` (Default: `"127.0.0.1"`): Host address.
|
|
95
|
+
- `OBSIDIAN_PORT` (Default: `27124`): Port number.
|
|
96
|
+
- `REQUEST_TIMEOUT` (Default: `5000`): Request timeout (ms).
|
|
97
|
+
- `MAX_CONTENT_LENGTH` (Default: `52428800` [50MB]): Max response content length (bytes).
|
|
98
|
+
- `MAX_BODY_LENGTH` (Default: `52428800` [50MB]): Max request body length (bytes).
|
|
99
|
+
- `RATE_LIMIT_WINDOW_MS` (Default: `900000` [15 min]): Rate limit window (ms).
|
|
100
|
+
- `RATE_LIMIT_MAX_REQUESTS` (Default: `200`): Max requests per window.
|
|
101
|
+
- `TOOL_TIMEOUT_MS` (Default: `60000` [1 min]): Tool execution timeout (ms).
|
|
102
|
+
|
|
103
|
+
## 🛠️ Tools
|
|
104
|
+
|
|
105
|
+
| Tool | Description | Parameters |
|
|
106
|
+
| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
107
|
+
| **obsidian_list_files_in_vault** | Lists all files and directories within the root of your Obsidian vault. Returns a hierarchical structure detailing files, folders, and their types. | None |
|
|
108
|
+
| **obsidian_list_files_in_dir** | Lists files and directories within a specific folder in your Obsidian vault. Returns a hierarchical structure. Note: Empty directories may not be included in the results. Useful for exploring vault organization. | `dirpath*`: Path to list files from (relative to vault root). Note that empty directories will not be returned. |
|
|
109
|
+
| **obsidian_get_file_contents** | Retrieves the full content of a specified file within your Obsidian vault. Supports various readable file formats. | `filepath*`: Path to the relevant file (relative to your vault root). |
|
|
110
|
+
| **obsidian_append_content** | Appends the provided content to the end of a specified file in the vault. If the file does not exist, it will be created. | `filepath*`: Path to the file (relative to vault root)<br>`content*`: Content to append to the file |
|
|
111
|
+
| **obsidian_update_content** | Overwrites the entire content of a specified file in the vault with the provided content. If the file does not exist, it will be created. | `filepath*`: Path to the file (relative to vault root)<br>`content*`: The new, complete content for the file (overwrites existing content). |
|
|
112
|
+
| **obsidian_find_in_file** | Performs a full-text search across all files in your Obsidian vault. Returns matching files with context around each match. If more than 5 files match, only filenames and match counts are returned to avoid excessive output. Ideal for locating specific text, tags, or patterns. | `query*`: Text pattern to search for. Can include tags, keywords, or phrases.<br>`contextLength`: Number of characters surrounding each match to provide context (default: 10). |
|
|
113
|
+
| **obsidian_complex_search** | Finds files based on path patterns using JsonLogic queries. Primarily supports `glob` for pattern matching (e.g., '\*.md') and `var` for accessing the 'path' variable. Note: For content-based searches (full-text, tags within content, dates), use `obsidian_find_in_file`. | `query*`: A JsonLogic query object targeting file paths. Example: `{"glob": ["*.md", {"var": "path"}]}` matches all markdown files. |
|
|
114
|
+
| **obsidian_get_tags** | Retrieves all tags defined in the YAML frontmatter of markdown files within your Obsidian vault, along with their usage counts and associated file paths. Optionally, limit the search to a specific folder. | `path`: Optional folder path (relative to vault root) to restrict the tag search. |
|
|
115
|
+
| **obsidian_get_properties** | Retrieves properties (like title, tags, status) from the YAML frontmatter of a specified Obsidian note. Returns all defined properties, including any custom fields. | `filepath*`: Path to the note file (relative to vault root) |
|
|
116
|
+
| **obsidian_update_properties** | Updates properties within the YAML frontmatter of a specified Obsidian note. By default, array properties (like tags, type, status) are merged; use the 'replace' option to overwrite them instead. Handles custom fields and manages timestamps automatically. See schema for supported standard fields (title, author, tags, status, etc.). | `filepath*`: Path to the note file (relative to vault root)<br>`properties*`: Properties to update<br>`replace`: If true, array properties (like tags, status) will be completely replaced with the provided values instead of being merged with existing values. Defaults to false (merge). |
|
|
117
|
+
|
|
118
|
+
## 🔗 Resources
|
|
119
|
+
|
|
120
|
+
| Resource | Description | Returns |
|
|
121
|
+
| ------------------- | ----------------------------------------------------------------------- | ---------------- |
|
|
122
|
+
| **obsidian://tags** | List of all tags used across the Obsidian vault with their usage counts | application/json |
|
|
123
|
+
|
|
124
|
+
## 📁 Project Structure
|
|
118
125
|
|
|
119
126
|
The project follows a modular architecture with clear separation of concerns:
|
|
120
127
|
|
|
@@ -131,140 +138,7 @@ src/
|
|
|
131
138
|
└── utils/ # Shared utilities
|
|
132
139
|
```
|
|
133
140
|
|
|
134
|
-
##
|
|
135
|
-
|
|
136
|
-
### File Management
|
|
137
|
-
|
|
138
|
-
```typescript
|
|
139
|
-
// List vault contents
|
|
140
|
-
obsidian_list_files_in_vault: {
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
// List directory contents
|
|
144
|
-
obsidian_list_files_in_dir: {
|
|
145
|
-
dirpath: string; // Path relative to vault root
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
// Get file contents
|
|
149
|
-
obsidian_get_file_contents: {
|
|
150
|
-
filepath: string; // Path relative to vault root
|
|
151
|
-
}
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
### Search Operations
|
|
155
|
-
|
|
156
|
-
```typescript
|
|
157
|
-
// Text search with context
|
|
158
|
-
obsidian_find_in_file: {
|
|
159
|
-
query: string,
|
|
160
|
-
contextLength?: number // Default: 10
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
// Advanced search with JsonLogic
|
|
164
|
-
obsidian_complex_search: {
|
|
165
|
-
query: JsonLogicQuery
|
|
166
|
-
// Examples:
|
|
167
|
-
// Find by tag:
|
|
168
|
-
// {"in": ["#mytag", {"var": "frontmatter.tags"}]}
|
|
169
|
-
//
|
|
170
|
-
// Find markdown files in a directory:
|
|
171
|
-
// {"glob": ["docs/*.md", {"var": "path"}]}
|
|
172
|
-
//
|
|
173
|
-
// Combine conditions:
|
|
174
|
-
// {"and": [
|
|
175
|
-
// {"glob": ["*.md", {"var": "path"}]},
|
|
176
|
-
// {"in": ["#mytag", {"var": "frontmatter.tags"}]}
|
|
177
|
-
// ]}
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
// Get all tags in vault or directory
|
|
181
|
-
obsidian_get_tags: {
|
|
182
|
-
path?: string // Optional: limit to specific directory
|
|
183
|
-
}
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
### Content Modification
|
|
187
|
-
|
|
188
|
-
```typescript
|
|
189
|
-
// Append to file
|
|
190
|
-
obsidian_append_content: {
|
|
191
|
-
filepath: string, // Path relative to vault root
|
|
192
|
-
content: string // Content to append
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
// Update file content
|
|
196
|
-
obsidian_patch_content: {
|
|
197
|
-
filepath: string, // Path relative to vault root
|
|
198
|
-
content: string // New content (replaces existing)
|
|
199
|
-
}
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
### Property Management
|
|
203
|
-
|
|
204
|
-
```typescript
|
|
205
|
-
// Get note properties
|
|
206
|
-
obsidian_get_properties: {
|
|
207
|
-
filepath: string // Path relative to vault root
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
// Update note properties
|
|
211
|
-
obsidian_update_properties: {
|
|
212
|
-
filepath: string, // Path relative to vault root
|
|
213
|
-
properties: {
|
|
214
|
-
title?: string,
|
|
215
|
-
author?: string,
|
|
216
|
-
// Note: created/modified timestamps are managed automatically
|
|
217
|
-
type?: Array<"concept" | "architecture" | "specification" |
|
|
218
|
-
"protocol" | "api" | "research" | "implementation" |
|
|
219
|
-
"guide" | "reference">,
|
|
220
|
-
tags?: string[], // Must start with #
|
|
221
|
-
status?: Array<"draft" | "in-progress" | "review" | "complete">,
|
|
222
|
-
version?: string,
|
|
223
|
-
platform?: string,
|
|
224
|
-
repository?: string, // URL
|
|
225
|
-
dependencies?: string[],
|
|
226
|
-
sources?: string[],
|
|
227
|
-
urls?: string[], // URLs
|
|
228
|
-
papers?: string[],
|
|
229
|
-
custom?: Record<string, unknown>
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
## Best Practices
|
|
235
|
-
|
|
236
|
-
### File Operations
|
|
237
|
-
|
|
238
|
-
- Use atomic operations with validation
|
|
239
|
-
- Handle errors and monitor performance
|
|
240
|
-
|
|
241
|
-
### Search Implementation
|
|
242
|
-
|
|
243
|
-
- Use appropriate search tool for the task:
|
|
244
|
-
- obsidian_find_in_file for text search
|
|
245
|
-
- obsidian_complex_search for metadata/tag filtering
|
|
246
|
-
- Keep context size reasonable (default: 10 chars)
|
|
247
|
-
|
|
248
|
-
### Property Management
|
|
249
|
-
|
|
250
|
-
- Use appropriate types and validate updates
|
|
251
|
-
- Handle arrays and custom fields properly
|
|
252
|
-
- Never set timestamps (managed automatically)
|
|
253
|
-
|
|
254
|
-
### Error Prevention
|
|
255
|
-
|
|
256
|
-
- Validate inputs and handle errors gracefully
|
|
257
|
-
- Monitor patterns and respect rate limits
|
|
258
|
-
|
|
259
|
-
## Resources
|
|
260
|
-
|
|
261
|
-
The MCP server exposes the following resources:
|
|
262
|
-
|
|
263
|
-
```
|
|
264
|
-
obsidian://tags # List of all tags used across the vault
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
## Contributing
|
|
141
|
+
## 👥 Contributing
|
|
268
142
|
|
|
269
143
|
1. Fork the repository
|
|
270
144
|
2. Create a feature branch
|
|
@@ -272,19 +146,9 @@ obsidian://tags # List of all tags used across the vault
|
|
|
272
146
|
|
|
273
147
|
For bugs and features, create an issue at [https://github.com/cyanheads/obsidian-mcp-server/issues](https://github.com/cyanheads/obsidian-mcp-server/issues).
|
|
274
148
|
|
|
275
|
-
##
|
|
276
|
-
|
|
277
|
-
The package is automatically published to npm when version tags are pushed:
|
|
278
|
-
|
|
279
|
-
```bash
|
|
280
|
-
# Update version in package.json
|
|
281
|
-
npm version patch # or minor, or major
|
|
282
|
-
git push --follow-tags
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
This will trigger the GitHub Action to build and publish the package.
|
|
149
|
+
## 📄 License
|
|
286
150
|
|
|
287
|
-
|
|
151
|
+
[](https://opensource.org/licenses/Apache-2.0)
|
|
288
152
|
|
|
289
153
|
Apache License 2.0
|
|
290
154
|
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,2CAA2C;AAC3C,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AAEpC,mBAAmB;AACnB,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC5C,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACpB,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,sDAAsD;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP server request handlers
|
|
3
|
+
*/
|
|
4
|
+
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
5
|
+
import { BaseToolHandler } from "../tools/base.js";
|
|
6
|
+
/**
|
|
7
|
+
* Set up tool listing handler
|
|
8
|
+
* @param server The MCP server instance
|
|
9
|
+
* @param toolHandlers The tool handlers to register
|
|
10
|
+
*/
|
|
11
|
+
export declare function setupToolListingHandler(server: Server, toolHandlers: Map<string, BaseToolHandler<any>>): void;
|
|
12
|
+
/**
|
|
13
|
+
* Set up tool calling handler
|
|
14
|
+
* @param server The MCP server instance
|
|
15
|
+
* @param toolHandlers The tool handlers to register
|
|
16
|
+
*/
|
|
17
|
+
export declare function setupToolCallingHandler(server: Server, toolHandlers: Map<string, BaseToolHandler<any>>): void;
|
|
18
|
+
/**
|
|
19
|
+
* Set up resource listing handler
|
|
20
|
+
* @param server The MCP server instance
|
|
21
|
+
* @param resources The resources to register
|
|
22
|
+
*/
|
|
23
|
+
export declare function setupResourceListingHandler(server: Server, resources: Record<string, any>): void;
|
|
24
|
+
/**
|
|
25
|
+
* Set up resource reading handler
|
|
26
|
+
* @param server The MCP server instance
|
|
27
|
+
* @param resources The resources to register
|
|
28
|
+
*/
|
|
29
|
+
export declare function setupResourceReadingHandler(server: Server, resources: Record<string, any>): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/mcp/handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP server implementation
|
|
3
|
+
*/
|
|
4
|
+
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
5
|
+
/**
|
|
6
|
+
* Initialize MCP server components
|
|
7
|
+
*/
|
|
8
|
+
export declare function initializeServer(): Promise<Server>;
|
|
9
|
+
/**
|
|
10
|
+
* Set up graceful shutdown handling
|
|
11
|
+
* @param server The MCP server instance
|
|
12
|
+
* @param cleanupHandlers Additional cleanup handlers to run on shutdown
|
|
13
|
+
*/
|
|
14
|
+
export declare function setupShutdownHandling(server: Server, cleanupHandlers?: (() => Promise<void> | void)[]): void;
|
|
15
|
+
/**
|
|
16
|
+
* Run the MCP server
|
|
17
|
+
*/
|
|
18
|
+
export declare function run(): Promise<void>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
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;
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
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
|
+
}
|