obsidian-mcp-server 3.2.3 → 3.2.4

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 CHANGED
@@ -1,8 +1,8 @@
1
1
  # Agent Protocol
2
2
 
3
3
  **Server:** obsidian-mcp-server
4
- **Version:** 3.2.3
5
- **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.16`
4
+ **Version:** 3.2.4
5
+ **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.21`
6
6
  **Engines:** Bun ≥1.3.11, Node ≥24.0.0
7
7
  **MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
8
8
  **Zod:** ^4.4.3
@@ -301,6 +301,7 @@ Available skills:
301
301
  | `git-wrapup` | Land working-tree changes as a versioned commit + annotated tag — version bump, changelog, verify, tag. Local only. |
302
302
  | `release-and-publish` | Ship a release end-to-end across npm, MCP Registry, GitHub Releases (`.mcpb`), and GHCR |
303
303
  | `maintenance` | Investigate changelogs, adopt upstream changes, sync skills to agent dirs |
304
+ | `orchestrations` | Chain task skills into a gated multi-phase pipeline — build-out, QA-fix, update-ship — when you can spawn sub-agents |
304
305
  | `report-issue-framework` | File a bug or feature request against `@cyanheads/mcp-ts-core` via `gh` CLI |
305
306
  | `report-issue-local` | File a bug or feature request against this server's own repo via `gh` CLI |
306
307
  | `api-auth` | Auth modes, scopes, JWT/OAuth |
@@ -315,6 +316,8 @@ Available skills:
315
316
  | `api-utils` | Formatting, parsing, security, pagination, scheduling, telemetry helpers |
316
317
  | `api-workers` | Cloudflare Workers runtime |
317
318
 
319
+ **Chaining skills into pipelines.** When the user wants a multi-phase effort — build this server out, QA-and-fix the surface, update-and-ship — *and you can spawn sub-agents*, `skills/orchestrations/SKILL.md` sequences the task skills above into a gated pipeline with verification at each step. Read it to drive the run. Optional: skip it if you can't orchestrate sub-agents, and ignore it entirely if you were *spawned* as one — you've already been scoped to a single phase.
320
+
318
321
  When you complete a skill's checklist, check the boxes and add a completion timestamp at the end (e.g., `Completed: 2026-03-11`).
319
322
 
320
323
  ---
@@ -400,4 +403,7 @@ import { getMyService } from '@/services/my-domain/my-service.js';
400
403
  - [ ] If wrapping external API: tests include at least one sparse payload case with omitted upstream fields
401
404
  - [ ] Registered in `createApp()` arrays (directly or via barrel exports). Conditional registration (e.g. `commandToolDefinitions` behind `OBSIDIAN_ENABLE_COMMANDS`) happens in `src/index.ts`, not in the barrel
402
405
  - [ ] Tests use `createMockContext()` from `@cyanheads/mcp-ts-core/testing`
406
+ - [ ] `.codex-plugin/plugin.json` populated — `name`, `version`, `description`, `repository`, `license` from `package.json`; `interface.displayName` = package name; `interface.shortDescription` from `package.json` description
407
+ - [ ] `.codex-plugin/mcp.json` updated — server name key matches `package.json` name; env vars added for any required API keys
408
+ - [ ] `.claude-plugin/plugin.json` populated — `name`, `version`, `description`, `repository`, `license` from `package.json`; inline `mcpServers` entry with server name key, env vars for any required API keys
403
409
  - [ ] `bun run devcheck` passes
package/CLAUDE.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # Agent Protocol
2
2
 
3
3
  **Server:** obsidian-mcp-server
4
- **Version:** 3.2.3
5
- **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.16`
4
+ **Version:** 3.2.4
5
+ **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.21`
6
6
  **Engines:** Bun ≥1.3.11, Node ≥24.0.0
7
7
  **MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
8
8
  **Zod:** ^4.4.3
@@ -301,6 +301,7 @@ Available skills:
301
301
  | `git-wrapup` | Land working-tree changes as a versioned commit + annotated tag — version bump, changelog, verify, tag. Local only. |
302
302
  | `release-and-publish` | Ship a release end-to-end across npm, MCP Registry, GitHub Releases (`.mcpb`), and GHCR |
303
303
  | `maintenance` | Investigate changelogs, adopt upstream changes, sync skills to agent dirs |
304
+ | `orchestrations` | Chain task skills into a gated multi-phase pipeline — build-out, QA-fix, update-ship — when you can spawn sub-agents |
304
305
  | `report-issue-framework` | File a bug or feature request against `@cyanheads/mcp-ts-core` via `gh` CLI |
305
306
  | `report-issue-local` | File a bug or feature request against this server's own repo via `gh` CLI |
306
307
  | `api-auth` | Auth modes, scopes, JWT/OAuth |
@@ -315,6 +316,8 @@ Available skills:
315
316
  | `api-utils` | Formatting, parsing, security, pagination, scheduling, telemetry helpers |
