obsidian-mcp-server 3.1.1 → 3.1.3
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/CLAUDE.md +10 -1
- package/README.md +30 -8
- package/changelog/3.1.x/3.1.2.md +23 -0
- package/changelog/3.1.x/3.1.3.md +23 -0
- package/dist/config/server-config.d.ts +5 -2
- package/dist/config/server-config.d.ts.map +1 -1
- package/dist/config/server-config.js +73 -0
- package/dist/config/server-config.js.map +1 -1
- package/dist/index.js +39 -5
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/tools/definitions/_shared/schemas.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/_shared/schemas.js +4 -2
- package/dist/mcp-server/tools/definitions/_shared/schemas.js.map +1 -1
- package/dist/mcp-server/tools/definitions/index.d.ts +764 -27
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/index.js +15 -9
- package/dist/mcp-server/tools/definitions/index.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.d.ts +7 -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 +10 -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 +7 -2
- 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 +8 -2
- package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-execute-command.tool.js +2 -2
- package/dist/mcp-server/tools/definitions/obsidian-execute-command.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.d.ts +15 -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 +65 -5
- 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 +7 -2
- 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 +20 -7
- package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-list-tags.tool.js +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-list-tags.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.d.ts +7 -2
- 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 +10 -4
- 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 +7 -2
- 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 +9 -3
- package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-open-in-ui.tool.d.ts +5 -0
- package/dist/mcp-server/tools/definitions/obsidian-open-in-ui.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-open-in-ui.tool.js +6 -0
- package/dist/mcp-server/tools/definitions/obsidian-open-in-ui.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.d.ts +9 -4
- 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 +10 -4
- 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 +8 -3
- 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 +10 -4
- package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.d.ts +2 -2
- package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.js +21 -16
- package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.d.ts +5 -0
- 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/obsidian-service.d.ts +7 -0
- package/dist/services/obsidian/obsidian-service.d.ts.map +1 -1
- package/dist/services/obsidian/obsidian-service.js +114 -17
- package/dist/services/obsidian/obsidian-service.js.map +1 -1
- package/dist/services/obsidian/path-policy.d.ts +56 -0
- package/dist/services/obsidian/path-policy.d.ts.map +1 -0
- package/dist/services/obsidian/path-policy.js +154 -0
- package/dist/services/obsidian/path-policy.js.map +1 -0
- package/package.json +17 -6
- package/server.json +41 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiBH,gFAAgF;AAChF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAM/B,CAAC;AAEF,kFAAkF;AAClF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAQhC,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAoD,CAAC;AAErF,mHAAmH;AACnH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;+CAAiD,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview Tool registration barrel.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* @fileoverview Tool registration barrel. Tools are split into read-only and
|
|
3
|
+
* write groups so the entry point can wrap the write set with `disabledTool()`
|
|
4
|
+
* when `OBSIDIAN_READ_ONLY=true`. The command-palette pair is exported
|
|
5
|
+
* separately so the entry point wraps it with `disabledTool()` when either
|
|
6
|
+
* `OBSIDIAN_ENABLE_COMMANDS=false` or `OBSIDIAN_READ_ONLY=true` — keeping this
|
|
7
|
+
* module free of eager config reads.
|
|
7
8
|
* @module mcp-server/tools/definitions/index
|
|
8
9
|
*/
|
|
9
10
|
import { obsidianAppendToNote } from './obsidian-append-to-note.tool.js';
|
|
@@ -20,12 +21,16 @@ import { obsidianPatchNote } from './obsidian-patch-note.tool.js';
|
|
|
20
21
|
import { obsidianReplaceInNote } from './obsidian-replace-in-note.tool.js';
|
|
21
22
|
import { obsidianSearchNotes } from './obsidian-search-notes.tool.js';
|
|
22
23
|
import { obsidianWriteNote } from './obsidian-write-note.tool.js';
|
|
23
|
-
/**
|
|
24
|
-
export const
|
|
24
|
+
/** Read-only tools — always registered, even with `OBSIDIAN_READ_ONLY=true`. */
|
|
25
|
+
export const readToolDefinitions = [
|
|
25
26
|
obsidianGetNote,
|
|
26
27
|
obsidianListNotes,
|
|
27
28
|
obsidianListTags,
|
|
28
29
|
obsidianSearchNotes,
|
|
30
|
+
obsidianOpenInUi,
|
|
31
|
+
];
|
|
32
|
+
/** Write tools — wrapped with `disabledTool()` when `OBSIDIAN_READ_ONLY=true`. */
|
|
33
|
+
export const writeToolDefinitions = [
|
|
29
34
|
obsidianWriteNote,
|
|
30
35
|
obsidianAppendToNote,
|
|
31
36
|
obsidianPatchNote,
|
|
@@ -33,8 +38,9 @@ export const baseToolDefinitions = [
|
|
|
33
38
|
obsidianManageFrontmatter,
|
|
34
39
|
obsidianManageTags,
|
|
35
40
|
obsidianDeleteNote,
|
|
36
|
-
obsidianOpenInUi,
|
|
37
41
|
];
|
|
38
|
-
/**
|
|
42
|
+
/** Combined base set — preserves the previous registration order. */
|
|
43
|
+
export const baseToolDefinitions = [...readToolDefinitions, ...writeToolDefinitions];
|
|
44
|
+
/** Command-palette tools — opt-in via `OBSIDIAN_ENABLE_COMMANDS=true`; suppressed by `OBSIDIAN_READ_ONLY=true`. */
|
|
39
45
|
export const commandToolDefinitions = [obsidianListCommands, obsidianExecuteCommand];
|
|
40
46
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,gFAAgF;AAChF,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,eAAe;IACf,iBAAiB;IACjB,gBAAgB;IAChB,mBAAmB;IACnB,gBAAgB;CACjB,CAAC;AAEF,kFAAkF;AAClF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,iBAAiB;IACjB,oBAAoB;IACpB,iBAAiB;IACjB,qBAAqB;IACrB,yBAAyB;IACzB,kBAAkB;IAClB,kBAAkB;CACnB,CAAC;AAEF,qEAAqE;AACrE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAG,mBAAmB,EAAE,GAAG,oBAAoB,CAAC,CAAC;AAErF,mHAAmH;AACnH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* @module mcp-server/tools/definitions/obsidian-append-to-note.tool
|
|
5
5
|
*/
|
|
6
6
|
import { z } from '@cyanheads/mcp-ts-core';
|
|
7
|
+
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
7
8
|
export declare const obsidianAppendToNote: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
|
|
8
9
|
target: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
9
10
|
type: z.ZodLiteral<"path">;
|
|
@@ -38,5 +39,10 @@ export declare const obsidianAppendToNote: import("@cyanheads/mcp-ts-core").Tool
|
|
|
38
39
|
}, z.core.$strip>, z.ZodObject<{
|
|
39
40
|
path: z.ZodString;
|
|
40
41
|
sectionTargeted: z.ZodBoolean;
|
|
41
|
-
}, z.core.$strip>,
|
|
42
|
+
}, z.core.$strip>, readonly [{
|
|
43
|
+
readonly reason: "path_forbidden";
|
|
44
|
+
readonly code: JsonRpcErrorCode.Forbidden;
|
|
45
|
+
readonly when: "The target path is outside OBSIDIAN_WRITE_PATHS, or OBSIDIAN_READ_ONLY=true denies all writes.";
|
|
46
|
+
readonly recovery: "Use a path inside the configured write scope. The error data echoes the active scope.";
|
|
47
|
+
}]>;
|
|
42
48
|
//# sourceMappingURL=obsidian-append-to-note.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"obsidian-append-to-note.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/obsidian-append-to-note.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"obsidian-append-to-note.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/obsidian-append-to-note.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAIjE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkE/B,CAAC"}
|
|
@@ -4,10 +4,11 @@
|
|
|
4
4
|
* @module mcp-server/tools/definitions/obsidian-append-to-note.tool
|
|
5
5
|
*/
|
|
6
6
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
7
|
+
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
7
8
|
import { getObsidianService } from '../../../services/obsidian/obsidian-service.js';
|
|
8
9
|
import { ContentTypeSchema, SectionSchema, TargetSchema } from './_shared/schemas.js';
|
|
9
10
|
export const obsidianAppendToNote = tool('obsidian_append_to_note', {
|
|
10
|
-
description: 'Append content to a note. Without `section`, the body is appended to the end of the file. With `section`, the content is appended to the end of that heading/block/frontmatter. For block-reference targets,
|
|
11
|
+
description: 'Append content to a note. Without `section`, the body is appended to the end of the file. With `section`, the content is appended to the end of that heading/block/frontmatter. For block-reference targets, content is concatenated adjacent to the block line without inserting a separator — include a leading newline in `content` if you want one. Set `createTargetIfMissing` to bring the target section into existence rather than failing when it does not exist.',
|
|
11
12
|
annotations: { destructiveHint: true },
|
|
12
13
|
input: z.object({
|
|
13
14
|
target: TargetSchema.describe('Where the note lives.'),
|
|
@@ -26,6 +27,14 @@ export const obsidianAppendToNote = tool('obsidian_append_to_note', {
|
|
|
26
27
|
.describe('True when the append went to a section; false for whole-file appends.'),
|
|
27
28
|
}),
|
|
28
29
|
auth: ['tool:obsidian_append_to_note:write'],
|
|
30
|
+
errors: [
|
|
31
|
+
{
|
|
32
|
+
reason: 'path_forbidden',
|
|
33
|
+
code: JsonRpcErrorCode.Forbidden,
|
|
34
|
+
when: 'The target path is outside OBSIDIAN_WRITE_PATHS, or OBSIDIAN_READ_ONLY=true denies all writes.',
|
|
35
|
+
recovery: 'Use a path inside the configured write scope. The error data echoes the active scope.',
|
|
36
|
+
},
|
|
37
|
+
],
|
|
29
38
|
async handler(input, ctx) {
|
|
30
39
|
const svc = getObsidianService();
|
|
31
40
|
const { target } = input;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"obsidian-append-to-note.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/obsidian-append-to-note.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEtF,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC,yBAAyB,EAAE;IAClE,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"obsidian-append-to-note.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/obsidian-append-to-note.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,11 @@ export declare const obsidianDeleteNote: import("@cyanheads/mcp-ts-core").ToolDe
|
|
|
27
27
|
path: z.ZodString;
|
|
28
28
|
deleted: z.ZodBoolean;
|
|
29
29
|
}, z.core.$strip>, readonly [{
|
|
30
|
+
readonly reason: "path_forbidden";
|
|
31
|
+
readonly code: JsonRpcErrorCode.Forbidden;
|
|
32
|
+
readonly when: "The target path is outside OBSIDIAN_WRITE_PATHS, or OBSIDIAN_READ_ONLY=true denies all writes.";
|
|
33
|
+
readonly recovery: "Use a path inside the configured write scope. The error data echoes the active scope.";
|
|
34
|
+
}, {
|
|
30
35
|
readonly reason: "cancelled";
|
|
31
36
|
readonly code: JsonRpcErrorCode.InvalidRequest;
|
|
32
37
|
readonly when: "User declined the deletion via interactive elicitation.";
|
|
@@ -40,7 +45,7 @@ export declare const obsidianDeleteNote: import("@cyanheads/mcp-ts-core").ToolDe
|
|
|
40
45
|
readonly reason: "no_active_file";
|
|
41
46
|
readonly code: JsonRpcErrorCode.NotFound;
|
|
42
47
|
readonly when: "Target was `active` but no file is currently open in Obsidian.";
|
|
43
|
-
readonly recovery: "
|
|
48
|
+
readonly recovery: "Call obsidian_open_in_ui to focus a file, or pass an explicit path target instead.";
|
|
44
49
|
}, {
|
|
45
50
|
readonly reason: "periodic_not_found";
|
|
46
51
|
readonly code: JsonRpcErrorCode.NotFound;
|
|
@@ -50,6 +55,6 @@ export declare const obsidianDeleteNote: import("@cyanheads/mcp-ts-core").ToolDe
|
|
|
50
55
|
readonly reason: "periodic_disabled";
|
|
51
56
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
52
57
|
readonly when: "Target was `periodic` but the requested period is not enabled in Obsidian's Periodic Notes plugin settings.";
|
|
53
|
-
readonly recovery: "
|
|
58
|
+
readonly recovery: "Pass an explicit path target — the requested period is disabled in the operator's Periodic Notes plugin.";
|
|
54
59
|
}]>;
|
|
55
60
|
//# sourceMappingURL=obsidian-delete-note.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"obsidian-delete-note.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/obsidian-delete-note.tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAIjE,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"obsidian-delete-note.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/obsidian-delete-note.tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAIjE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsF7B,CAAC"}
|
|
@@ -20,6 +20,12 @@ export const obsidianDeleteNote = tool('obsidian_delete_note', {
|
|
|
20
20
|
}),
|
|
21
21
|
auth: ['tool:obsidian_delete_note:write'],
|
|
22
22
|
errors: [
|
|
23
|
+
{
|
|
24
|
+
reason: 'path_forbidden',
|
|
25
|
+
code: JsonRpcErrorCode.Forbidden,
|
|
26
|
+
when: 'The target path is outside OBSIDIAN_WRITE_PATHS, or OBSIDIAN_READ_ONLY=true denies all writes.',
|
|
27
|
+
recovery: 'Use a path inside the configured write scope. The error data echoes the active scope.',
|
|
28
|
+
},
|
|
23
29
|
{
|
|
24
30
|
reason: 'cancelled',
|
|
25
31
|
code: JsonRpcErrorCode.InvalidRequest,
|
|
@@ -36,7 +42,7 @@ export const obsidianDeleteNote = tool('obsidian_delete_note', {
|
|
|
36
42
|
reason: 'no_active_file',
|
|
37
43
|
code: JsonRpcErrorCode.NotFound,
|
|
38
44
|
when: 'Target was `active` but no file is currently open in Obsidian.',
|
|
39
|
-
recovery: '
|
|
45
|
+
recovery: 'Call obsidian_open_in_ui to focus a file, or pass an explicit path target instead.',
|
|
40
46
|
},
|
|
41
47
|
{
|
|
42
48
|
reason: 'periodic_not_found',
|
|
@@ -48,7 +54,7 @@ export const obsidianDeleteNote = tool('obsidian_delete_note', {
|
|
|
48
54
|
reason: 'periodic_disabled',
|
|
49
55
|
code: JsonRpcErrorCode.ValidationError,
|
|
50
56
|
when: "Target was `periodic` but the requested period is not enabled in Obsidian's Periodic Notes plugin settings.",
|
|
51
|
-
recovery: "
|
|
57
|
+
recovery: "Pass an explicit path target — the requested period is disabled in the operator's Periodic Notes plugin.",
|
|
52
58
|
},
|
|
53
59
|
],
|
|
54
60
|
async handler(input, ctx) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"obsidian-delete-note.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/obsidian-delete-note.tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,EAAE;IAC7D,WAAW,EACT,iNAAiN;IACnN,WAAW,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;IACtC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KACvD,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;QAC9E,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KACjE,CAAC;IACF,IAAI,EAAE,CAAC,iCAAiC,CAAC;IACzC,MAAM,EAAE;QACN;YACE,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,gBAAgB,CAAC,cAAc;YACrC,IAAI,EAAE,yDAAyD;YAC/D,QAAQ,EAAE,6DAA6D;SACxE;QACD;YACE,MAAM,EAAE,cAAc;YACtB,IAAI,EAAE,gBAAgB,CAAC,QAAQ;YAC/B,IAAI,EAAE,sDAAsD;YAC5D,QAAQ,EACN,2FAA2F;SAC9F;QACD;YACE,MAAM,EAAE,gBAAgB;YACxB,IAAI,EAAE,gBAAgB,CAAC,QAAQ;YAC/B,IAAI,EAAE,gEAAgE;YACtE,QAAQ,
|
|
1
|
+
{"version":3,"file":"obsidian-delete-note.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/obsidian-delete-note.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
|
8
8
|
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
9
9
|
import { getObsidianService } from '../../../services/obsidian/obsidian-service.js';
|
|
10
10
|
export const obsidianExecuteCommand = tool('obsidian_execute_command', {
|
|
11
|
-
description: 'Execute an Obsidian command by ID (from `obsidian_list_commands`). Behaviour depends on the command — some are destructive (delete file, close vault), some open UI.
|
|
11
|
+
description: 'Execute an Obsidian command by ID (from `obsidian_list_commands`). Behaviour depends on the command — some are destructive (delete file, close vault), some open UI. Commands run with the same authority as a user invoking them from the keyboard.',
|
|
12
12
|
annotations: { openWorldHint: true, destructiveHint: true },
|
|
13
13
|
input: z.object({
|
|
14
14
|
commandId: z
|
|
@@ -18,7 +18,7 @@ export const obsidianExecuteCommand = tool('obsidian_execute_command', {
|
|
|
18
18
|
}),
|
|
19
19
|
output: z.object({
|
|
20
20
|
commandId: z.string().describe('Echoed command ID.'),
|
|
21
|
-
executed: z.boolean().describe('True when the
|
|
21
|
+
executed: z.boolean().describe('True when the command was dispatched successfully.'),
|
|
22
22
|
}),
|
|
23
23
|
auth: ['tool:obsidian_execute_command:admin'],
|
|
24
24
|
errors: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"obsidian-execute-command.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/obsidian-execute-command.tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC,0BAA0B,EAAE;IACrE,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"obsidian-execute-command.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/obsidian-execute-command.tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC,0BAA0B,EAAE;IACrE,WAAW,EACT,sPAAsP;IACxP,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE;IAC3D,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,8EAA8E,CAAC;KAC5F,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACpD,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;KACrF,CAAC;IACF,IAAI,EAAE,CAAC,qCAAqC,CAAC;IAC7C,MAAM,EAAE;QACN;YACE,MAAM,EAAE,iBAAiB;YACzB,IAAI,EAAE,gBAAgB,CAAC,QAAQ;YAC/B,IAAI,EAAE,6GAA6G;YACnH,QAAQ,EAAE,qEAAqE;SAChF;KACF;IAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;QACjC,MAAM,GAAG,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC/C,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxD,CAAC;IAED,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;QAClB;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,gBAAgB,MAAM,CAAC,SAAS,mBAAmB,MAAM,CAAC,QAAQ,GAAG;SAC5E;KACF;CACF,CAAC,CAAC"}
|
|
@@ -36,6 +36,7 @@ export declare const obsidianGetNote: import("@cyanheads/mcp-ts-core").ToolDefin
|
|
|
36
36
|
}>;
|
|
37
37
|
target: z.ZodString;
|
|
38
38
|
}, z.core.$strip>>;
|
|
39
|
+
includeLinks: z.ZodDefault<z.ZodBoolean>;
|
|
39
40
|
}, z.core.$strip>, z.ZodObject<{
|
|
40
41
|
result: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
41
42
|
format: z.ZodLiteral<"content">;
|
|
@@ -52,6 +53,13 @@ export declare const obsidianGetNote: import("@cyanheads/mcp-ts-core").ToolDefin
|
|
|
52
53
|
mtime: z.ZodNumber;
|
|
53
54
|
size: z.ZodNumber;
|
|
54
55
|
}, z.core.$strip>;
|
|
56
|
+
outgoingLinks: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
57
|
+
target: z.ZodString;
|
|
58
|
+
type: z.ZodEnum<{
|
|
59
|
+
markdown: "markdown";
|
|
60
|
+
wikilink: "wikilink";
|
|
61
|
+
}>;
|
|
62
|
+
}, z.core.$strip>>>;
|
|
55
63
|
}, z.core.$strip>, z.ZodObject<{
|
|
56
64
|
format: z.ZodLiteral<"document-map">;
|
|
57
65
|
path: z.ZodString;
|
|
@@ -77,6 +85,11 @@ export declare const obsidianGetNote: import("@cyanheads/mcp-ts-core").ToolDefin
|
|
|
77
85
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
78
86
|
readonly when: "`format` is \"section\" but no `section` locator was provided.";
|
|
79
87
|
readonly recovery: "Pass `section: { type, target }` (e.g. `{ type: \"heading\", target: \"Intro\" }`), or use `format: \"full\"` / `\"document-map\"` instead.";
|
|
88
|
+
}, {
|
|
89
|
+
readonly reason: "path_forbidden";
|
|
90
|
+
readonly code: JsonRpcErrorCode.Forbidden;
|
|
91
|
+
readonly when: "The target path is outside OBSIDIAN_READ_PATHS (and OBSIDIAN_WRITE_PATHS, since write paths imply read access).";
|
|
92
|
+
readonly recovery: "Use a path inside the configured read scope. The error data echoes the active scope.";
|
|
80
93
|
}, {
|
|
81
94
|
readonly reason: "note_missing";
|
|
82
95
|
readonly code: JsonRpcErrorCode.NotFound;
|
|
@@ -86,7 +99,7 @@ export declare const obsidianGetNote: import("@cyanheads/mcp-ts-core").ToolDefin
|
|
|
86
99
|
readonly reason: "no_active_file";
|
|
87
100
|
readonly code: JsonRpcErrorCode.NotFound;
|
|
88
101
|
readonly when: "Target was `active` but no file is currently open in Obsidian.";
|
|
89
|
-
readonly recovery: "
|
|
102
|
+
readonly recovery: "Call obsidian_open_in_ui to focus a file, or pass an explicit path target instead.";
|
|
90
103
|
}, {
|
|
91
104
|
readonly reason: "periodic_not_found";
|
|
92
105
|
readonly code: JsonRpcErrorCode.NotFound;
|
|
@@ -96,6 +109,6 @@ export declare const obsidianGetNote: import("@cyanheads/mcp-ts-core").ToolDefin
|
|
|
96
109
|
readonly reason: "periodic_disabled";
|
|
97
110
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
98
111
|
readonly when: "Target was `periodic` but the requested period is not enabled in Obsidian's Periodic Notes plugin settings.";
|
|
99
|
-
readonly recovery: "
|
|
112
|
+
readonly recovery: "Pass an explicit path target — the requested period is disabled in the operator's Periodic Notes plugin.";
|
|
100
113
|
}]>;
|
|
101
114
|
//# sourceMappingURL=obsidian-get-note.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"obsidian-get-note.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/obsidian-get-note.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAYjE,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"obsidian-get-note.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/obsidian-get-note.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAYjE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8R1B,CAAC"}
|
|
@@ -15,14 +15,18 @@ const StatSchema = z.object({
|
|
|
15
15
|
size: z.number().describe('File size in bytes.'),
|
|
16
16
|
});
|
|
17
17
|
export const obsidianGetNote = tool('obsidian_get_note', {
|
|
18
|
-
description: 'Read a note from the vault
|
|
18
|
+
description: 'Read a note from the vault — by path, the active file, or a periodic note. Choose a `format` projection: raw body, full object, structural document map, or a single section.',
|
|
19
19
|
annotations: { readOnlyHint: true, idempotentHint: true },
|
|
20
20
|
input: z.object({
|
|
21
21
|
format: z
|
|
22
22
|
.enum(['content', 'full', 'document-map', 'section'])
|
|
23
|
-
.describe('Which projection of
|
|
23
|
+
.describe('Which projection to return. `content` — raw markdown body. `full` — content plus parsed frontmatter, tags, and file metadata. `document-map` — catalog of headings, block IDs, and frontmatter field names (use to discover patch targets). `section` — a single heading, block, or frontmatter section (requires `section`); heading sections include the full subtree under that heading.'),
|
|
24
24
|
target: TargetSchema.describe('Where the note lives.'),
|
|
25
25
|
section: SectionSchema.optional().describe('Required when `format` is `"section"`. Identifies the heading/block/frontmatter to extract.'),
|
|
26
|
+
includeLinks: z
|
|
27
|
+
.boolean()
|
|
28
|
+
.default(false)
|
|
29
|
+
.describe('When true with `format: "full"`, parses outgoing wiki and markdown link references from the note body. Skipped for other formats.'),
|
|
26
30
|
}),
|
|
27
31
|
output: z.object({
|
|
28
32
|
result: z
|
|
@@ -41,9 +45,20 @@ export const obsidianGetNote = tool('obsidian_get_note', {
|
|
|
41
45
|
content: z.string().describe('Raw markdown body.'),
|
|
42
46
|
frontmatter: z
|
|
43
47
|
.record(z.string(), z.unknown())
|
|
44
|
-
.describe('Parsed YAML frontmatter
|
|
48
|
+
.describe('Parsed YAML frontmatter. Values are strings, numbers, booleans, arrays, or nested objects.'),
|
|
45
49
|
tags: z.array(z.string()).describe('Tags from frontmatter and inline #tag syntax.'),
|
|
46
50
|
stat: StatSchema.describe('File metadata.'),
|
|
51
|
+
outgoingLinks: z
|
|
52
|
+
.array(z
|
|
53
|
+
.object({
|
|
54
|
+
target: z
|
|
55
|
+
.string()
|
|
56
|
+
.describe('Link target as written — vault path, basename, or alias. No existence check.'),
|
|
57
|
+
type: z.enum(['wikilink', 'markdown']).describe('Source syntax.'),
|
|
58
|
+
})
|
|
59
|
+
.describe('A single outgoing link reference.'))
|
|
60
|
+
.optional()
|
|
61
|
+
.describe('Outgoing link references parsed from the note body. Present when `includeLinks` is true. Vault-internal references only — external URLs (http, mailto, etc.) are filtered out.'),
|
|
47
62
|
})
|
|
48
63
|
.describe('Full projection — content plus parsed metadata.'),
|
|
49
64
|
z
|
|
@@ -81,6 +96,12 @@ export const obsidianGetNote = tool('obsidian_get_note', {
|
|
|
81
96
|
when: '`format` is "section" but no `section` locator was provided.',
|
|
82
97
|
recovery: 'Pass `section: { type, target }` (e.g. `{ type: "heading", target: "Intro" }`), or use `format: "full"` / `"document-map"` instead.',
|
|
83
98
|
},
|
|
99
|
+
{
|
|
100
|
+
reason: 'path_forbidden',
|
|
101
|
+
code: JsonRpcErrorCode.Forbidden,
|
|
102
|
+
when: 'The target path is outside OBSIDIAN_READ_PATHS (and OBSIDIAN_WRITE_PATHS, since write paths imply read access).',
|
|
103
|
+
recovery: 'Use a path inside the configured read scope. The error data echoes the active scope.',
|
|
104
|
+
},
|
|
84
105
|
{
|
|
85
106
|
reason: 'note_missing',
|
|
86
107
|
code: JsonRpcErrorCode.NotFound,
|
|
@@ -91,7 +112,7 @@ export const obsidianGetNote = tool('obsidian_get_note', {
|
|
|
91
112
|
reason: 'no_active_file',
|
|
92
113
|
code: JsonRpcErrorCode.NotFound,
|
|
93
114
|
when: 'Target was `active` but no file is currently open in Obsidian.',
|
|
94
|
-
recovery: '
|
|
115
|
+
recovery: 'Call obsidian_open_in_ui to focus a file, or pass an explicit path target instead.',
|
|
95
116
|
},
|
|
96
117
|
{
|
|
97
118
|
reason: 'periodic_not_found',
|
|
@@ -103,7 +124,7 @@ export const obsidianGetNote = tool('obsidian_get_note', {
|
|
|
103
124
|
reason: 'periodic_disabled',
|
|
104
125
|
code: JsonRpcErrorCode.ValidationError,
|
|
105
126
|
when: "Target was `periodic` but the requested period is not enabled in Obsidian's Periodic Notes plugin settings.",
|
|
106
|
-
recovery: "
|
|
127
|
+
recovery: "Pass an explicit path target — the requested period is disabled in the operator's Periodic Notes plugin.",
|
|
107
128
|
},
|
|
108
129
|
],
|
|
109
130
|
async handler(input, ctx) {
|
|
@@ -129,6 +150,7 @@ export const obsidianGetNote = tool('obsidian_get_note', {
|
|
|
129
150
|
frontmatter: note.frontmatter,
|
|
130
151
|
tags: note.tags,
|
|
131
152
|
stat: note.stat,
|
|
153
|
+
...(input.includeLinks ? { outgoingLinks: parseOutgoingLinks(note.content) } : {}),
|
|
132
154
|
},
|
|
133
155
|
};
|
|
134
156
|
}
|
|
@@ -200,6 +222,12 @@ export const obsidianGetNote = tool('obsidian_get_note', {
|
|
|
200
222
|
lines.push(`- \`${k}\`: ${stringifyValue(result.frontmatter[k])}`);
|
|
201
223
|
}
|
|
202
224
|
}
|
|
225
|
+
if (result.outgoingLinks && result.outgoingLinks.length > 0) {
|
|
226
|
+
lines.push('', `**Outgoing links (${result.outgoingLinks.length})**`);
|
|
227
|
+
for (const l of result.outgoingLinks) {
|
|
228
|
+
lines.push(`- [${l.type}] ${l.target}`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
203
231
|
lines.push('', '**Content**', result.content);
|
|
204
232
|
return [{ type: 'text', text: lines.join('\n') }];
|
|
205
233
|
}
|
|
@@ -253,4 +281,36 @@ function formatIsoTime(ms) {
|
|
|
253
281
|
return String(ms);
|
|
254
282
|
}
|
|
255
283
|
}
|
|
284
|
+
/**
|
|
285
|
+
* Extract outgoing link references from note content. Captures Obsidian
|
|
286
|
+
* wikilinks (`[[target]]`, `![[target]]`, with optional `|alias` or
|
|
287
|
+
* `#section`) and markdown links (`[text](target)`). External URIs
|
|
288
|
+
* (any `scheme:` form) are filtered out — only vault-internal references
|
|
289
|
+
* remain. No existence checks; this is the link graph as written.
|
|
290
|
+
*/
|
|
291
|
+
function parseOutgoingLinks(content) {
|
|
292
|
+
const links = [];
|
|
293
|
+
for (const m of content.matchAll(/!?\[\[([^\]|#]+)(?:[#|][^\]]*)?\]\]/g)) {
|
|
294
|
+
const target = m[1]?.trim();
|
|
295
|
+
if (target)
|
|
296
|
+
links.push({ target, type: 'wikilink' });
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* URL group accepts either `<bracketed text with spaces>` or a non-whitespace
|
|
300
|
+
* run. The bracketed form is the markdown spec's escape hatch for paths
|
|
301
|
+
* containing spaces.
|
|
302
|
+
*/
|
|
303
|
+
for (const m of content.matchAll(/\[[^\]]*\]\((<[^<>\n]+>|[^)\s]+)(?:\s+"[^"]*")?\)/g)) {
|
|
304
|
+
let target = m[1]?.trim();
|
|
305
|
+
if (!target)
|
|
306
|
+
continue;
|
|
307
|
+
if (target.startsWith('<') && target.endsWith('>')) {
|
|
308
|
+
target = target.slice(1, -1).trim();
|
|
309
|
+
}
|
|
310
|
+
if (target && !/^[a-z][a-z0-9+\-.]*:/i.test(target)) {
|
|
311
|
+
links.push({ target, type: 'markdown' });
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
return links;
|
|
315
|
+
}
|
|
256
316
|
//# sourceMappingURL=obsidian-get-note.tool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"obsidian-get-note.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/obsidian-get-note.tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"obsidian-get-note.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/obsidian-get-note.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ export declare const obsidianListNotes: import("@cyanheads/mcp-ts-core").ToolDef
|
|
|
21
21
|
path: z.ZodOptional<z.ZodString>;
|
|
22
22
|
extension: z.ZodOptional<z.ZodString>;
|
|
23
23
|
nameRegex: z.ZodOptional<z.ZodString>;
|
|
24
|
-
depth: z.
|
|
24
|
+
depth: z.ZodDefault<z.ZodNumber>;
|
|
25
25
|
}, z.core.$strip>, z.ZodObject<{
|
|
26
26
|
path: z.ZodString;
|
|
27
27
|
entries: z.ZodArray<z.ZodObject<{
|
|
@@ -51,7 +51,12 @@ export declare const obsidianListNotes: import("@cyanheads/mcp-ts-core").ToolDef
|
|
|
51
51
|
readonly reason: "regex_invalid";
|
|
52
52
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
53
53
|
readonly when: "The supplied `nameRegex` is not a valid ECMAScript regex.";
|
|
54
|
-
readonly recovery: "
|
|
54
|
+
readonly recovery: "Use a valid ECMAScript regex (e.g. `^Project.*\\.md$`), or omit nameRegex to disable filtering.";
|
|
55
|
+
}, {
|
|
56
|
+
readonly reason: "path_forbidden";
|
|
57
|
+
readonly code: JsonRpcErrorCode.Forbidden;
|
|
58
|
+
readonly when: "The supplied `path` is outside OBSIDIAN_READ_PATHS (root listings always pass; specific subdirectories must be readable).";
|
|
59
|
+
readonly recovery: "List a directory inside the configured read scope, or omit `path` to list from the vault root. The error data echoes the active scope.";
|
|
55
60
|
}, {
|
|
56
61
|
readonly reason: "note_missing";
|
|
57
62
|
readonly code: JsonRpcErrorCode.NotFound;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"obsidian-list-notes.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/obsidian-list-notes.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AA0C3E,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"obsidian-list-notes.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/obsidian-list-notes.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AA0C3E,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoK5B,CAAC"}
|
|
@@ -35,7 +35,7 @@ const EntrySchema = z
|
|
|
35
35
|
})
|
|
36
36
|
.describe('A single entry in the listing.');
|
|
37
37
|
export const obsidianListNotes = tool('obsidian_list_notes', {
|
|
38
|
-
description: `List notes and subdirectories at a vault path. Defaults to vault root when \`path\` is omitted.
|
|
38
|
+
description: `List notes and subdirectories at a vault path. Defaults to the vault root when \`path\` is omitted. Tune recursion with \`depth\`, or filter the walk with \`extension\` / \`nameRegex\`. Capped at ${ENTRY_CAP} entries per call — when reached, walking stops and \`excluded\` is set; narrow \`path\` or tighten filters to surface the rest.`,
|
|
39
39
|
annotations: { readOnlyHint: true, idempotentHint: true },
|
|
40
40
|
input: z.object({
|
|
41
41
|
path: z.string().optional().describe('Vault-relative directory path. Omit for the vault root.'),
|
|
@@ -52,8 +52,8 @@ export const obsidianListNotes = tool('obsidian_list_notes', {
|
|
|
52
52
|
.int()
|
|
53
53
|
.min(1)
|
|
54
54
|
.max(MAX_DEPTH)
|
|
55
|
-
.
|
|
56
|
-
.describe(`How many directory levels to walk. \`1\` = target directory only (no recursion); \`${DEFAULT_DEPTH}\`
|
|
55
|
+
.default(DEFAULT_DEPTH)
|
|
56
|
+
.describe(`How many directory levels to walk. \`1\` = target directory only (no recursion); \`${DEFAULT_DEPTH}\` = target plus its immediate children — a structural overview; bump higher to drill in. Prefer narrowing \`path\` to a subdirectory over a high \`depth\` on the vault root.`),
|
|
57
57
|
}),
|
|
58
58
|
output: z.object({
|
|
59
59
|
path: z.string().describe('The directory listed (empty string for vault root).'),
|
|
@@ -94,7 +94,13 @@ export const obsidianListNotes = tool('obsidian_list_notes', {
|
|
|
94
94
|
reason: 'regex_invalid',
|
|
95
95
|
code: JsonRpcErrorCode.ValidationError,
|
|
96
96
|
when: 'The supplied `nameRegex` is not a valid ECMAScript regex.',
|
|
97
|
-
recovery: '
|
|
97
|
+
recovery: 'Use a valid ECMAScript regex (e.g. `^Project.*\\.md$`), or omit nameRegex to disable filtering.',
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
reason: 'path_forbidden',
|
|
101
|
+
code: JsonRpcErrorCode.Forbidden,
|
|
102
|
+
when: 'The supplied `path` is outside OBSIDIAN_READ_PATHS (root listings always pass; specific subdirectories must be readable).',
|
|
103
|
+
recovery: 'List a directory inside the configured read scope, or omit `path` to list from the vault root. The error data echoes the active scope.',
|
|
98
104
|
},
|
|
99
105
|
{
|
|
100
106
|
reason: 'note_missing',
|
|
@@ -105,7 +111,7 @@ export const obsidianListNotes = tool('obsidian_list_notes', {
|
|
|
105
111
|
],
|
|
106
112
|
async handler(input, ctx) {
|
|
107
113
|
const svc = getObsidianService();
|
|
108
|
-
const depth = input.depth
|
|
114
|
+
const depth = input.depth;
|
|
109
115
|
let regex;
|
|
110
116
|
if (input.nameRegex) {
|
|
111
117
|
try {
|
|
@@ -206,14 +212,21 @@ async function walkVault(svc, ctx, dir, currentDepth, state, opts) {
|
|
|
206
212
|
continue;
|
|
207
213
|
const fullPath = dir ? `${dir}/${name}` : name;
|
|
208
214
|
const entry = { path: fullPath, type: isDir ? 'directory' : 'file' };
|
|
209
|
-
|
|
215
|
+
/**
|
|
216
|
+
* Mark a subdir truncated when (a) we hit the depth cap, OR (b) policy
|
|
217
|
+
* blocks reading it — the listing surfaces it (operator can see it
|
|
218
|
+
* exists) but we don't try to walk inside, which would throw
|
|
219
|
+
* `path_forbidden` mid-walk and abort the whole listing.
|
|
220
|
+
*/
|
|
221
|
+
const policyBlocked = isDir && !svc.policy.isReadable(fullPath);
|
|
222
|
+
if (isDir && (currentDepth >= opts.depth || policyBlocked))
|
|
210
223
|
entry.truncated = true;
|
|
211
224
|
state.entries.push(entry);
|
|
212
225
|
if (isDir)
|
|
213
226
|
state.totalDirs++;
|
|
214
227
|
else
|
|
215
228
|
state.totalFiles++;
|
|
216
|
-
if (isDir && currentDepth < opts.depth) {
|
|
229
|
+
if (isDir && currentDepth < opts.depth && !policyBlocked) {
|
|
217
230
|
await walkVault(svc, ctx, fullPath, currentDepth + 1, state, opts);
|
|
218
231
|
if (state.cappedByEntries)
|
|
219
232
|
return;
|