workspace-architect 1.3.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 (354) hide show
  1. package/.env.example +1 -0
  2. package/.gitattributes +1 -0
  3. package/.github/workflows/manual-publish.yml +36 -0
  4. package/.github/workflows/sync-and-publish.yml +58 -0
  5. package/.release-it.json +20 -0
  6. package/CHANGELOG.md +43 -0
  7. package/README.md +62 -0
  8. package/assets/chatmodes/4.1-Beast.chatmode.md +152 -0
  9. package/assets/chatmodes/Thinking-Beast-Mode.chatmode.md +337 -0
  10. package/assets/chatmodes/Ultimate-Transparent-Thinking-Beast-Mode.chatmode.md +644 -0
  11. package/assets/chatmodes/accessibility.chatmode.md +298 -0
  12. package/assets/chatmodes/address-comments.chatmode.md +59 -0
  13. package/assets/chatmodes/aem-frontend-specialist.chatmode.md +385 -0
  14. package/assets/chatmodes/api-architect.chatmode.md +40 -0
  15. package/assets/chatmodes/atlassian-requirements-to-jira.chatmode.md +444 -0
  16. package/assets/chatmodes/azure-logic-apps-expert.chatmode.md +100 -0
  17. package/assets/chatmodes/azure-principal-architect.chatmode.md +58 -0
  18. package/assets/chatmodes/azure-saas-architect.chatmode.md +118 -0
  19. package/assets/chatmodes/azure-verified-modules-bicep.chatmode.md +44 -0
  20. package/assets/chatmodes/azure-verified-modules-terraform.chatmode.md +58 -0
  21. package/assets/chatmodes/bicep-implement.chatmode.md +40 -0
  22. package/assets/chatmodes/bicep-plan.chatmode.md +112 -0
  23. package/assets/chatmodes/blueprint-mode-codex.chatmode.md +110 -0
  24. package/assets/chatmodes/blueprint-mode.chatmode.md +171 -0
  25. package/assets/chatmodes/clojure-interactive-programming.chatmode.md +174 -0
  26. package/assets/chatmodes/code-tour.chatmode.md +205 -0
  27. package/assets/chatmodes/critical-thinking.chatmode.md +23 -0
  28. package/assets/chatmodes/csharp-dotnet-janitor.chatmode.md +83 -0
  29. package/assets/chatmodes/csharp-mcp-expert.chatmode.md +69 -0
  30. package/assets/chatmodes/debug.chatmode.md +79 -0
  31. package/assets/chatmodes/declarative-agents-architect.chatmode.md +76 -0
  32. package/assets/chatmodes/demonstrate-understanding.chatmode.md +60 -0
  33. package/assets/chatmodes/dotnet-upgrade.chatmode.md +222 -0
  34. package/assets/chatmodes/drupal-expert.chatmode.md +687 -0
  35. package/assets/chatmodes/electron-angular-native.chatmode.md +285 -0
  36. package/assets/chatmodes/expert-cpp-software-engineer.chatmode.md +27 -0
  37. package/assets/chatmodes/expert-dotnet-software-engineer.chatmode.md +22 -0
  38. package/assets/chatmodes/expert-nextjs-developer.chatmode.md +477 -0
  39. package/assets/chatmodes/expert-react-frontend-engineer.chatmode.md +738 -0
  40. package/assets/chatmodes/gilfoyle.chatmode.md +66 -0
  41. package/assets/chatmodes/go-mcp-expert.chatmode.md +122 -0
  42. package/assets/chatmodes/gpt-5-beast-mode.chatmode.md +109 -0
  43. package/assets/chatmodes/hlbpa.chatmode.md +232 -0
  44. package/assets/chatmodes/implementation-plan.chatmode.md +159 -0
  45. package/assets/chatmodes/janitor.chatmode.md +89 -0
  46. package/assets/chatmodes/java-mcp-expert.chatmode.md +325 -0
  47. package/assets/chatmodes/kotlin-mcp-expert.chatmode.md +181 -0
  48. package/assets/chatmodes/kusto-assistant.chatmode.md +143 -0
  49. package/assets/chatmodes/laravel-expert-agent.chatmode.md +628 -0
  50. package/assets/chatmodes/mentor.chatmode.md +32 -0
  51. package/assets/chatmodes/meta-agentic-project-scaffold.chatmode.md +15 -0
  52. package/assets/chatmodes/microsoft-agent-framework-dotnet.chatmode.md +62 -0
  53. package/assets/chatmodes/microsoft-agent-framework-python.chatmode.md +62 -0
  54. package/assets/chatmodes/microsoft-study-mode.chatmode.md +32 -0
  55. package/assets/chatmodes/microsoft_learn_contributor.chatmode.md +388 -0
  56. package/assets/chatmodes/ms-sql-dba.chatmode.md +25 -0
  57. package/assets/chatmodes/php-mcp-expert.chatmode.md +498 -0
  58. package/assets/chatmodes/pimcore-expert.chatmode.md +869 -0
  59. package/assets/chatmodes/plan.chatmode.md +114 -0
  60. package/assets/chatmodes/planner.chatmode.md +14 -0
  61. package/assets/chatmodes/playwright-tester.chatmode.md +13 -0
  62. package/assets/chatmodes/postgresql-dba.chatmode.md +17 -0
  63. package/assets/chatmodes/power-bi-data-modeling-expert.chatmode.md +319 -0
  64. package/assets/chatmodes/power-bi-dax-expert.chatmode.md +334 -0
  65. package/assets/chatmodes/power-bi-performance-expert.chatmode.md +533 -0
  66. package/assets/chatmodes/power-bi-visualization-expert.chatmode.md +549 -0
  67. package/assets/chatmodes/power-platform-expert.chatmode.md +116 -0
  68. package/assets/chatmodes/power-platform-mcp-integration-expert.chatmode.md +149 -0
  69. package/assets/chatmodes/prd.chatmode.md +201 -0
  70. package/assets/chatmodes/principal-software-engineer.chatmode.md +41 -0
  71. package/assets/chatmodes/prompt-builder.chatmode.md +352 -0
  72. package/assets/chatmodes/prompt-engineer.chatmode.md +72 -0
  73. package/assets/chatmodes/python-mcp-expert.chatmode.md +99 -0
  74. package/assets/chatmodes/refine-issue.chatmode.md +34 -0
  75. package/assets/chatmodes/research-technical-spike.chatmode.md +169 -0
  76. package/assets/chatmodes/ruby-mcp-expert.chatmode.md +346 -0
  77. package/assets/chatmodes/rust-gpt-4.1-beast-mode.chatmode.md +197 -0
  78. package/assets/chatmodes/rust-mcp-expert.chatmode.md +465 -0
  79. package/assets/chatmodes/search-ai-optimization-expert.chatmode.md +227 -0
  80. package/assets/chatmodes/semantic-kernel-dotnet.chatmode.md +31 -0
  81. package/assets/chatmodes/semantic-kernel-python.chatmode.md +28 -0
  82. package/assets/chatmodes/shopify-expert.chatmode.md +681 -0
  83. package/assets/chatmodes/simple-app-idea-generator.chatmode.md +134 -0
  84. package/assets/chatmodes/software-engineer-agent-v1.chatmode.md +164 -0
  85. package/assets/chatmodes/specification.chatmode.md +127 -0
  86. package/assets/chatmodes/swift-mcp-expert.chatmode.md +240 -0
  87. package/assets/chatmodes/task-planner.chatmode.md +374 -0
  88. package/assets/chatmodes/task-researcher.chatmode.md +254 -0
  89. package/assets/chatmodes/tdd-green.chatmode.md +59 -0
  90. package/assets/chatmodes/tdd-red.chatmode.md +59 -0
  91. package/assets/chatmodes/tdd-refactor.chatmode.md +84 -0
  92. package/assets/chatmodes/tech-debt-remediation-plan.chatmode.md +49 -0
  93. package/assets/chatmodes/terraform-azure-implement.chatmode.md +104 -0
  94. package/assets/chatmodes/terraform-azure-planning.chatmode.md +157 -0
  95. package/assets/chatmodes/typescript-mcp-expert.chatmode.md +91 -0
  96. package/assets/chatmodes/voidbeast-gpt41enhanced.chatmode.md +230 -0
  97. package/assets/chatmodes/wg-code-alchemist.chatmode.md +61 -0
  98. package/assets/chatmodes/wg-code-sentinel.chatmode.md +55 -0
  99. package/assets/collections/ai-prompt-engineering.json +18 -0
  100. package/assets/collections/angular-development.json +7 -0
  101. package/assets/collections/azure-cloud-architect.json +29 -0
  102. package/assets/collections/cpp-development.json +6 -0
  103. package/assets/collections/database-administration.json +8 -0
  104. package/assets/collections/devops-sre.json +11 -0
  105. package/assets/collections/dotnet-development.json +22 -0
  106. package/assets/collections/general-productivity.json +9 -0
  107. package/assets/collections/go-development.json +7 -0
  108. package/assets/collections/java-spring-developer.json +26 -0
  109. package/assets/collections/learning-mentoring.json +10 -0
  110. package/assets/collections/legacy-migration.json +4 -0
  111. package/assets/collections/mcp-specialist.json +41 -0
  112. package/assets/collections/mobile-development.json +4 -0
  113. package/assets/collections/php-cms-development.json +11 -0
  114. package/assets/collections/power-platform-specialist.json +31 -0
  115. package/assets/collections/project-management.json +12 -0
  116. package/assets/collections/python-development.json +13 -0
  117. package/assets/collections/quality-assurance.json +13 -0
  118. package/assets/collections/ruby-development.json +9 -0
  119. package/assets/collections/rust-development.json +10 -0
  120. package/assets/collections/security-specialist.json +8 -0
  121. package/assets/collections/software-architect.json +25 -0
  122. package/assets/collections/technical-writing.json +9 -0
  123. package/assets/collections/web-frontend-development.json +14 -0
  124. package/assets/instructions/a11y.instructions.md +369 -0
  125. package/assets/instructions/ai-prompt-engineering-safety-best-practices.instructions.md +867 -0
  126. package/assets/instructions/angular.instructions.md +104 -0
  127. package/assets/instructions/ansible.instructions.md +88 -0
  128. package/assets/instructions/aspnet-rest-apis.instructions.md +110 -0
  129. package/assets/instructions/astro.instructions.md +182 -0
  130. package/assets/instructions/azure-devops-pipelines.instructions.md +185 -0
  131. package/assets/instructions/azure-functions-typescript.instructions.md +14 -0
  132. package/assets/instructions/azure-logic-apps-power-automate.instructions.md +1943 -0
  133. package/assets/instructions/azure-verified-modules-terraform.instructions.md +229 -0
  134. package/assets/instructions/bicep-code-best-practices.instructions.md +54 -0
  135. package/assets/instructions/blazor.instructions.md +77 -0
  136. package/assets/instructions/clojure.instructions.md +349 -0
  137. package/assets/instructions/cmake-vcpkg.instructions.md +10 -0
  138. package/assets/instructions/codexer.instructions.md +428 -0
  139. package/assets/instructions/coldfusion-cfc.instructions.md +30 -0
  140. package/assets/instructions/coldfusion-cfm.instructions.md +28 -0
  141. package/assets/instructions/collections.instructions.md +54 -0
  142. package/assets/instructions/containerization-docker-best-practices.instructions.md +681 -0
  143. package/assets/instructions/convert-jpa-to-spring-data-cosmos.instructions.md +949 -0
  144. package/assets/instructions/copilot-thought-logging.instructions.md +62 -0
  145. package/assets/instructions/csharp-ja.instructions.md +114 -0
  146. package/assets/instructions/csharp-ko.instructions.md +77 -0
  147. package/assets/instructions/csharp-mcp-server.instructions.md +95 -0
  148. package/assets/instructions/csharp.instructions.md +114 -0
  149. package/assets/instructions/dart-n-flutter.instructions.md +447 -0
  150. package/assets/instructions/declarative-agents-microsoft365.instructions.md +316 -0
  151. package/assets/instructions/devbox-image-definition.instructions.md +302 -0
  152. package/assets/instructions/devops-core-principles.instructions.md +167 -0
  153. package/assets/instructions/dotnet-architecture-good-practices.instructions.md +279 -0
  154. package/assets/instructions/dotnet-framework.instructions.md +113 -0
  155. package/assets/instructions/dotnet-maui-9-to-dotnet-maui-10-upgrade.instructions.md +1922 -0
  156. package/assets/instructions/dotnet-maui.instructions.md +69 -0
  157. package/assets/instructions/dotnet-upgrade.instructions.md +287 -0
  158. package/assets/instructions/dotnet-wpf.instructions.md +79 -0
  159. package/assets/instructions/genaiscript.instructions.md +21 -0
  160. package/assets/instructions/generate-modern-terraform-code-for-azure.instructions.md +82 -0
  161. package/assets/instructions/gilfoyle-code-review.instructions.md +114 -0
  162. package/assets/instructions/github-actions-ci-cd-best-practices.instructions.md +607 -0
  163. package/assets/instructions/go-mcp-server.instructions.md +346 -0
  164. package/assets/instructions/go.instructions.md +373 -0
  165. package/assets/instructions/instructions.instructions.md +256 -0
  166. package/assets/instructions/java-11-to-java-17-upgrade.instructions.md +793 -0
  167. package/assets/instructions/java-17-to-java-21-upgrade.instructions.md +464 -0
  168. package/assets/instructions/java-21-to-java-25-upgrade.instructions.md +311 -0
  169. package/assets/instructions/java-mcp-server.instructions.md +553 -0
  170. package/assets/instructions/java.instructions.md +81 -0
  171. package/assets/instructions/joyride-user-project.instructions.md +206 -0
  172. package/assets/instructions/joyride-workspace-automation.instructions.md +46 -0
  173. package/assets/instructions/kotlin-mcp-server.instructions.md +481 -0
  174. package/assets/instructions/kubernetes-deployment-best-practices.instructions.md +307 -0
  175. package/assets/instructions/langchain-python.instructions.md +229 -0
  176. package/assets/instructions/localization.instructions.md +39 -0
  177. package/assets/instructions/makefile.instructions.md +410 -0
  178. package/assets/instructions/markdown.instructions.md +52 -0
  179. package/assets/instructions/memory-bank.instructions.md +299 -0
  180. package/assets/instructions/mongo-dba.instructions.md +25 -0
  181. package/assets/instructions/ms-sql-dba.instructions.md +25 -0
  182. package/assets/instructions/nestjs.instructions.md +406 -0
  183. package/assets/instructions/nextjs-tailwind.instructions.md +72 -0
  184. package/assets/instructions/nextjs.instructions.md +143 -0
  185. package/assets/instructions/nodejs-javascript-vitest.instructions.md +30 -0
  186. package/assets/instructions/object-calisthenics.instructions.md +302 -0
  187. package/assets/instructions/oqtane.instructions.md +86 -0
  188. package/assets/instructions/performance-optimization.instructions.md +420 -0
  189. package/assets/instructions/php-mcp-server.instructions.md +809 -0
  190. package/assets/instructions/playwright-dotnet.instructions.md +101 -0
  191. package/assets/instructions/playwright-python.instructions.md +62 -0
  192. package/assets/instructions/playwright-typescript.instructions.md +86 -0
  193. package/assets/instructions/power-apps-canvas-yaml.instructions.md +827 -0
  194. package/assets/instructions/power-apps-code-apps.instructions.md +601 -0
  195. package/assets/instructions/power-bi-custom-visuals-development.instructions.md +810 -0
  196. package/assets/instructions/power-bi-data-modeling-best-practices.instructions.md +639 -0
  197. package/assets/instructions/power-bi-dax-best-practices.instructions.md +795 -0
  198. package/assets/instructions/power-bi-devops-alm-best-practices.instructions.md +623 -0
  199. package/assets/instructions/power-bi-report-design-best-practices.instructions.md +752 -0
  200. package/assets/instructions/power-bi-security-rls-best-practices.instructions.md +504 -0
  201. package/assets/instructions/power-platform-connector.instructions.md +430 -0
  202. package/assets/instructions/power-platform-mcp-development.instructions.md +88 -0
  203. package/assets/instructions/powershell-pester-5.instructions.md +197 -0
  204. package/assets/instructions/powershell.instructions.md +356 -0
  205. package/assets/instructions/prompt.instructions.md +73 -0
  206. package/assets/instructions/python-mcp-server.instructions.md +204 -0
  207. package/assets/instructions/python.instructions.md +56 -0
  208. package/assets/instructions/quarkus-mcp-server-sse.instructions.md +49 -0
  209. package/assets/instructions/quarkus.instructions.md +98 -0
  210. package/assets/instructions/r.instructions.md +116 -0
  211. package/assets/instructions/reactjs.instructions.md +162 -0
  212. package/assets/instructions/ruby-mcp-server.instructions.md +629 -0
  213. package/assets/instructions/ruby-on-rails.instructions.md +124 -0
  214. package/assets/instructions/rust-mcp-server.instructions.md +715 -0
  215. package/assets/instructions/rust.instructions.md +135 -0
  216. package/assets/instructions/security-and-owasp.instructions.md +51 -0
  217. package/assets/instructions/self-explanatory-code-commenting.instructions.md +162 -0
  218. package/assets/instructions/shell.instructions.md +132 -0
  219. package/assets/instructions/spec-driven-workflow-v1.instructions.md +323 -0
  220. package/assets/instructions/springboot.instructions.md +68 -0
  221. package/assets/instructions/sql-sp-generation.instructions.md +74 -0
  222. package/assets/instructions/svelte.instructions.md +161 -0
  223. package/assets/instructions/swift-mcp-server.instructions.md +498 -0
  224. package/assets/instructions/taming-copilot.instructions.md +40 -0
  225. package/assets/instructions/tanstack-start-shadcn-tailwind.instructions.md +212 -0
  226. package/assets/instructions/task-implementation.instructions.md +190 -0
  227. package/assets/instructions/tasksync.instructions.md +352 -0
  228. package/assets/instructions/terraform-azure.instructions.md +254 -0
  229. package/assets/instructions/terraform-sap-btp.instructions.md +195 -0
  230. package/assets/instructions/terraform.instructions.md +113 -0
  231. package/assets/instructions/typescript-5-es2022.instructions.md +114 -0
  232. package/assets/instructions/typescript-mcp-server.instructions.md +228 -0
  233. package/assets/instructions/update-code-from-shorthand.instructions.md +130 -0
  234. package/assets/instructions/vuejs3.instructions.md +153 -0
  235. package/assets/instructions/wordpress.instructions.md +186 -0
  236. package/assets/prompts/add-educational-comments.prompt.md +129 -0
  237. package/assets/prompts/ai-prompt-engineering-safety-review.prompt.md +230 -0
  238. package/assets/prompts/architecture-blueprint-generator.prompt.md +322 -0
  239. package/assets/prompts/aspnet-minimal-api-openapi.prompt.md +42 -0
  240. package/assets/prompts/az-cost-optimize.prompt.md +305 -0
  241. package/assets/prompts/azure-resource-health-diagnose.prompt.md +290 -0
  242. package/assets/prompts/boost-prompt.prompt.md +25 -0
  243. package/assets/prompts/breakdown-epic-arch.prompt.md +66 -0
  244. package/assets/prompts/breakdown-epic-pm.prompt.md +58 -0
  245. package/assets/prompts/breakdown-feature-implementation.prompt.md +128 -0
  246. package/assets/prompts/breakdown-feature-prd.prompt.md +61 -0
  247. package/assets/prompts/breakdown-plan.prompt.md +509 -0
  248. package/assets/prompts/breakdown-test.prompt.md +365 -0
  249. package/assets/prompts/code-exemplars-blueprint-generator.prompt.md +126 -0
  250. package/assets/prompts/comment-code-generate-a-tutorial.prompt.md +26 -0
  251. package/assets/prompts/containerize-aspnet-framework.prompt.md +455 -0
  252. package/assets/prompts/containerize-aspnetcore.prompt.md +393 -0
  253. package/assets/prompts/conventional-commit.prompt.md +73 -0
  254. package/assets/prompts/copilot-instructions-blueprint-generator.prompt.md +294 -0
  255. package/assets/prompts/cosmosdb-datamodeling.prompt.md +1045 -0
  256. package/assets/prompts/create-agentsmd.prompt.md +249 -0
  257. package/assets/prompts/create-architectural-decision-record.prompt.md +97 -0
  258. package/assets/prompts/create-github-action-workflow-specification.prompt.md +276 -0
  259. package/assets/prompts/create-github-issue-feature-from-specification.prompt.md +28 -0
  260. package/assets/prompts/create-github-issues-feature-from-implementation-plan.prompt.md +28 -0
  261. package/assets/prompts/create-github-issues-for-unmet-specification-requirements.prompt.md +35 -0
  262. package/assets/prompts/create-github-pull-request-from-specification.prompt.md +24 -0
  263. package/assets/prompts/create-implementation-plan.prompt.md +157 -0
  264. package/assets/prompts/create-llms.prompt.md +210 -0
  265. package/assets/prompts/create-oo-component-documentation.prompt.md +193 -0
  266. package/assets/prompts/create-readme.prompt.md +21 -0
  267. package/assets/prompts/create-specification.prompt.md +127 -0
  268. package/assets/prompts/create-spring-boot-java-project.prompt.md +163 -0
  269. package/assets/prompts/create-spring-boot-kotlin-project.prompt.md +147 -0
  270. package/assets/prompts/create-technical-spike.prompt.md +231 -0
  271. package/assets/prompts/csharp-async.prompt.md +50 -0
  272. package/assets/prompts/csharp-docs.prompt.md +63 -0
  273. package/assets/prompts/csharp-mcp-server-generator.prompt.md +59 -0
  274. package/assets/prompts/csharp-mstest.prompt.md +67 -0
  275. package/assets/prompts/csharp-nunit.prompt.md +72 -0
  276. package/assets/prompts/csharp-tunit.prompt.md +101 -0
  277. package/assets/prompts/csharp-xunit.prompt.md +69 -0
  278. package/assets/prompts/declarative-agents.prompt.md +93 -0
  279. package/assets/prompts/documentation-writer.prompt.md +46 -0
  280. package/assets/prompts/dotnet-best-practices.prompt.md +84 -0
  281. package/assets/prompts/dotnet-design-pattern-review.prompt.md +41 -0
  282. package/assets/prompts/dotnet-upgrade.prompt.md +116 -0
  283. package/assets/prompts/editorconfig.prompt.md +64 -0
  284. package/assets/prompts/ef-core.prompt.md +76 -0
  285. package/assets/prompts/finalize-agent-prompt.prompt.md +27 -0
  286. package/assets/prompts/first-ask.prompt.md +29 -0
  287. package/assets/prompts/folder-structure-blueprint-generator.prompt.md +405 -0
  288. package/assets/prompts/gen-specs-as-issues.prompt.md +165 -0
  289. package/assets/prompts/generate-custom-instructions-from-codebase.prompt.md +240 -0
  290. package/assets/prompts/git-flow-branch-creator.prompt.md +293 -0
  291. package/assets/prompts/github-copilot-starter.prompt.md +372 -0
  292. package/assets/prompts/go-mcp-server-generator.prompt.md +334 -0
  293. package/assets/prompts/java-docs.prompt.md +24 -0
  294. package/assets/prompts/java-junit.prompt.md +64 -0
  295. package/assets/prompts/java-mcp-server-generator.prompt.md +756 -0
  296. package/assets/prompts/java-refactoring-extract-method.prompt.md +105 -0
  297. package/assets/prompts/java-refactoring-remove-parameter.prompt.md +85 -0
  298. package/assets/prompts/java-springboot.prompt.md +66 -0
  299. package/assets/prompts/javascript-typescript-jest.prompt.md +44 -0
  300. package/assets/prompts/kotlin-mcp-server-generator.prompt.md +449 -0
  301. package/assets/prompts/kotlin-springboot.prompt.md +71 -0
  302. package/assets/prompts/mcp-copilot-studio-server-generator.prompt.md +118 -0
  303. package/assets/prompts/memory-merger.prompt.md +107 -0
  304. package/assets/prompts/mkdocs-translations.prompt.md +110 -0
  305. package/assets/prompts/model-recommendation.prompt.md +677 -0
  306. package/assets/prompts/multi-stage-dockerfile.prompt.md +47 -0
  307. package/assets/prompts/my-issues.prompt.md +9 -0
  308. package/assets/prompts/my-pull-requests.prompt.md +15 -0
  309. package/assets/prompts/next-intl-add-language.prompt.md +20 -0
  310. package/assets/prompts/php-mcp-server-generator.prompt.md +522 -0
  311. package/assets/prompts/playwright-automation-fill-in-form.prompt.md +30 -0
  312. package/assets/prompts/playwright-explore-website.prompt.md +19 -0
  313. package/assets/prompts/playwright-generate-test.prompt.md +19 -0
  314. package/assets/prompts/postgresql-code-review.prompt.md +214 -0
  315. package/assets/prompts/postgresql-optimization.prompt.md +406 -0
  316. package/assets/prompts/power-apps-code-app-scaffold.prompt.md +150 -0
  317. package/assets/prompts/power-bi-dax-optimization.prompt.md +175 -0
  318. package/assets/prompts/power-bi-model-design-review.prompt.md +405 -0
  319. package/assets/prompts/power-bi-performance-troubleshooting.prompt.md +384 -0
  320. package/assets/prompts/power-bi-report-design-consultation.prompt.md +353 -0
  321. package/assets/prompts/power-platform-mcp-connector-suite.prompt.md +156 -0
  322. package/assets/prompts/project-workflow-analysis-blueprint-generator.prompt.md +294 -0
  323. package/assets/prompts/prompt-builder.prompt.md +142 -0
  324. package/assets/prompts/pytest-coverage.prompt.md +28 -0
  325. package/assets/prompts/python-mcp-server-generator.prompt.md +105 -0
  326. package/assets/prompts/readme-blueprint-generator.prompt.md +79 -0
  327. package/assets/prompts/remember-interactive-programming.prompt.md +13 -0
  328. package/assets/prompts/remember.prompt.md +125 -0
  329. package/assets/prompts/repo-story-time.prompt.md +156 -0
  330. package/assets/prompts/review-and-refactor.prompt.md +15 -0
  331. package/assets/prompts/ruby-mcp-server-generator.prompt.md +660 -0
  332. package/assets/prompts/rust-mcp-server-generator.prompt.md +578 -0
  333. package/assets/prompts/shuffle-json-data.prompt.md +151 -0
  334. package/assets/prompts/sql-code-review.prompt.md +303 -0
  335. package/assets/prompts/sql-optimization.prompt.md +298 -0
  336. package/assets/prompts/suggest-awesome-github-copilot-agents.prompt.md +72 -0
  337. package/assets/prompts/suggest-awesome-github-copilot-chatmodes.prompt.md +71 -0
  338. package/assets/prompts/suggest-awesome-github-copilot-collections.prompt.md +149 -0
  339. package/assets/prompts/suggest-awesome-github-copilot-instructions.prompt.md +88 -0
  340. package/assets/prompts/suggest-awesome-github-copilot-prompts.prompt.md +71 -0
  341. package/assets/prompts/swift-mcp-server-generator.prompt.md +669 -0
  342. package/assets/prompts/technology-stack-blueprint-generator.prompt.md +242 -0
  343. package/assets/prompts/typescript-mcp-server-generator.prompt.md +90 -0
  344. package/assets/prompts/update-avm-modules-in-bicep.prompt.md +60 -0
  345. package/assets/prompts/update-implementation-plan.prompt.md +157 -0
  346. package/assets/prompts/update-llms.prompt.md +216 -0
  347. package/assets/prompts/update-markdown-file-index.prompt.md +76 -0
  348. package/assets/prompts/update-oo-component-documentation.prompt.md +162 -0
  349. package/assets/prompts/update-specification.prompt.md +127 -0
  350. package/assets/prompts/write-coding-standards-from-file.prompt.md +316 -0
  351. package/bin/cli.js +200 -0
  352. package/package.json +53 -0
  353. package/scripts/sync.js +99 -0
  354. package/verdaccio/config.yaml +202 -0
