Skip to content

Add dynamic MCP server dependency loading (port from skillsdotnet)#58

Draft
olaservo wants to merge 2 commits intomodelcontextprotocol:add-skills-as-resources-examplefrom
olaservo:feature/dynamic-server-deps
Draft

Add dynamic MCP server dependency loading (port from skillsdotnet)#58
olaservo wants to merge 2 commits intomodelcontextprotocol:add-skills-as-resources-examplefrom
olaservo:feature/dynamic-server-deps

Conversation

@olaservo
Copy link
Member

@olaservo olaservo commented Mar 8, 2026

Summary

  • Demonstrates declaring MCP server dependencies in YAML frontmatter (dependencies: [server-name])
  • New SkillCatalog class (TypeScript port of skillsdotnet's SkillCatalog) discovers skills, caches frontmatter context, and fires an onDependenciesRequired callback when loading a skill with dependencies — enabling the host to connect required servers on demand
  • Server-side: discoverSkills() parses dependencies, resource descriptions include (requires: ...) suffix
  • Client-side: parseSkillFrontmatter() and listSkillResources() extract dependencies; buildSkillsSummary() and XML generators include dependency info

New files

  • typescript/sdk/src/catalog.tsSkillCatalog with addClient, removeClient, loadSkill, onDependenciesRequired, getLoadSkillToolDefinition
  • examples/sample-skills/explore-everything/SKILL.md — sample skill with dependencies: [everything-server]
  • examples/dynamic-server-loading/typescript/ — end-to-end demo (TypeScript port of skillsdotnet's DynamicMcpServers sample)

Test plan

  • 106 unit tests passing (44 new) — catalog, dependency parsing, XML generation
  • 10 smoke tests passing (3 new) — dependency metadata in resources/list, descriptions, XML
  • End-to-end verified: skill server → SkillCatalog → onDependenciesRequired callback → dynamically connects @modelcontextprotocol/server-everything via npx → 11 tools discovered

🤖 Generated with Claude Code

Co-authored with @PederHP (skillsdotnet)

olaservo and others added 2 commits March 8, 2026 13:52
Port the skill dependency resolution pattern from skillsdotnet's
SkillCatalog to TypeScript. Skills can now declare MCP server
dependencies in frontmatter (e.g. dependencies: [everything-server]),
and a client-side SkillCatalog fires an onDependenciesRequired callback
when loading a skill with dependencies, enabling the host to connect
required servers on demand.

SDK changes:
- Parse dependencies in discoverSkills() and parseSkillFrontmatter()
- Expose dependencies in resource descriptions via (requires: ...) suffix
- Add SkillDependencyRequest type and SkillCatalog class
- Include <dependencies> element in XML generation

New files:
- catalog.ts: SkillCatalog with addClient, removeClient, loadSkill,
  onDependenciesRequired callback, getLoadSkillToolDefinition
- explore-everything sample skill with dependencies: [everything-server]
- dynamic-server-loading example (TypeScript port of DynamicMcpServers)

Tests: 106 passing (44 new) covering catalog, dependency parsing,
XML generation, and smoke tests.

Co-Authored-By: Peder Holdgaard Pedersen <127606677+PederHP@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use path.resolve with __dirname instead of URL.pathname to avoid
the /C:/... double-prefix issue on Windows.

Co-Authored-By: Peder Holdgaard Pedersen <127606677+PederHP@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant