obsidian-mcp-server 3.5.1 → 3.5.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/AGENTS.md +7 -6
- package/CLAUDE.md +7 -6
- package/README.md +7 -5
- package/changelog/3.5.x/3.5.2.md +27 -0
- package/dist/mcp-server/resources/definitions/index.d.ts +5 -0
- package/dist/mcp-server/resources/definitions/index.d.ts.map +1 -1
- package/dist/mcp-server/resources/definitions/obsidian-status.resource.d.ts +11 -4
- package/dist/mcp-server/resources/definitions/obsidian-status.resource.d.ts.map +1 -1
- package/dist/mcp-server/resources/definitions/obsidian-status.resource.js +21 -12
- package/dist/mcp-server/resources/definitions/obsidian-status.resource.js.map +1 -1
- package/dist/mcp-server/tools/definitions/index.d.ts +88 -39
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.d.ts +6 -1
- package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.js +7 -1
- package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.d.ts +6 -1
- package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.js +7 -1
- package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.d.ts +11 -2
- package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.js +41 -15
- package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.d.ts +8 -3
- package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.js +12 -5
- package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.d.ts +6 -1
- package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.js +7 -1
- package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.d.ts +8 -3
- package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.js +10 -4
- package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.d.ts +6 -1
- package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.js +7 -1
- package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.d.ts +6 -1
- package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.js +7 -1
- package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.d.ts +6 -1
- package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.js +7 -1
- package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.js.map +1 -1
- package/dist/services/obsidian/frontmatter-ops.d.ts +9 -5
- package/dist/services/obsidian/frontmatter-ops.d.ts.map +1 -1
- package/dist/services/obsidian/frontmatter-ops.js +70 -16
- package/dist/services/obsidian/frontmatter-ops.js.map +1 -1
- package/dist/services/obsidian/obsidian-service.d.ts +10 -7
- package/dist/services/obsidian/obsidian-service.d.ts.map +1 -1
- package/dist/services/obsidian/obsidian-service.js +179 -31
- package/dist/services/obsidian/obsidian-service.js.map +1 -1
- package/dist/services/obsidian/section-extractor.d.ts +17 -1
- package/dist/services/obsidian/section-extractor.d.ts.map +1 -1
- package/dist/services/obsidian/section-extractor.js +109 -40
- package/dist/services/obsidian/section-extractor.js.map +1 -1
- package/dist/services/obsidian/types.d.ts +17 -0
- package/dist/services/obsidian/types.d.ts.map +1 -1
- package/manifest.json +1 -1
- package/package.json +7 -7
- package/server.json +3 -3
|
@@ -5,6 +5,9 @@
|
|
|
5
5
|
* @module services/obsidian/section-extractor
|
|
6
6
|
*/
|
|
7
7
|
import { notFound } from '@cyanheads/mcp-ts-core/errors';
|
|
8
|
+
import { splice } from './frontmatter-ops.js';
|
|
9
|
+
/** Delimiter joining a heading path, matching upstream's PATCH `Target-Delimiter`. */
|
|
10
|
+
const HEADING_DELIMITER = '::';
|
|
8
11
|
/**
|
|
9
12
|
* Extract a section's raw markdown (heading/block) or JSON value (frontmatter).
|
|
10
13
|
* Throws `NotFound` if the target does not exist in the note.
|
|
@@ -12,11 +15,11 @@ import { notFound } from '@cyanheads/mcp-ts-core/errors';
|
|
|
12
15
|
export function extractSection(note, section) {
|
|
13
16
|
switch (section.type) {
|
|
14
17
|
case 'frontmatter':
|
|
15
|
-
return extractFrontmatterField(note, section.target);
|
|
18
|
+
return { value: extractFrontmatterField(note, section.target) };
|
|
16
19
|
case 'heading':
|
|
17
20
|
return extractHeading(note.content, section.target);
|
|
18
21
|
case 'block':
|
|
19
|
-
return extractBlock(note.content, section.target);
|
|
22
|
+
return { value: extractBlock(note.content, section.target) };
|
|
20
23
|
}
|
|
21
24
|
}
|
|
22
25
|
function extractFrontmatterField(note, key) {
|
|
@@ -28,63 +31,120 @@ function extractFrontmatterField(note, key) {
|
|
|
28
31
|
}
|
|
29
32
|
return note.frontmatter[key];
|
|
30
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Collect every ATX heading in the note body, in document order. Setext
|
|
36
|
+
* headings are not markdown this extractor recognizes, and lines inside a
|
|
37
|
+
* fenced code block or a frontmatter block are excluded.
|
|
38
|
+
*/
|
|
39
|
+
function scanHeadings(lines, bodyStart, inFence) {
|
|
40
|
+
const headings = [];
|
|
41
|
+
for (let i = bodyStart; i < lines.length; i++) {
|
|
42
|
+
if (inFence[i])
|
|
43
|
+
continue;
|
|
44
|
+
const m = /^(#{1,6})\s+(.*?)\s*$/.exec(lines[i] ?? '');
|
|
45
|
+
if (!m)
|
|
46
|
+
continue;
|
|
47
|
+
headings.push({ index: i, level: (m[1] ?? '').length, text: (m[2] ?? '').trim() });
|
|
48
|
+
}
|
|
49
|
+
return headings;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Build the full `Parent::Child` path of one heading by walking backward
|
|
53
|
+
* through the enclosing headings — each ancestor is the nearest preceding
|
|
54
|
+
* heading strictly shallower than the level reached so far. This is the same
|
|
55
|
+
* serialization upstream's document map emits (trimmed heading text, joined by
|
|
56
|
+
* the PATCH target delimiter), so a path built here is a locator the write path
|
|
57
|
+
* resolves as an exact map entry.
|
|
58
|
+
*/
|
|
59
|
+
function headingPath(headings, idx) {
|
|
60
|
+
const matched = headings[idx];
|
|
61
|
+
if (!matched)
|
|
62
|
+
return '';
|
|
63
|
+
const segments = [matched.text];
|
|
64
|
+
let level = matched.level;
|
|
65
|
+
for (let i = idx - 1; i >= 0 && level > 1; i--) {
|
|
66
|
+
const ancestor = headings[i];
|
|
67
|
+
if (ancestor && ancestor.level < level) {
|
|
68
|
+
segments.unshift(ancestor.text);
|
|
69
|
+
level = ancestor.level;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return segments.join(HEADING_DELIMITER);
|
|
73
|
+
}
|
|
31
74
|
/**
|
|
32
75
|
* Match a heading by "::"-delimited hierarchy. "Top::Sub" walks to a level-N
|
|
33
|
-
* heading "Top" and then a deeper heading "Sub" beneath it.
|
|
76
|
+
* heading "Top" and then a deeper heading "Sub" beneath it. A single-segment
|
|
77
|
+
* target matches a leaf at any depth and resolves to the first such heading —
|
|
78
|
+
* the resolution is reported back in `sectionTarget`, and competing headings in
|
|
79
|
+
* `candidates`, rather than changing which one wins.
|
|
80
|
+
*
|
|
81
|
+
* A target that already carries the delimiter is left out of collision
|
|
82
|
+
* detection, mirroring the write-side resolver's own short-circuit: the walk is
|
|
83
|
+
* scoped to the first matching ancestor and never inspects a repeat of it.
|
|
34
84
|
*/
|
|
35
85
|
function extractHeading(content, target) {
|
|
36
86
|
const parts = target
|
|
37
|
-
.split(
|
|
87
|
+
.split(HEADING_DELIMITER)
|
|
38
88
|
.map((p) => p.trim())
|
|
39
89
|
.filter(Boolean);
|
|
40
90
|
if (parts.length === 0) {
|
|
41
91
|
throw notFound('Empty heading target.', { target });
|
|
42
92
|
}
|
|
43
93
|
const lines = content.split('\n');
|
|
44
|
-
const bodyStart = frontmatterEndLine(
|
|
94
|
+
const bodyStart = frontmatterEndLine(content);
|
|
45
95
|
const inFence = computeFenceMask(lines, bodyStart);
|
|
46
|
-
|
|
96
|
+
const headings = scanHeadings(lines, bodyStart, inFence);
|
|
97
|
+
let cursor = 0;
|
|
47
98
|
let parentLevel = 0;
|
|
99
|
+
let matched = -1;
|
|
48
100
|
for (const part of parts) {
|
|
49
101
|
let found = -1;
|
|
50
|
-
let
|
|
51
|
-
|
|
52
|
-
if (
|
|
102
|
+
for (let i = cursor; i < headings.length; i++) {
|
|
103
|
+
const heading = headings[i];
|
|
104
|
+
if (!heading)
|
|
53
105
|
continue;
|
|
54
|
-
|
|
55
|
-
if (!m)
|
|
56
|
-
continue;
|
|
57
|
-
const level = (m[1] ?? '').length;
|
|
58
|
-
const text = (m[2] ?? '').trim();
|
|
59
|
-
if (parentLevel > 0 && level <= parentLevel) {
|
|
106
|
+
if (parentLevel > 0 && heading.level <= parentLevel) {
|
|
60
107
|
// exited the parent; stop searching deeper for this part
|
|
61
108
|
break;
|
|
62
109
|
}
|
|
63
|
-
if (text === part
|
|
110
|
+
if (heading.text === part) {
|
|
64
111
|
found = i;
|
|
65
|
-
foundLevel = level;
|
|
66
112
|
break;
|
|
67
113
|
}
|
|
68
114
|
}
|
|
69
|
-
|
|
115
|
+
const hit = headings[found];
|
|
116
|
+
if (!hit) {
|
|
70
117
|
throw notFound(`Heading '${target}' not found.`, { target });
|
|
71
118
|
}
|
|
119
|
+
matched = found;
|
|
72
120
|
cursor = found + 1;
|
|
73
|
-
parentLevel =
|
|
121
|
+
parentLevel = hit.level;
|
|
74
122
|
}
|
|
75
123
|
// Slice from the matched heading line to the next heading at the same or shallower level.
|
|
76
|
-
const startLine =
|
|
124
|
+
const startLine = headings[matched]?.index ?? 0;
|
|
77
125
|
let endLine = lines.length;
|
|
78
|
-
for (let i =
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
if (m && (m[1] ?? '').length <= parentLevel) {
|
|
83
|
-
endLine = i;
|
|
126
|
+
for (let i = matched + 1; i < headings.length; i++) {
|
|
127
|
+
const heading = headings[i];
|
|
128
|
+
if (heading && heading.level <= parentLevel) {
|
|
129
|
+
endLine = heading.index;
|
|
84
130
|
break;
|
|
85
131
|
}
|
|
86
132
|
}
|
|
87
|
-
|
|
133
|
+
const leaf = parts.length === 1 ? parts[0] : undefined;
|
|
134
|
+
const collisions = [];
|
|
135
|
+
if (leaf !== undefined) {
|
|
136
|
+
headings.forEach((h, i) => {
|
|
137
|
+
if (h.text === leaf)
|
|
138
|
+
collisions.push(i);
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
return {
|
|
142
|
+
value: lines.slice(startLine, endLine).join('\n').replace(/\n+$/, ''),
|
|
143
|
+
sectionTarget: headingPath(headings, matched),
|
|
144
|
+
...(collisions.length > 1
|
|
145
|
+
? { candidates: collisions.map((i) => headingPath(headings, i)) }
|
|
146
|
+
: {}),
|
|
147
|
+
};
|
|
88
148
|
}
|
|
89
149
|
/**
|
|
90
150
|
* Match a block by its `^blockId` reference. Returns the line containing the
|
|
@@ -93,7 +153,7 @@ function extractHeading(content, target) {
|
|
|
93
153
|
*/
|
|
94
154
|
function extractBlock(content, blockId) {
|
|
95
155
|
const lines = content.split('\n');
|
|
96
|
-
const bodyStart = frontmatterEndLine(
|
|
156
|
+
const bodyStart = frontmatterEndLine(content);
|
|
97
157
|
const inFence = computeFenceMask(lines, bodyStart);
|
|
98
158
|
const escaped = blockId.replace(/[\\^$.*+?()[\]{}|]/g, '\\$&');
|
|
99
159
|
const ref = new RegExp(`(^|\\s)\\^${escaped}\\s*$`);
|
|
@@ -114,20 +174,29 @@ function extractBlock(content, blockId) {
|
|
|
114
174
|
throw notFound(`Block reference '^${blockId}' not found.`, { blockId });
|
|
115
175
|
}
|
|
116
176
|
/**
|
|
117
|
-
* Return the line index where the document body starts, skipping a leading
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
177
|
+
* Return the line index where the document body starts, skipping a leading YAML
|
|
178
|
+
* frontmatter block. Returns 0 when no frontmatter is present. Without this
|
|
179
|
+
* guard, heading and block extraction would scan inside the frontmatter and
|
|
180
|
+
* falsely match YAML comment lines or include the fence in a paragraph
|
|
181
|
+
* walk-back.
|
|
182
|
+
*
|
|
183
|
+
* The boundary comes from `splice` rather than a second line scan, so the read
|
|
184
|
+
* path and every body-scoped write path agree on where the body starts —
|
|
185
|
+
* notably on an opening fence carrying trailing whitespace, which Obsidian
|
|
186
|
+
* reads as body and a lenient `/^---\s*$/` scan hid behind a fence that isn't
|
|
187
|
+
* one.
|
|
122
188
|
*/
|
|
123
|
-
function frontmatterEndLine(
|
|
124
|
-
|
|
189
|
+
function frontmatterEndLine(content) {
|
|
190
|
+
const { hasFrontmatter, raw } = splice(content);
|
|
191
|
+
if (!hasFrontmatter)
|
|
125
192
|
return 0;
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
193
|
+
/**
|
|
194
|
+
* `content === raw + body`, so the newlines inside `raw` count the lines it
|
|
195
|
+
* owns. A `raw` that ends mid-line shares that line with the body's first
|
|
196
|
+
* bytes; skip it rather than scan a line the fence starts.
|
|
197
|
+
*/
|
|
198
|
+
const consumed = raw.split('\n').length - 1;
|
|
199
|
+
return raw.endsWith('\n') ? consumed : consumed + 1;
|
|
131
200
|
}
|
|
132
201
|
/**
|
|
133
202
|
* Mark line indices that fall inside fenced code blocks (` ``` ` or `~~~`) so
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"section-extractor.js","sourceRoot":"","sources":["../../../src/services/obsidian/section-extractor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"section-extractor.js","sourceRoot":"","sources":["../../../src/services/obsidian/section-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,7 +40,24 @@ export interface DocumentMap {
|
|
|
40
40
|
export interface FileListing {
|
|
41
41
|
files: string[];
|
|
42
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* A Local REST API extension registered against the plugin. Reported only on
|
|
45
|
+
* an authenticated `GET /`, and trimmed here to the identity trio — upstream
|
|
46
|
+
* sends the extension's whole plugin manifest plus its `routes` and
|
|
47
|
+
* `mcpTools`, none of which a capability check or a calling agent reads.
|
|
48
|
+
*/
|
|
49
|
+
export interface ApiExtension {
|
|
50
|
+
id: string;
|
|
51
|
+
name?: string | undefined;
|
|
52
|
+
version?: string | undefined;
|
|
53
|
+
}
|
|
43
54
|
export interface VaultStatus {
|
|
55
|
+
/**
|
|
56
|
+
* Registered API extensions. Absent when the plugin did not report them —
|
|
57
|
+
* an unauthenticated read, or a build predating the extension mechanism —
|
|
58
|
+
* which is distinct from an empty array meaning "none registered".
|
|
59
|
+
*/
|
|
60
|
+
apiExtensions?: ApiExtension[] | undefined;
|
|
44
61
|
authenticated: boolean;
|
|
45
62
|
manifest?: {
|
|
46
63
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/obsidian/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/obsidian/types.ts"],"names":[],"mappings":"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"}
|
package/manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifest_version": "0.3",
|
|
3
3
|
"name": "obsidian-mcp-server",
|
|
4
|
-
"version": "3.5.
|
|
4
|
+
"version": "3.5.2",
|
|
5
5
|
"description": "Read, write, search, and surgically edit Obsidian vault notes, tags, and frontmatter via MCP. STDIO or Streamable HTTP.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "cyanheads",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "obsidian-mcp-server",
|
|
3
|
-
"version": "3.5.
|
|
3
|
+
"version": "3.5.2",
|
|
4
4
|
"mcpName": "io.github.cyanheads/obsidian-mcp-server",
|
|
5
5
|
"description": "Read, write, search, and surgically edit Obsidian vault notes, tags, and frontmatter via MCP. STDIO or Streamable HTTP.",
|
|
6
6
|
"type": "module",
|
|
@@ -85,21 +85,21 @@
|
|
|
85
85
|
"access": "public"
|
|
86
86
|
},
|
|
87
87
|
"dependencies": {
|
|
88
|
-
"@cyanheads/mcp-ts-core": "^0.12.
|
|
88
|
+
"@cyanheads/mcp-ts-core": "^0.12.8",
|
|
89
89
|
"js-yaml": "^5.4.1",
|
|
90
90
|
"pino-pretty": "^13.1.3",
|
|
91
|
-
"undici": "^8.10.
|
|
91
|
+
"undici": "^8.10.2",
|
|
92
92
|
"yaml": "^2.9.0",
|
|
93
93
|
"zod": "^4.5.4"
|
|
94
94
|
},
|
|
95
95
|
"devDependencies": {
|
|
96
|
-
"@biomejs/biome": "^2.5.
|
|
96
|
+
"@biomejs/biome": "^2.5.12",
|
|
97
97
|
"@socketsecurity/bun-security-scanner": "^1.1.2",
|
|
98
|
-
"@types/node": "^26.4.
|
|
98
|
+
"@types/node": "^26.4.1",
|
|
99
99
|
"depcheck": "^1.4.7",
|
|
100
100
|
"ignore": "^7.0.8",
|
|
101
|
-
"tsc-alias": "^1.9.
|
|
101
|
+
"tsc-alias": "^1.9.4",
|
|
102
102
|
"typescript": "^7.0.2",
|
|
103
|
-
"vitest": "^
|
|
103
|
+
"vitest": "^5.0.0"
|
|
104
104
|
}
|
|
105
105
|
}
|
package/server.json
CHANGED
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
"url": "https://github.com/cyanheads/obsidian-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "3.5.
|
|
9
|
+
"version": "3.5.2",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
14
14
|
"identifier": "obsidian-mcp-server",
|
|
15
15
|
"runtimeHint": "node",
|
|
16
|
-
"version": "3.5.
|
|
16
|
+
"version": "3.5.2",
|
|
17
17
|
"packageArguments": [
|
|
18
18
|
{
|
|
19
19
|
"type": "positional",
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
102
102
|
"identifier": "obsidian-mcp-server",
|
|
103
103
|
"runtimeHint": "node",
|
|
104
|
-
"version": "3.5.
|
|
104
|
+
"version": "3.5.2",
|
|
105
105
|
"packageArguments": [
|
|
106
106
|
{
|
|
107
107
|
"type": "positional",
|