316
317
  | `api-workers` | Cloudflare Workers runtime |
317
318
 
319
+ **Chaining skills into pipelines.** When the user wants a multi-phase effort — build this server out, QA-and-fix the surface, update-and-ship — *and you can spawn sub-agents*, `skills/orchestrations/SKILL.md` sequences the task skills above into a gated pipeline with verification at each step. Read it to drive the run. Optional: skip it if you can't orchestrate sub-agents, and ignore it entirely if you were *spawned* as one — you've already been scoped to a single phase.
320
+
318
321
  When you complete a skill's checklist, check the boxes and add a completion timestamp at the end (e.g., `Completed: 2026-03-11`).
319
322
 
320
323
  ---
@@ -400,4 +403,7 @@ import { getMyService } from '@/services/my-domain/my-service.js';
400
403
  - [ ] If wrapping external API: tests include at least one sparse payload case with omitted upstream fields
401
404
  - [ ] Registered in `createApp()` arrays (directly or via barrel exports). Conditional registration (e.g. `commandToolDefinitions` behind `OBSIDIAN_ENABLE_COMMANDS`) happens in `src/index.ts`, not in the barrel
402
405
  - [ ] Tests use `createMockContext()` from `@cyanheads/mcp-ts-core/testing`
406
+ - [ ] `.codex-plugin/plugin.json` populated — `name`, `version`, `description`, `repository`, `license` from `package.json`; `interface.displayName` = package name; `interface.shortDescription` from `package.json` description
407
+ - [ ] `.codex-plugin/mcp.json` updated — server name key matches `package.json` name; env vars added for any required API keys
408
+ - [ ] `.claude-plugin/plugin.json` populated — `name`, `version`, `description`, `repository`, `license` from `package.json`; inline `mcpServers` entry with server name key, env vars for any required API keys
403
409
  - [ ] `bun run devcheck` passes
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  <div align="center">
9
9
 
