@withpica/mcp-server-directory 1.2.0 → 1.4.0

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.
Files changed (55) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/lib/changelog.d.ts +16 -0
  3. package/dist/lib/changelog.d.ts.map +1 -0
  4. package/dist/lib/changelog.generated.d.ts +4 -0
  5. package/dist/lib/changelog.generated.d.ts.map +1 -0
  6. package/dist/lib/changelog.generated.js +6 -0
  7. package/dist/lib/changelog.generated.js.map +1 -0
  8. package/dist/lib/changelog.js +84 -0
  9. package/dist/lib/changelog.js.map +1 -0
  10. package/dist/prompts/public-question-atlas.d.ts.map +1 -1
  11. package/dist/prompts/public-question-atlas.js +30 -0
  12. package/dist/prompts/public-question-atlas.js.map +1 -1
  13. package/dist/server.d.ts +20 -0
  14. package/dist/server.d.ts.map +1 -1
  15. package/dist/server.js +129 -10
  16. package/dist/server.js.map +1 -1
  17. package/dist/skills/index.d.ts +32 -0
  18. package/dist/skills/index.d.ts.map +1 -0
  19. package/dist/skills/index.js +50 -0
  20. package/dist/skills/index.js.map +1 -0
  21. package/dist/skills/skills.generated.d.ts +18 -0
  22. package/dist/skills/skills.generated.d.ts.map +1 -0
  23. package/dist/skills/skills.generated.js +14 -0
  24. package/dist/skills/skills.generated.js.map +1 -0
  25. package/dist/tools/__tests__/release-notes.test.d.ts +2 -0
  26. package/dist/tools/__tests__/release-notes.test.d.ts.map +1 -0
  27. package/dist/tools/__tests__/release-notes.test.js +49 -0
  28. package/dist/tools/__tests__/release-notes.test.js.map +1 -0
  29. package/dist/tools/index.d.ts +1 -0
  30. package/dist/tools/index.d.ts.map +1 -1
  31. package/dist/tools/index.js +4 -0
  32. package/dist/tools/index.js.map +1 -1
  33. package/dist/tools/release-notes.d.ts +22 -0
  34. package/dist/tools/release-notes.d.ts.map +1 -0
  35. package/dist/tools/release-notes.js +102 -0
  36. package/dist/tools/release-notes.js.map +1 -0
  37. package/dist/tools/skills.d.ts +19 -0
  38. package/dist/tools/skills.d.ts.map +1 -0
  39. package/dist/tools/skills.js +127 -0
  40. package/dist/tools/skills.js.map +1 -0
  41. package/package.json +4 -2
  42. package/scripts/build-changelog.ts +25 -0
  43. package/scripts/build-skills.ts +192 -0
  44. package/src/__tests__/skills/skills-registry.test.ts +63 -0
  45. package/src/__tests__/skills/skills-tools.test.ts +74 -0
  46. package/src/lib/changelog.ts +119 -0
  47. package/src/prompts/public-question-atlas.ts +36 -10
  48. package/src/server.ts +142 -11
  49. package/src/skills/find-music-for-sync-brief/SKILL.md +89 -0
  50. package/src/skills/index.ts +63 -0
  51. package/src/skills/skills.generated.ts +33 -0
  52. package/src/tools/__tests__/release-notes.test.ts +62 -0
  53. package/src/tools/index.ts +5 -0
  54. package/src/tools/release-notes.ts +148 -0
  55. package/src/tools/skills.ts +146 -0