@@ -0,0 +1,715 @@
1
+ ---
2
+ description: 'Best practices for building Model Context Protocol servers in Rust using the official rmcp SDK with async/await patterns'
3
+ applyTo: '**/*.rs'
4
+ ---
5
+
6
+ # Rust MCP Server Development Best Practices
7
+
8
+ This guide provides best practices for building Model Context Protocol (MCP) servers using the official Rust SDK (`rmcp`).
9
+
10
+ ## Installation and Setup
11
+
12
+ ### Add Dependencies
13
+
14
+ Add the `rmcp` crate to your `Cargo.toml`:
15
+
16
+ ```toml
17
+ [dependencies]
18
+ rmcp = { version = "0.8.1", features = ["server"] }
19
+ tokio = { version = "1", features = ["full"] }
20
+ serde = { version = "1.0", features = ["derive"] }
21
+ serde_json = "1.0"
22
+ anyhow = "1.0"
23
+ tracing = "0.1"
24
+ tracing-subscriber = "0.3"
25
+ ```
26
+
27
+ For macros support:
28
+
29
+ ```toml
30
+ [dependencies]
31
+ rmcp-macros = "0.8"
32
+ schemars = { version = "0.8", features = ["derive"] }
33
+ ```
34
+
35
+ ### Project Structure
36
+
37
+ Organize your Rust MCP server project:
38
+
39
+ ```
40
+ my-mcp-server/
41
+ ├── Cargo.toml
42
+ ├── src/
43
+ │ ├── main.rs # Server entry point
44
+ │ ├── handler.rs # ServerHandler implementation
45
+ │ ├── tools/
46
+ │ │ ├── mod.rs
47
+ │ │ ├── calculator.rs
48
+ │ │ └── greeter.rs
49
+ │ ├── prompts/
50
+ │ │ ├── mod.rs
51
+ │ │ └── code_review.rs
52
+ │ └── resources/
53
+ │ ├── mod.rs
54
+ │ └── data.rs
55
+ └── tests/
56
+ └── integration_tests.rs
57
+ ```
58
+
59
+ ## Server Implementation
60
+
61
+ ### Basic Server Setup
62
+
63
+ Create a server with stdio transport:
64
+
65
+ ```rust
66
+ use rmcp::{
67
+ protocol::ServerCapabilities,
68
+ server::{Server, ServerHandler},
69
+ transport::StdioTransport,
70
+ };
71
+ use tokio::signal;
72
+
73
+ #[tokio::main]
74
+ async fn main() -> anyhow::Result<()> {
75
+ tracing_subscriber::fmt::init();
76
+
77
+ let handler = MyServerHandler::new();
78
+ let transport = StdioTransport::new();
79
+
80
+ let server = Server::builder()
81
+ .with_handler(handler)
82
+ .with_capabilities(ServerCapabilities {
83
+ tools: Some(Default::default()),
84
+ prompts: Some(Default::default()),
85
+ resources: Some(Default::default()),
86
+ ..Default::default()
87
+ })
88
+ .build(transport)?;
89
+
90
+ server.run(signal::ctrl_c()).await?;
91
+
92
+ Ok(())
93
+ }
94
+ ```
95
+
96
+ ### ServerHandler Implementation
97
+
98
+ Implement the `ServerHandler` trait:
99
+
100
+ ```rust
101
+ use rmcp::{
102
+ model::*,
103
+ protocol::*,
104
+ server::{RequestContext, ServerHandler, RoleServer},
105
+ ErrorData,
106
+ };
107
+
108
+ pub struct MyServerHandler {
109
+ tool_router: ToolRouter,
110
+ }
111
+
112
+ impl MyServerHandler {
113
+ pub fn new() -> Self {
114
+ Self {
115
+ tool_router: Self::create_tool_router(),
116
+ }
117
+ }
118
+
119
+ fn create_tool_router() -> ToolRouter {
120
+ // Initialize and return tool router
121
+ ToolRouter::new()
122
+ }
123
+ }
124
+
125
+ #[async_trait::async_trait]
126
+ impl ServerHandler for MyServerHandler {
127
+ async fn list_tools(
128
+ &self,
129
+ _request: Option<PaginatedRequestParam>,
130
+ _context: RequestContext<RoleServer>,
131
+ ) -> Result<ListToolsResult, ErrorData> {
132
+ let items = self.tool_router.list_all();
133
+ Ok(ListToolsResult::with_all_items(items))
134
+ }
135
+
136
+ async fn call_tool(
137
+ &self,
138
+ request: CallToolRequestParam,
139
+ context: RequestContext<RoleServer>,
140
+ ) -> Result<CallToolResult, ErrorData> {
141
+ let tcc = ToolCallContext::new(self, request, context);
142
+ self.tool_router.call(tcc).await
143
+ }
144
+ }
145
+ ```
146
+
147
+ ## Tool Development
148
+
149
+ ### Using Macros for Tools
150
+
151
+ Use the `#[tool]` macro for declarative tool definitions:
152
+
153
+ ```rust
154
+ use rmcp::tool;
155
+ use rmcp::model::Parameters;
156
+ use serde::{Deserialize, Serialize};
157
+ use schemars::JsonSchema;
158
+
159
+ #[derive(Debug, Deserialize, JsonSchema)]
160
+ pub struct CalculateParams {
161
+ pub a: f64,
162
+ pub b: f64,
163
+ pub operation: String,
164
+ }
165
+
166
+ /// Performs mathematical calculations
167
+ #[tool(
168
+ name = "calculate",
169
+ description = "Performs basic arithmetic operations",
170
+ annotations(read_only_hint = true)
171
+ )]
172
+ pub async fn calculate(params: Parameters<CalculateParams>) -> Result<f64, String> {
173
+ let p = params.inner();
174
+ match p.operation.as_str() {
175
+ "add" => Ok(p.a + p.b),
176
+ "subtract" => Ok(p.a - p.b),
177
+ "multiply" => Ok(p.a * p.b),
178
+ "divide" => {
179
+ if p.b == 0.0 {
180
+ Err("Division by zero".to_string())
181
+ } else {
182
+ Ok(p.a / p.b)
183
+ }
184
+ }
185
+ _ => Err(format!("Unknown operation: {}", p.operation)),
186
+ }
187
+ }
188
+ ```
189
+
190
+ ### Tool Router with Macros
191
+
192
+ Use `#[tool_router]` and `#[tool_handler]` macros:
193
+
194
+ ```rust
195
+ use rmcp::{tool_router, tool_handler};
196
+
197
+ pub struct ToolsHandler {
198
+ tool_router: ToolRouter,
199
+ }
200
+
201
+ #[tool_router]
202
+ impl ToolsHandler {
203
+ #[tool]
204
+ async fn greet(params: Parameters<GreetParams>) -> String {
205
+ format!("Hello, {}!", params.inner().name)
206
+ }
207
+
208
+ #[tool(annotations(destructive_hint = true))]
209
+ async fn reset_counter() -> String {
210
+ "Counter reset".to_string()
211
+ }
212
+
213
+ pub fn new() -> Self {
214
+ Self {
215
+ tool_router: Self::tool_router(),
216
+ }
217
+ }
218
+ }
219
+
220
+ #[tool_handler]
221
+ impl ServerHandler for ToolsHandler {
222
+ // Other handler methods...
223
+ }
224
+ ```
225
+
226
+ ### Tool Annotations
227
+
228
+ Use annotations to provide hints about tool behavior:
229
+
230
+ ```rust
231
+ #[tool(
232
+ name = "delete_file",
233
+ annotations(
234
+ destructive_hint = true,
235
+ read_only_hint = false,
236
+ idempotent_hint = false
237
+ )
238
+ )]
239
+ pub async fn delete_file(params: Parameters<DeleteParams>) -> Result<(), String> {
240
+ // Delete file logic
241
+ }
242
+
243
+ #[tool(
244
+ name = "search_data",
245
+ annotations(
246
+ read_only_hint = true,
247
+ idempotent_hint = true,
248
+ open_world_hint = true
249
+ )
250
+ )]
251
+ pub async fn search_data(params: Parameters<SearchParams>) -> Vec<String> {
252
+ // Search logic
253
+ }
254
+ ```
255
+
256
+ ### Returning Rich Content
257
+
258
+ Return structured content from tools:
259
+
260
+ ```rust
261
+ use rmcp::model::{ToolResponseContent, TextContent, ImageContent};
262
+
263
+ #[tool]
264
+ async fn analyze_code(params: Parameters<CodeParams>) -> ToolResponseContent {
265
+ ToolResponseContent::from(vec![
266
+ TextContent::text(format!("Analysis of {}:", params.inner().filename)),
267
+ TextContent::text("No issues found."),
268
+ ])
269
+ }
270
+ ```
271
+
272
+ ## Prompt Implementation
273
+
274
+ ### Prompt Handler
275
+
276
+ Implement prompt handlers:
277
+
278
+ ```rust
279
+ use rmcp::model::{Prompt, PromptArgument, PromptMessage, GetPromptResult};
280
+
281
+ async fn list_prompts(
282
+ &self,
283
+ _request: Option<PaginatedRequestParam>,
284
+ _context: RequestContext<RoleServer>,
285
+ ) -> Result<ListPromptsResult, ErrorData> {
286
+ let prompts = vec![
287
+ Prompt {
288
+ name: "code-review".to_string(),
289
+ description: Some("Review code for best practices".to_string()),
290
+ arguments: Some(vec![
291
+ PromptArgument {
292
+ name: "language".to_string(),
293
+ description: Some("Programming language".to_string()),
294
+ required: Some(true),
295
+ },
296
+ ]),
297
+ },
298
+ ];
299
+
300
+ Ok(ListPromptsResult { prompts })
301
+ }
302
+
303
+ async fn get_prompt(
304
+ &self,
305
+ request: GetPromptRequestParam,
306
+ _context: RequestContext<RoleServer>,
307
+ ) -> Result<GetPromptResult, ErrorData> {
308
+ match request.name.as_str() {
309
+ "code-review" => {
310
+ let language = request.arguments
311
+ .as_ref()
312
+ .and_then(|args| args.get("language"))
313
+ .ok_or_else(|| ErrorData::invalid_params("language required"))?;
314
+
315
+ Ok(GetPromptResult {
316
+ description: Some("Code review prompt".to_string()),
317
+ messages: vec![
318
+ PromptMessage::user(format!(
319
+ "Review this {} code for best practices and suggest improvements",
320
+ language
321
+ )),
322
+ ],
323
+ })
324
+ }
325
+ _ => Err(ErrorData::invalid_params("Unknown prompt")),
326
+ }
327
+ }
328
+ ```
329
+
330
+ ## Resource Implementation
331
+
332
+ ### Resource Handlers
333
+
334
+ Implement resource handlers:
335
+
336
+ ```rust
337
+ use rmcp::model::{Resource, ResourceContents, ReadResourceResult};
338
+
339
+ async fn list_resources(
340
+ &self,
341
+ _request: Option<PaginatedRequestParam>,
342
+ _context: RequestContext<RoleServer>,
343
+ ) -> Result<ListResourcesResult, ErrorData> {
344
+ let resources = vec![
345
+ Resource {
346
+ uri: "file:///data/config.json".to_string(),
347
+ name: "Configuration".to_string(),
348
+ description: Some("Server configuration".to_string()),
349
+ mime_type: Some("application/json".to_string()),
350
+ },
351
+ ];
352
+
353
+ Ok(ListResourcesResult { resources })
354
+ }
355
+
356
+ async fn read_resource(
357
+ &self,
358
+ request: ReadResourceRequestParam,
359
+ _context: RequestContext<RoleServer>,
360
+ ) -> Result<ReadResourceResult, ErrorData> {
361
+ match request.uri.as_str() {
362
+ "file:///data/config.json" => {
363
+ let content = r#"{"version": "1.0", "enabled": true}"#;
364
+ Ok(ReadResourceResult {
365
+ contents: vec![
366
+ ResourceContents::text(content.to_string())
367
+ .with_uri(request.uri)
368
+ .with_mime_type("application/json"),
369
+ ],
370
+ })
371
+ }
372
+ _ => Err(ErrorData::invalid_params("Unknown resource")),
373
+ }
374
+ }
375
+ ```
376
+
377
+ ## Transport Options
378
+
379
+ ### Stdio Transport
380
+
381
+ Standard input/output transport for CLI integration:
382
+
383
+ ```rust
384
+ use rmcp::transport::StdioTransport;
385
+
386
+ let transport = StdioTransport::new();
387
+ let server = Server::builder()
388
+ .with_handler(handler)
389
+ .build(transport)?;
390
+ ```
391
+
392
+ ### SSE (Server-Sent Events) Transport
393
+
394
+ HTTP-based SSE transport:
395
+
396
+ ```rust
397
+ use rmcp::transport::SseServerTransport;
398
+ use std::net::SocketAddr;
399
+
400
+ let addr: SocketAddr = "127.0.0.1:8000".parse()?;
401
+ let transport = SseServerTransport::new(addr);
402
+
403
+ let server = Server::builder()
404
+ .with_handler(handler)
405
+ .build(transport)?;
406
+
407
+ server.run(signal::ctrl_c()).await?;
408
+ ```
409
+
410
+ ### Streamable HTTP Transport
411
+
412
+ HTTP streaming transport with Axum:
413
+
414
+ ```rust
415
+ use rmcp::transport::StreamableHttpTransport;
416
+ use axum::{Router, routing::post};
417
+
418
+ let transport = StreamableHttpTransport::new();
419
+ let app = Router::new()
420
+ .route("/mcp", post(transport.handler()));
421
+
422
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000").await?;
423
+ axum::serve(listener, app).await?;
424
+ ```
425
+
426
+ ### Custom Transports
427
+
428
+ Implement custom transports (TCP, Unix Socket, WebSocket):
429
+
430
+ ```rust
431
+ use rmcp::transport::Transport;
432
+ use tokio::net::TcpListener;
433
+
434
+ // See examples/transport/ for TCP, Unix Socket, WebSocket implementations
435
+ ```
436
+
437
+ ## Error Handling
438
+
439
+ ### ErrorData Usage
440
+
441
+ Return proper MCP errors:
442
+
443
+ ```rust
444
+ use rmcp::ErrorData;
445
+
446
+ fn validate_params(value: &str) -> Result<(), ErrorData> {
447
+ if value.is_empty() {
448
+ return Err(ErrorData::invalid_params("Value cannot be empty"));
449
+ }
450
+ Ok(())
451
+ }
452
+
453
+ async fn call_tool(
454
+ &self,
455
+ request: CallToolRequestParam,
456
+ context: RequestContext<RoleServer>,
457
+ ) -> Result<CallToolResult, ErrorData> {
458
+ validate_params(&request.name)?;
459
+
460
+ // Tool execution...
461
+
462
+ Ok(CallToolResult {
463
+ content: vec![TextContent::text("Success")],
464
+ is_error: Some(false),
465
+ })
466
+ }
467
+ ```
468
+
469
+ ### Anyhow Integration
470
+
471
+ Use `anyhow` for application-level errors:
472
+
473
+ ```rust
474
+ use anyhow::{Context, Result};
475
+
476
+ async fn load_config() -> Result<Config> {
477
+ let content = tokio::fs::read_to_string("config.json")
478
+ .await
479
+ .context("Failed to read config file")?;
480
+
481
+ let config: Config = serde_json::from_str(&content)
482
+ .context("Failed to parse config")?;
483
+
484
+ Ok(config)
485
+ }
486
+ ```
487
+
488
+ ## Testing
489
+
490
+ ### Unit Tests
491
+
492
+ Write unit tests for tools and handlers:
493
+
494
+ ```rust
495
+ #[cfg(test)]
496
+ mod tests {
497
+ use super::*;
498
+
499
+ #[tokio::test]
500
+ async fn test_calculate_add() {
501
+ let params = Parameters::new(CalculateParams {
502
+ a: 5.0,
503
+ b: 3.0,
504
+ operation: "add".to_string(),
505
+ });
506
+
507
+ let result = calculate(params).await.unwrap();
508
+ assert_eq!(result, 8.0);
509
+ }
510
+
511
+ #[tokio::test]
512
+ async fn test_divide_by_zero() {
513
+ let params = Parameters::new(CalculateParams {
514
+ a: 5.0,
515
+ b: 0.0,
516
+ operation: "divide".to_string(),
517
+ });
518
+
519
+ let result = calculate(params).await;
520
+ assert!(result.is_err());
521
+ }
522
+ }
523
+ ```
524
+
525
+ ### Integration Tests
526
+
527
+ Test complete server interactions:
528
+
529
+ ```rust
530
+ #[tokio::test]
531
+ async fn test_server_list_tools() {
532
+ let handler = MyServerHandler::new();
533
+ let context = RequestContext::default();
534
+
535
+ let result = handler.list_tools(None, context).await.unwrap();
536
+
537
+ assert!(!result.tools.is_empty());
538
+ assert!(result.tools.iter().any(|t| t.name == "calculate"));
539
+ }
540
+ ```
541
+
542
+ ## Progress Notifications
543
+
544
+ ### Reporting Progress
545
+
546
+ Send progress notifications during long-running operations:
547
+
548
+ ```rust
549
+ use rmcp::model::ProgressNotification;
550
+
551
+ #[tool]
552
+ async fn process_large_file(
553
+ params: Parameters<ProcessParams>,
554
+ context: RequestContext<RoleServer>,
555
+ ) -> Result<String, String> {
556
+ let total = 100;
557
+
558
+ for i in 0..=total {
559
+ // Do work...
560
+
561
+ if i % 10 == 0 {
562
+ context.notify_progress(ProgressNotification {
563
+ progress: i,
564
+ total: Some(total),
565
+ }).await.ok();
566
+ }
567
+ }
568
+
569
+ Ok("Processing complete".to_string())
570
+ }
571
+ ```
572
+
573
+ ## OAuth Authentication
574
+
575
+ ### OAuth Integration
576
+
577
+ Implement OAuth for secure access:
578
+
579
+ ```rust
580
+ use rmcp::oauth::{OAuthConfig, OAuthProvider};
581
+
582
+ let oauth_config = OAuthConfig {
583
+ authorization_endpoint: "https://auth.example.com/authorize".to_string(),
584
+ token_endpoint: "https://auth.example.com/token".to_string(),
585
+ client_id: env::var("CLIENT_ID")?,
586
+ client_secret: env::var("CLIENT_SECRET")?,
587
+ scopes: vec!["read".to_string(), "write".to_string()],
588
+ };
589
+
590
+ let oauth_provider = OAuthProvider::new(oauth_config);
591
+ // See examples/servers/complex_auth_sse.rs for complete implementation
592
+ ```
593
+
594
+ ## Performance Best Practices
595
+
596
+ ### Async Operations
597
+
598
+ Use async/await for non-blocking operations:
599
+
600
+ ```rust
601
+ #[tool]
602
+ async fn fetch_data(params: Parameters<FetchParams>) -> Result<String, String> {
603
+ let client = reqwest::Client::new();
604
+ let response = client
605
+ .get(&params.inner().url)
606
+ .send()
607
+ .await
608
+ .map_err(|e| e.to_string())?;
609
+
610
+ let text = response.text().await.map_err(|e| e.to_string())?;
611
+ Ok(text)
612
+ }
613
+ ```
614
+
615
+ ### State Management
616
+
617
+ Use `Arc` and `RwLock` for shared state:
618
+
619
+ ```rust
620
+ use std::sync::Arc;
621
+ use tokio::sync::RwLock;
622
+
623
+ pub struct ServerState {
624
+ counter: Arc<RwLock<i32>>,
625
+ }
626
+
627
+ impl ServerState {
628
+ pub fn new() -> Self {
629
+ Self {
630
+ counter: Arc::new(RwLock::new(0)),
631
+ }
632
+ }
633
+
634
+ pub async fn increment(&self) -> i32 {
635
+ let mut counter = self.counter.write().await;
636
+ *counter += 1;
637
+ *counter
638
+ }
639
+ }
640
+ ```
641
+
642
+ ## Logging and Tracing
643
+
644
+ ### Setup Tracing
645
+
646
+ Configure tracing for observability:
647
+
648
+ ```rust
649
+ use tracing::{info, warn, error, debug};
650
+ use tracing_subscriber;
651
+
652
+ fn init_logging() {
653
+ tracing_subscriber::fmt()
654
+ .with_max_level(tracing::Level::DEBUG)
655
+ .with_target(false)
656
+ .with_thread_ids(true)
657
+ .init();
658
+ }
659
+
660
+ #[tool]
661
+ async fn my_tool(params: Parameters<MyParams>) -> String {
662
+ debug!("Tool called with params: {:?}", params);
663
+ info!("Processing request");
664
+
665
+ // Tool logic...
666
+
667
+ info!("Request completed");
668
+ "Done".to_string()
669
+ }
670
+ ```
671
+
672
+ ## Deployment
673
+
674
+ ### Binary Distribution
675
+
676
+ Build optimized release binaries:
677
+
678
+ ```bash
679
+ cargo build --release --target x86_64-unknown-linux-gnu
680
+ cargo build --release --target x86_64-pc-windows-msvc
681
+ cargo build --release --target x86_64-apple-darwin
682
+ ```
683
+
684
+ ### Cross-Compilation
685
+
686
+ Use cross for cross-platform builds:
687
+
688
+ ```bash
689
+ cargo install cross
690
+ cross build --release --target aarch64-unknown-linux-gnu
691
+ ```
692
+
693
+ ### Docker Deployment
694
+
695
+ Create a Dockerfile:
696
+
697
+ ```dockerfile
698
+ FROM rust:1.75 as builder
699
+ WORKDIR /app
700
+ COPY . .
701
+ RUN cargo build --release
702
+
703
+ FROM debian:bookworm-slim
704
+ RUN apt-get update && apt-get install -y ca-certificates
705
+ COPY --from=builder /app/target/release/my-mcp-server /usr/local/bin/
706
+ CMD ["my-mcp-server"]
707
+ ```
708
+
709
+ ## Additional Resources
710
+
711
+ - [rmcp Documentation](https://docs.rs/rmcp)
712
+ - [rmcp-macros Documentation](https://docs.rs/rmcp-macros)
713
+ - [Examples Repository](https://github.com/modelcontextprotocol/rust-sdk/tree/main/examples)
714
+ - [MCP Specification](https://spec.modelcontextprotocol.io/)
715
+ - [Rust Async Book](https://rust-lang.github.io/async-book/)