10
- [![Version](https://img.shields.io/badge/Version-3.2.3-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/obsidian-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/obsidian-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/obsidian-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^6.0.3-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.3.11-blueviolet.svg?style=flat-square)](https://bun.sh/)
10
+ [![Version](https://img.shields.io/badge/Version-3.2.4-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/obsidian-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/obsidian-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/obsidian-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^6.0.3-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.3.11-blueviolet.svg?style=flat-square)](https://bun.sh/)
11
11
 
12
12
  </div>
13
13
 
@@ -208,7 +208,7 @@ Add the following to your MCP client configuration file. The Obsidian Local REST
208
208
  ```json
209
209
  {
210
210
  "mcpServers": {
211
- "obsidian": {
211
+ "obsidian-mcp-server": {
212
212
  "type": "stdio",
213
213
  "command": "bunx",
214
214
  "args": ["obsidian-mcp-server@latest"],
@@ -227,7 +227,7 @@ Or with npx (no Bun required):
227
227
  ```json
228
228
  {
229
229
  "mcpServers": {
230
- "obsidian": {
230
+ "obsidian-mcp-server": {
231
231
  "type": "stdio",
232
232
  "command": "npx",
233
233
  "args": ["-y", "obsidian-mcp-server@latest"],
@@ -0,0 +1,29 @@
1
+ ---
2
+ summary: "mcp-ts-core ^0.9.16 → ^0.9.21 (per-request log context, retryable auto-population, query-string redaction, devcheck gates); plugin marketplace support (.claude-plugin, .codex-plugin); MCP config key renamed to obsidian-mcp-server"
3
+ breaking: false
4
+ security: false
5
+ agent-notes: |
6
+ New untracked directories now ship: `.claude-plugin/` (Claude Code plugin manifest) and `.codex-plugin/` (Codex plugin manifest + mcp.json). The MCP client config key in install snippets changed from `obsidian` to `obsidian-mcp-server` to match the server's declared name. New scripts: `scripts/release-github.ts` (invoked via `release:github`) and `scripts/check-skill-versions.ts`. Skills resynced from mcp-ts-core 0.9.21 — new: `api-mirror`, `orchestrations`. If running `maintenance` on this server after 3.2.4, copy skills from `node_modules/@cyanheads/mcp-ts-core/skills/` to `skills/` and `.claude/skills/` as usual.
7
+ ---
8
+
9
+ # 3.2.4 — 2026-06-02
10
+
11
+ ## Added
12
+
13
+ - **Plugin marketplace manifests.** `.claude-plugin/plugin.json` (Claude Code marketplace) and `.codex-plugin/plugin.json` + `.codex-plugin/mcp.json` (Codex marketplace) — both declare the server's name, version, description, and env var config for one-click installs.
14
+ - **`release:github` script** (`scripts/release-github.ts`) — constructs the GitHub Release title from the tag subject, attaches the `.mcpb` bundle, and handles the "release already exists" fallback. Inherited from mcp-ts-core 0.9.19.
15
+ - **`api-mirror` skill** — documents the `@cyanheads/mcp-ts-core/mirror` API surface (MirrorService, SQLite + FTS5 backend). Added in mcp-ts-core 0.9.17.
16
+ - **`orchestrations` skill** — chains task skills into gated multi-phase pipelines. Added in mcp-ts-core 0.9.19 (promoted to `audience: external` in 0.9.21).
17
+
18
+ ## Changed
19
+
20
+ - **MCP client config key renamed** from `obsidian` to `obsidian-mcp-server` in README install snippets — aligns with the server's declared name in manifests and `server.json`.
21
+ - **Skills resynced** from mcp-ts-core 0.9.21: `add-tool`, `add-service`, `api-canvas`, `api-context`, `api-linter`, `api-utils`, `design-mcp-server`, `release-and-publish` — picks up list-filtering guidance, updated retry semantics, skill-version enforcement gate details, and `release:github` adoption.
22
+ - **`scripts/devcheck.ts` updated** — adds the skill-version enforcement gate and open-indexed-named interface gate from mcp-ts-core 0.9.18.
23
+ - **CLAUDE.md / AGENTS.md** — `orchestrations` skill added to the skills table; pipeline-chaining guidance block added; plugin checklist items added for `.claude-plugin/plugin.json` and `.codex-plugin/` files.
24
+
25
+ ## Dependency bumps
26
+
27
+ - `@cyanheads/mcp-ts-core` ^0.9.16 → ^0.9.21 — HTTP per-request log context fix ([#194](https://github.com/cyanheads/mcp-ts-core/issues/194)), `ctx.fail` auto-populates `data.retryable` ([#174](https://github.com/cyanheads/mcp-ts-core/issues/174)), `fetchWithTimeout` query-string redaction ([#190](https://github.com/cyanheads/mcp-ts-core/issues/190)), `error-contract` lint scoped to construction sites ([#191](https://github.com/cyanheads/mcp-ts-core/issues/191)), list-changed notifications routed under HTTP ([#135](https://github.com/cyanheads/mcp-ts-core/issues/135)), MirrorService (`/mirror` subpath), two devcheck gates (skill-version, open-indexed-named interfaces)
28
+ - `js-yaml` ^4.1.1 → ^4.2.0
29
+ - `vitest` ^4.1.7 → ^4.1.8 (dev)
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.2.3",
4
+ "version": "3.2.4",
5
5
  "description": "MCP server for Obsidian vaults — read, write, search, and surgically edit notes, tags, and frontmatter via the Local REST API plugin. 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.2.3",
3
+ "version": "3.2.4",
4
4
  "mcpName": "io.github.cyanheads/obsidian-mcp-server",
5
5
  "description": "MCP server for Obsidian vaults — read, write, search, and surgically edit notes, tags, and frontmatter via the Local REST API plugin. STDIO or Streamable HTTP.",
6
6
  "type": "module",
@@ -39,6 +39,7 @@
39
39
  "start": "node dist/index.js",
40
40
  "start:stdio": "MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js",
41
41
  "start:http": "MCP_TRANSPORT_TYPE=http bun ./dist/index.js",
42
+ "release:github": "bun run scripts/release-github.ts",
42
43
  "publish-mcp": "mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish"
43
44
  },
44
45
  "keywords": [
@@ -81,9 +82,9 @@
81
82
  "access": "public"
82
83
  },
83
84
  "dependencies": {
84
- "@cyanheads/mcp-ts-core": "^0.9.16",
85
+ "@cyanheads/mcp-ts-core": "^0.9.21",
85
86
  "@types/js-yaml": "^4.0.9",
86
- "js-yaml": "^4.1.1",
87
+ "js-yaml": "^4.2.0",
87
88
  "pino-pretty": "^13.1.3",
88
89
  "undici": "^8.3.0",
89
90
  "zod": "^4.4.3"
@@ -95,6 +96,6 @@
95
96
  "ignore": "^7.0.5",
96
97
  "tsc-alias": "^1.8.17",
97
98
  "typescript": "^6.0.3",
98
- "vitest": "^4.1.7"
99
+ "vitest": "^4.1.8"
99
100
  }
100
101
  }
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.2.3",
9
+ "version": "3.2.4",
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.2.3",
16
+ "version": "3.2.4",
17
17
  "packageArguments": [
18
18
  {
19
19
  "type": "positional",
@@ -95,7 +95,7 @@
95
95
  "registryBaseUrl": "https://registry.npmjs.org",
96
96
  "identifier": "obsidian-mcp-server",
97
97
  "runtimeHint": "node",
98
- "version": "3.2.3",
98
+ "version": "3.2.4",
99
99
  "packageArguments": [
100
100
  {
101
101
  "type": "positional",