package/CHANGELOG.md CHANGED
@@ -8,6 +8,34 @@ for breaking tool-surface changes.
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ## [1.4.0] - 2026-05-13
12
+
13
+ ### Added
14
+
15
+ - **`directory_release_notes` tool + `release-notes://withpica/mcp-server-directory/latest` Resource (PR #414).**
16
+ Agent-facing surface for directory MCP release notes. Reads `CHANGELOG.md`
17
+ embedded at build time via `scripts/build-changelog.ts`. Returns the
18
+ last 3 versions by default with optional `since_version` and `sections`
19
+ filters. Resource counterpart serves the full CHANGELOG for
20
+ Resource-native clients. Sister of `pica_release_notes` (creator MCP)
21
+ and `team_release_notes` (team MCP). Disambiguated from catalogue-content
22
+ searches (`directory_search` / `directory_list_works` / `directory_chain`)
23
+ by the NOT-FOR clause in the description.
24
+
25
+ ## [1.3.0] - 2026-05-11
26
+
27
+ ### Added
28
+
29
+ - **`directory_skill_list` + `directory_skill_get` — skill discovery on the public directory MCP (ADR-140 Phase 2b, PR #371).**
30
+ Lazy-loaded skill catalogue exposed via two meta-tools + one `skill://`
31
+ Resource per shipped skill (SEP-2640 bridge pattern). v1 ships
32
+ `find-music-for-sync-brief` — a methodology for searching the public
33
+ directory by audio characteristics + free-text brief. Skill metadata is
34
+ static at boot; bodies load on `skill_get` call. IP-protection lint
35
+ (Rule 14) gates skill content against trade-secret directories before
36
+ publish; cross-coverage parity lint asserts skill resource URIs match
37
+ between stdio and HTTP transports.
38
+
11
39
  ## [1.1.0] - 2026-04-21
12
40
 
13
41
  Shipped as minor rather than major despite the `*_full` tool removal:
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Runtime CHANGELOG parser. Mirrors scripts/parse-changelog.ts but takes
3
+ * the markdown body as a string (no fs dependency) so the MCP runtime
4
+ * can read from a build-time embedded constant. Sister of
5
+ * mcp-server/src/lib/changelog.ts and team-mcp-server/src/lib/changelog.ts.
6
+ */
7
+ export type ChangelogSectionName = "Added" | "Changed" | "Fixed" | "Removed" | "Security" | "Deprecated";
8
+ export declare const CHANGELOG_SECTION_NAMES: ChangelogSectionName[];
9
+ export interface ChangelogEntry {
10
+ version: string;
11
+ date: string | null;
12
+ sections: Partial<Record<ChangelogSectionName, string[]>>;
13
+ markdown: string;
14
+ }
15
+ export declare function parseChangelogText(text: string): ChangelogEntry[];
16
+ //# sourceMappingURL=changelog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changelog.d.ts","sourceRoot":"","sources":["../../src/lib/changelog.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,MAAM,MAAM,oBAAoB,GAC5B,OAAO,GACP,SAAS,GACT,OAAO,GACP,SAAS,GACT,UAAU,GACV,YAAY,CAAC;AAEjB,eAAO,MAAM,uBAAuB,EAAE,oBAAoB,EAOzD,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC1D,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,CAiFjE"}
@@ -0,0 +1,4 @@
1
+ export declare const CHANGELOG_MD = "# Changelog\n\nAll notable changes to `@withpica/mcp-server-directory` are documented here.\n\nThe format is loosely based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),\nand this project adheres to semantic versioning where the major number is incremented\nfor breaking tool-surface changes.\n\n## [Unreleased]\n\n## [1.4.0] - 2026-05-13\n\n### Added\n\n- **`directory_release_notes` tool + `release-notes://withpica/mcp-server-directory/latest` Resource (PR #414).**\n Agent-facing surface for directory MCP release notes. Reads `CHANGELOG.md`\n embedded at build time via `scripts/build-changelog.ts`. Returns the\n last 3 versions by default with optional `since_version` and `sections`\n filters. Resource counterpart serves the full CHANGELOG for\n Resource-native clients. Sister of `pica_release_notes` (creator MCP)\n and `team_release_notes` (team MCP). Disambiguated from catalogue-content\n searches (`directory_search` / `directory_list_works` / `directory_chain`)\n by the NOT-FOR clause in the description.\n\n## [1.3.0] - 2026-05-11\n\n### Added\n\n- **`directory_skill_list` + `directory_skill_get` \u2014 skill discovery on the public directory MCP (ADR-140 Phase 2b, PR #371).**\n Lazy-loaded skill catalogue exposed via two meta-tools + one `skill://`\n Resource per shipped skill (SEP-2640 bridge pattern). v1 ships\n `find-music-for-sync-brief` \u2014 a methodology for searching the public\n directory by audio characteristics + free-text brief. Skill metadata is\n static at boot; bodies load on `skill_get` call. IP-protection lint\n (Rule 14) gates skill content against trade-secret directories before\n publish; cross-coverage parity lint asserts skill resource URIs match\n between stdio and HTTP transports.\n\n## [1.1.0] - 2026-04-21\n\nShipped as minor rather than major despite the `*_full` tool removal:\nthe removed names had near-zero external adoption (they shipped recently\nand weren't advertised externally), and staying on the 1.x line keeps\n`^1.0.0` consumers on the upgrade path rather than stranding them on\nthe broken cascade. Clients that cached the `*_full` names will see a\ntool-not-found error and need to refresh their tool list.\n\n### Breaking\n\n- **Removed `directory_lookup_person_full` and `directory_lookup_work_full`.**\n Both tools hit the same upstream endpoints as their non-`_full` counterparts\n with only a formatting difference \u2014 there was no capability delta. The\n `_full` variants are now the canonical names (`directory_lookup_person`\n and `directory_lookup_work`); the thin variants have been deleted. Clients\n that cached the `_full` names need to update their tool list; the\n replacements return a superset of the prior data, so no output is lost.\n\n### Added\n\n- **`directory_chain` tool** \u2014 one-call rights-chain lookup. Accepts a\n free-text query, a direct ISWC/ISRC `identifier`, or audio-only filters\n (BPM / key / energy / mood). Returns the already-public `ChainResult`\n shape: work + writers + publishers (names + roles only, no IPIs or\n splits) + linked recording + audio characteristics. Wraps the existing\n public `/api/public/directory/chain` endpoint \u2014 no new backing API work.\n- `directory_list_people` now accepts `letter` (A\u2013Z, `#`) for alphabetical\n browsing. The backend has supported this for months; only the MCP tool\n was missing the parameter.\n- `directory_list_works` now accepts `letter`, `sort` (`title` | `recent`),\n and `isrc` \u2014 all previously backend-only.\n\n### Changed\n\n- **`directory_lookup_person` now matches its description.** Previously the\n tool advertised ISNI / IPI / MusicBrainz ID support but the backing query\n only matched `global_creator_id` \u2014 any non-UUID identifier silently 404'd.\n The query now cascades through `global_creator_id` \u2192 `isni` \u2192\n `cae_ipi_number` \u2192 `musicbrainz_id`, first hit wins.\n- `directory_search` description rewritten to drop the false \"ranked\" claim.\n The backing endpoint is a fan-out (`listWorks` + `listPeople`,\n half-limit each), not cross-type ranking. Callers should prefer typed\n list tools when they know the entity type.\n- `directory_lookup_isrc` description rewritten to frame it honestly as a\n pinned filter preset on `list_works` rather than a distinct lookup.\n";
2
+ export declare const PACKAGE_NAME = "@withpica/mcp-server-directory";
3
+ export declare const PACKAGE_VERSION = "1.4.0";
4
+ //# sourceMappingURL=changelog.generated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changelog.generated.d.ts","sourceRoot":"","sources":["../../src/lib/changelog.generated.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,+vIAAwsI,CAAC;AACluI,eAAO,MAAM,YAAY,mCAAmC,CAAC;AAC7D,eAAO,MAAM,eAAe,UAAU,CAAC"}
@@ -0,0 +1,6 @@
1
+ // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
2
+ // Generated by scripts/build-changelog.ts — do not edit.
3
+ export const CHANGELOG_MD = "# Changelog\n\nAll notable changes to `@withpica/mcp-server-directory` are documented here.\n\nThe format is loosely based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),\nand this project adheres to semantic versioning where the major number is incremented\nfor breaking tool-surface changes.\n\n## [Unreleased]\n\n## [1.4.0] - 2026-05-13\n\n### Added\n\n- **`directory_release_notes` tool + `release-notes://withpica/mcp-server-directory/latest` Resource (PR #414).**\n Agent-facing surface for directory MCP release notes. Reads `CHANGELOG.md`\n embedded at build time via `scripts/build-changelog.ts`. Returns the\n last 3 versions by default with optional `since_version` and `sections`\n filters. Resource counterpart serves the full CHANGELOG for\n Resource-native clients. Sister of `pica_release_notes` (creator MCP)\n and `team_release_notes` (team MCP). Disambiguated from catalogue-content\n searches (`directory_search` / `directory_list_works` / `directory_chain`)\n by the NOT-FOR clause in the description.\n\n## [1.3.0] - 2026-05-11\n\n### Added\n\n- **`directory_skill_list` + `directory_skill_get` — skill discovery on the public directory MCP (ADR-140 Phase 2b, PR #371).**\n Lazy-loaded skill catalogue exposed via two meta-tools + one `skill://`\n Resource per shipped skill (SEP-2640 bridge pattern). v1 ships\n `find-music-for-sync-brief` — a methodology for searching the public\n directory by audio characteristics + free-text brief. Skill metadata is\n static at boot; bodies load on `skill_get` call. IP-protection lint\n (Rule 14) gates skill content against trade-secret directories before\n publish; cross-coverage parity lint asserts skill resource URIs match\n between stdio and HTTP transports.\n\n## [1.1.0] - 2026-04-21\n\nShipped as minor rather than major despite the `*_full` tool removal:\nthe removed names had near-zero external adoption (they shipped recently\nand weren't advertised externally), and staying on the 1.x line keeps\n`^1.0.0` consumers on the upgrade path rather than stranding them on\nthe broken cascade. Clients that cached the `*_full` names will see a\ntool-not-found error and need to refresh their tool list.\n\n### Breaking\n\n- **Removed `directory_lookup_person_full` and `directory_lookup_work_full`.**\n Both tools hit the same upstream endpoints as their non-`_full` counterparts\n with only a formatting difference — there was no capability delta. The\n `_full` variants are now the canonical names (`directory_lookup_person`\n and `directory_lookup_work`); the thin variants have been deleted. Clients\n that cached the `_full` names need to update their tool list; the\n replacements return a superset of the prior data, so no output is lost.\n\n### Added\n\n- **`directory_chain` tool** — one-call rights-chain lookup. Accepts a\n free-text query, a direct ISWC/ISRC `identifier`, or audio-only filters\n (BPM / key / energy / mood). Returns the already-public `ChainResult`\n shape: work + writers + publishers (names + roles only, no IPIs or\n splits) + linked recording + audio characteristics. Wraps the existing\n public `/api/public/directory/chain` endpoint — no new backing API work.\n- `directory_list_people` now accepts `letter` (A–Z, `#`) for alphabetical\n browsing. The backend has supported this for months; only the MCP tool\n was missing the parameter.\n- `directory_list_works` now accepts `letter`, `sort` (`title` | `recent`),\n and `isrc` — all previously backend-only.\n\n### Changed\n\n- **`directory_lookup_person` now matches its description.** Previously the\n tool advertised ISNI / IPI / MusicBrainz ID support but the backing query\n only matched `global_creator_id` — any non-UUID identifier silently 404'd.\n The query now cascades through `global_creator_id` → `isni` →\n `cae_ipi_number` → `musicbrainz_id`, first hit wins.\n- `directory_search` description rewritten to drop the false \"ranked\" claim.\n The backing endpoint is a fan-out (`listWorks` + `listPeople`,\n half-limit each), not cross-type ranking. Callers should prefer typed\n list tools when they know the entity type.\n- `directory_lookup_isrc` description rewritten to frame it honestly as a\n pinned filter preset on `list_works` rather than a distinct lookup.\n";
4
+ export const PACKAGE_NAME = "@withpica/mcp-server-directory";
5
+ export const PACKAGE_VERSION = "1.4.0";
6
+ //# sourceMappingURL=changelog.generated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changelog.generated.js","sourceRoot":"","sources":["../../src/lib/changelog.generated.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,yDAAyD;AAEzD,MAAM,CAAC,MAAM,YAAY,GAAG,qsIAAqsI,CAAC;AACluI,MAAM,CAAC,MAAM,YAAY,GAAG,gCAAgC,CAAC;AAC7D,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC"}
@@ -0,0 +1,84 @@
1
+ // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
2
+ export const CHANGELOG_SECTION_NAMES = [
3
+ "Added",
4
+ "Changed",
5
+ "Fixed",
6
+ "Removed",
7
+ "Security",
8
+ "Deprecated",
9
+ ];
10
+ const HEADING_RE = /^##\s+\[([^\]]+)\](?:\s*-\s*(\d{4}-\d{2}-\d{2}))?\s*$/;
11
+ const SECTION_RE = /^###\s+(\w+)\s*$/;
12
+ const BULLET_RE = /^-\s+(.*)$/;
13
+ export function parseChangelogText(text) {
14
+ const lines = text.split("\n");
15
+ const entries = [];
16
+ let current = null;
17
+ let currentSection = null;
18
+ let currentBullet = null;
19
+ const flush = (endLine) => {
20
+ if (current && current.version !== "Unreleased") {
21
+ current.markdown = lines
22
+ .slice(current._start, endLine)
23
+ .join("\n")
24
+ .trimEnd();
25
+ const { _start: _start, ...rest } = current;
26
+ entries.push(rest);
27
+ }
28
+ current = null;
29
+ currentSection = null;
30
+ currentBullet = null;
31
+ };
32
+ for (let i = 0; i < lines.length; i++) {
33
+ const line = lines[i];
34
+ const headingMatch = line.match(HEADING_RE);
35
+ if (headingMatch) {
36
+ flush(i);
37
+ current = {
38
+ version: headingMatch[1],
39
+ date: headingMatch[2] ?? null,
40
+ sections: {},
41
+ markdown: "",
42
+ _start: i,
43
+ };
44
+ currentSection = null;
45
+ continue;
46
+ }
47
+ if (!current)
48
+ continue;
49
+ const sectionMatch = line.match(SECTION_RE);
50
+ if (sectionMatch) {
51
+ const name = sectionMatch[1];
52
+ if (CHANGELOG_SECTION_NAMES.includes(name)) {
53
+ currentSection = name;
54
+ if (!current.sections[name])
55
+ current.sections[name] = [];
56
+ }
57
+ else {
58
+ currentSection = null;
59
+ }
60
+ currentBullet = null;
61
+ continue;
62
+ }
63
+ const bulletMatch = line.match(BULLET_RE);
64
+ if (bulletMatch && currentSection) {
65
+ const arr = current.sections[currentSection];
66
+ arr.push(bulletMatch[1].trim());
67
+ currentBullet = {
68
+ entry: current,
69
+ section: currentSection,
70
+ index: arr.length - 1,
71
+ };
72
+ continue;
73
+ }
74
+ if (currentBullet && line.startsWith(" ") && line.trim().length > 0) {
75
+ const arr = currentBullet.entry.sections[currentBullet.section];
76
+ arr[currentBullet.index] = `${arr[currentBullet.index]} ${line.trim()}`;
77
+ continue;
78
+ }
79
+ currentBullet = null;
80
+ }
81
+ flush(lines.length);
82
+ return entries;
83
+ }
84
+ //# sourceMappingURL=changelog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changelog.js","sourceRoot":"","sources":["../../src/lib/changelog.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"public-question-atlas.d.ts","sourceRoot":"","sources":["../../src/prompts/public-question-atlas.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErC,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,eAAe,CAAC;IAC7B,mEAAmE;IACnE,mBAAmB,CAAC,EAAE,aAAa,CAAC;IACpC,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,oBAAoB,CAAC;IACzC,mEAAmE;IACnE,cAAc,CAAC,EAAE,mBAAmB,CAAC;CACtC;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,EAWnC,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,UAAU,EAqZpC,CAAC"}
1
+ {"version":3,"file":"public-question-atlas.d.ts","sourceRoot":"","sources":["../../src/prompts/public-question-atlas.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErC,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,eAAe,CAAC;IAC7B,mEAAmE;IACnE,mBAAmB,CAAC,EAAE,aAAa,CAAC;IACpC,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,oBAAoB,CAAC;IACzC,mEAAmE;IACnE,cAAc,CAAC,EAAE,mBAAmB,CAAC;CACtC;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,EAWnC,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,UAAU,EA+apC,CAAC"}
@@ -400,5 +400,35 @@ export const PUBLIC_ATLAS = [
400
400
  suggest_query_shape: "title + writer | title + year | ISWC if known",
401
401
  },
402
402
  },
403
+ {
404
+ // ADR-140 Phase 2b — skill discovery meta-questions.
405
+ // Routes to directory_skill_list so an external LLM connecting to the
406
+ // directory MCP via Anthropic's MCP Directory or ChatGPT Apps catalogue
407
+ // can ask "what can this server do?" and get a list of named
408
+ // methodologies (find-music-for-sync-brief, etc.) rather than having
409
+ // to read the full 9-tool surface description-by-description.
410
+ question: "what skills do you have?",
411
+ synonyms: [
412
+ "what can you do?",
413
+ "show me your methodologies",
414
+ "how do I find music here?",
415
+ "how do I use this directory?",
416
+ "what workflows are available?",
417
+ ],
418
+ resolves_to: { kind: "tool", name: "directory_skill_list" },
419
+ },
420
+ // ─────────────────────────────────────────────────────────────────
421
+ // Directory-surface self-introspection — what shipped in this MCP
422
+ // ─────────────────────────────────────────────────────────────────
423
+ {
424
+ question: "what's new in the directory mcp",
425
+ synonyms: [
426
+ "what changed in the directory",
427
+ "directory release notes",
428
+ "what version is the directory on",
429
+ "directory changelog",
430
+ ],
431
+ resolves_to: { kind: "tool", name: "directory_release_notes" },
432
+ },
403
433
  ];
404
434
  //# sourceMappingURL=public-question-atlas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"public-question-atlas.js","sourceRoot":"","sources":["../../src/prompts/public-question-atlas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"public-question-atlas.js","sourceRoot":"","sources":["../../src/prompts/public-question-atlas.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts CHANGED
@@ -4,9 +4,29 @@ export declare class DirectoryMcpServer {
4
4
  private client;
5
5
  private toolRegistry;
6
6
  private promptRegistry;
7
+ private skillsRegistry;
7
8
  private config;
9
+ private clientAttributionLogged;
8
10
  constructor(config: ServerConfig);
9
11
  private setupHandlers;
12
+ /**
13
+ * Emit a single stderr line per session naming the client that handshook
14
+ * with us — sourced from `clientInfo` on the MCP `initialize` request.
15
+ * Self-declared, NOT authenticated; treat as provenance metadata only.
16
+ *
17
+ * Directory MCP is unauthenticated and writes no audit rows, so this
18
+ * stderr breadcrumb is the only attribution surface today. When/if a
19
+ * directory audit pipeline lands, fold these values into McpAuditEntry
20
+ * (the wire shape already carries optional client_name + client_version).
21
+ */
22
+ private logClientAttributionOnce;
23
+ /**
24
+ * Resolve a skill:// URI. ADR-140 Phase 2b — SEP-2640 bridge pattern.
25
+ * Two URI shapes:
26
+ * - skill://withpica/index.json
27
+ * - skill://withpica/<name>/SKILL.md
28
+ */
29
+ private readSkillResource;
10
30
  start(): Promise<void>;
11
31
  stop(): Promise<void>;
12
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,YAAY;IA2BhC,OAAO,CAAC,aAAa;IAkEf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAUtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAI5B"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAQ3C,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,MAAM,CAAe;IAK7B,OAAO,CAAC,uBAAuB,CAAS;gBAE5B,MAAM,EAAE,YAAY;IA4BhC,OAAO,CAAC,aAAa;IA4GrB;;;;;;;;;OASG;IACH,OAAO,CAAC,wBAAwB;IAUhC;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAsDnB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAUtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAI5B"}
package/dist/server.js CHANGED
@@ -7,12 +7,20 @@ import { ToolRegistry } from "./tools/index.js";
7
7
  import { PromptRegistry } from "./prompts/index.js";
8
8
  import { logError } from "./utils/errors.js";
9
9
  import { DIRECTORY_PRIMER } from "./resources/llms-primer.js";
10
+ import { CHANGELOG_MD } from "./lib/changelog.generated.js";
11
+ import { SkillsRegistry } from "./skills/index.js";
10
12
  export class DirectoryMcpServer {
11
13
  server;
12
14
  client;
13
15
  toolRegistry;
14
16
  promptRegistry;
17
+ skillsRegistry;
15
18
  config;
19
+ // Logged once after the MCP `initialize` handshake completes so each
20
+ // session prints a single client-attribution breadcrumb to stderr
21
+ // (Railway logs / Sentry breadcrumbs). Directory MCP has no DB audit
22
+ // pipeline today; this is provenance-only.
23
+ clientAttributionLogged = false;
16
24
  constructor(config) {
17
25
  this.config = config;
18
26
  this.client = new DirectoryClient({
@@ -31,6 +39,7 @@ export class DirectoryMcpServer {
31
39
  });
32
40
  this.toolRegistry = new ToolRegistry(this.client);
33
41
  this.promptRegistry = new PromptRegistry();
42
+ this.skillsRegistry = new SkillsRegistry();
34
43
  this.setupHandlers();
35
44
  }
36
45
  setupHandlers() {
@@ -41,16 +50,35 @@ export class DirectoryMcpServer {
41
50
  return { tools: this.toolRegistry.listTools() };
42
51
  });
43
52
  this.server.setRequestHandler(ListResourcesRequestSchema, async () => {
44
- return {
45
- resources: [
46
- {
47
- uri: "llms://primer",
48
- name: "PICA Domain Primer",
49
- description: "Plain-language description of PICA's domain model, entity relationships, and recommended agent workflows. Read this first.",
50
- mimeType: "text/markdown",
51
- },
52
- ],
53
- };
53
+ const resources = [
54
+ {
55
+ uri: "llms://primer",
56
+ name: "PICA Domain Primer",
57
+ description: "Plain-language description of PICA's domain model, entity relationships, and recommended agent workflows. Read this first.",
58
+ mimeType: "text/markdown",
59
+ },
60
+ {
61
+ uri: "skill://withpica/index.json",
62
+ name: "PICA Directory Skills Index",
63
+ description: "Enumeration of downloadable directory skill methodologies (SEP-2640 bridge). Each entry maps a kebab-case name to its skill:// URI, description, and trigger phrases.",
64
+ mimeType: "application/json",
65
+ },
66
+ {
67
+ uri: "release-notes://withpica/mcp-server-directory/latest",
68
+ name: "Release Notes — @withpica/mcp-server-directory",
69
+ description: "Full CHANGELOG.md for the PICA directory MCP server. For just the last few releases, agents can call directory_release_notes.",
70
+ mimeType: "text/markdown",
71
+ },
72
+ ];
73
+ for (const summary of this.skillsRegistry.listSkills()) {
74
+ resources.push({
75
+ uri: `skill://withpica/${summary.name}/SKILL.md`,
76
+ name: `Skill — ${summary.name}`,
77
+ description: summary.description,
78
+ mimeType: "text/markdown",
79
+ });
80
+ }
81
+ return { resources };
54
82
  });
55
83
  this.server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
56
84
  const { uri } = request.params;
@@ -65,6 +93,20 @@ export class DirectoryMcpServer {
65
93
  ],
66
94
  };
67
95
  }
96
+ if (uri === "release-notes://withpica/mcp-server-directory/latest") {
97
+ return {
98
+ contents: [
99
+ {
100
+ uri,
101
+ mimeType: "text/markdown",
102
+ text: CHANGELOG_MD,
103
+ },
104
+ ],
105
+ };
106
+ }
107
+ if (uri.startsWith("skill://withpica/")) {
108
+ return this.readSkillResource(uri);
109
+ }
68
110
  throw new Error(`Resource not found: ${uri}`);
69
111
  });
70
112
  this.server.setRequestHandler(ListPromptsRequestSchema, async () => {
@@ -76,6 +118,7 @@ export class DirectoryMcpServer {
76
118
  });
77
119
  this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
78
120
  const { name, arguments: args } = request.params;
121
+ this.logClientAttributionOnce();
79
122
  if (this.config.debug) {
80
123
  console.error(`[Directory MCP] Executing tool: ${name}`, args);
81
124
  }
@@ -88,6 +131,82 @@ export class DirectoryMcpServer {
88
131
  }
89
132
  });
90
133
  }
134
+ /**
135
+ * Emit a single stderr line per session naming the client that handshook
136
+ * with us — sourced from `clientInfo` on the MCP `initialize` request.
137
+ * Self-declared, NOT authenticated; treat as provenance metadata only.
138
+ *
139
+ * Directory MCP is unauthenticated and writes no audit rows, so this
140
+ * stderr breadcrumb is the only attribution surface today. When/if a
141
+ * directory audit pipeline lands, fold these values into McpAuditEntry
142
+ * (the wire shape already carries optional client_name + client_version).
143
+ */
144
+ logClientAttributionOnce() {
145
+ if (this.clientAttributionLogged)
146
+ return;
147
+ const info = this.server.getClientVersion?.();
148
+ if (!info)
149
+ return;
150
+ this.clientAttributionLogged = true;
151
+ console.error(`[Directory MCP] client: ${info.name ?? "unknown"} v${info.version ?? "unknown"}`);
152
+ }
153
+ /**
154
+ * Resolve a skill:// URI. ADR-140 Phase 2b — SEP-2640 bridge pattern.
155
+ * Two URI shapes:
156
+ * - skill://withpica/index.json
157
+ * - skill://withpica/<name>/SKILL.md
158
+ */
159
+ readSkillResource(uri) {
160
+ if (uri === "skill://withpica/index.json") {
161
+ const index = this.skillsRegistry.listSkills().map((s) => ({
162
+ name: s.name,
163
+ uri: `skill://withpica/${s.name}/SKILL.md`,
164
+ description: s.description,
165
+ triggers: s.triggers,
166
+ audience: s.audience,
167
+ }));
168
+ return {
169
+ contents: [
170
+ {
171
+ uri,
172
+ mimeType: "application/json",
173
+ text: JSON.stringify({ skills: index }, null, 2),
174
+ },
175
+ ],
176
+ };
177
+ }
178
+ const match = uri.match(/^skill:\/\/withpica\/([a-z0-9-]+)\/SKILL\.md$/);
179
+ if (!match) {
180
+ throw new Error(`Malformed skill URI: ${uri}`);
181
+ }
182
+ const name = match[1];
183
+ if (!this.skillsRegistry.has(name)) {
184
+ throw new Error(`Skill not found: ${name}`);
185
+ }
186
+ const skill = this.skillsRegistry.getSkill(name);
187
+ const frontmatter = [
188
+ "---",
189
+ `name: ${skill.name}`,
190
+ `description: ${skill.description}`,
191
+ "triggers:",
192
+ ...skill.triggers.map((t) => ` - ${t}`),
193
+ `audience: ${skill.audience}`,
194
+ "tools_required:",
195
+ ...skill.tools_required.map((t) => ` - ${t}`),
196
+ `output: ${skill.output}`,
197
+ "---",
198
+ "",
199
+ ].join("\n");
200
+ return {
201
+ contents: [
202
+ {
203
+ uri,
204
+ mimeType: "text/markdown",
205
+ text: frontmatter + skill.body,
206
+ },
207
+ ],
208
+ };
209
+ }
91
210
  async start() {
92
211
  const transport = new StdioServerTransport();
93
212
  await this.server.connect(transport);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Skills Registry — directory MCP, ADR-140 Phase 2b
3
+ *
4
+ * Sister of mcp-server/src/skills/index.ts. Same shape, scoped to the public
5
+ * directory MCP. Body bytes are generated at build time by
6
+ * `scripts/build-skills.ts` and inlined into `skills.generated.ts`.
7
+ *
8
+ * Public/anonymous surface — every skill body must clear the IP-protection
9
+ * lint (scripts/lint-mcp-tools.ts Rule 14) before publishing. Directory MCP
10
+ * skills MUST NOT quote from trade-secret directories listed in
11
+ * `.claude/rules/ip-protection.md`.
12
+ */
13
+ import { SKILLS, SKILL_NAMES, type Skill } from "./skills.generated.js";
14
+ export interface SkillSummary {
15
+ name: string;
16
+ description: string;
17
+ triggers: string[];
18
+ audience: string;
19
+ }
20
+ export declare class SkillsRegistry {
21
+ listNames(): ReadonlyArray<string>;
22
+ listSkills(): SkillSummary[];
23
+ getSkill(name: string): Skill;
24
+ has(name: string): boolean;
25
+ }
26
+ export declare class SkillNotFoundError extends Error {
27
+ readonly skillName: string;
28
+ constructor(skillName: string);
29
+ }
30
+ export { SKILLS, SKILL_NAMES };
31
+ export type { Skill };
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAExE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,cAAc;IACzB,SAAS,IAAI,aAAa,CAAC,MAAM,CAAC;IAIlC,UAAU,IAAI,YAAY,EAAE;IAY5B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;IAQ7B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAG3B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;aACf,SAAS,EAAE,MAAM;gBAAjB,SAAS,EAAE,MAAM;CAI9C;AAED,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AAC/B,YAAY,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,50 @@
1
+ // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
2
+ /**
3
+ * Skills Registry — directory MCP, ADR-140 Phase 2b
4
+ *
5
+ * Sister of mcp-server/src/skills/index.ts. Same shape, scoped to the public
6
+ * directory MCP. Body bytes are generated at build time by
7
+ * `scripts/build-skills.ts` and inlined into `skills.generated.ts`.
8
+ *
9
+ * Public/anonymous surface — every skill body must clear the IP-protection
10
+ * lint (scripts/lint-mcp-tools.ts Rule 14) before publishing. Directory MCP
11
+ * skills MUST NOT quote from trade-secret directories listed in
12
+ * `.claude/rules/ip-protection.md`.
13
+ */
14
+ import { SKILLS, SKILL_NAMES } from "./skills.generated.js";
15
+ export class SkillsRegistry {
16
+ listNames() {
17
+ return SKILL_NAMES;
18
+ }
19
+ listSkills() {
20
+ return SKILL_NAMES.map((name) => {
21
+ const skill = SKILLS[name];
22
+ return {
23
+ name: skill.name,
24
+ description: skill.description,
25
+ triggers: skill.triggers,
26
+ audience: skill.audience,
27
+ };
28
+ });
29
+ }
30
+ getSkill(name) {
31
+ const skill = SKILLS[name];
32
+ if (!skill) {
33
+ throw new SkillNotFoundError(name);
34
+ }
35
+ return skill;
36
+ }
37
+ has(name) {
38
+ return name in SKILLS;
39
+ }
40
+ }
41
+ export class SkillNotFoundError extends Error {
42
+ skillName;
43
+ constructor(skillName) {
44
+ super(`Skill not found: ${skillName}`);
45
+ this.skillName = skillName;
46
+ this.name = "SkillNotFoundError";
47
+ }
48
+ }
49
+ export { SKILLS, SKILL_NAMES };
50
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAc,MAAM,uBAAuB,CAAC;AASxE,MAAM,OAAO,cAAc;IACzB,SAAS;QACP,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,UAAU;QACR,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO;gBACL,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACzB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,IAAI,MAAM,CAAC;IACxB,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IACf;IAA5B,YAA4B,SAAiB;QAC3C,KAAK,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC;QADb,cAAS,GAAT,SAAS,CAAQ;QAE3C,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * GENERATED FILE — DO NOT EDIT BY HAND.
3
+ *
4
+ * Regenerated by `scripts/build-skills.ts` from `src/skills/<name>/SKILL.md`.
5
+ * Runs in `prebuild`. See ADR-140 Phase 2b.
6
+ */
7
+ export interface Skill {
8
+ name: string;
9
+ description: string;
10
+ triggers: string[];
11
+ audience: string;
12
+ tools_required: string[];
13
+ output: string;
14
+ body: string;
15
+ }
16
+ export declare const SKILLS: Record<string, Skill>;
17
+ export declare const SKILL_NAMES: ReadonlyArray<string>;
18
+ //# sourceMappingURL=skills.generated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.generated.d.ts","sourceRoot":"","sources":["../../src/skills/skills.generated.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAGD,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAUxC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,aAAa,CAAC,MAAM,CAAiC,CAAC"}