From d032f0c33b74ba5ce0a193eaee8a94029cc19ec2 Mon Sep 17 00:00:00 2001 From: Lincoln <778157949@qq.com> Date: Mon, 9 Jun 2025 13:00:50 +0000 Subject: [PATCH 1/5] feat: rush docs plugin --- apps/rush-mcp-server/bin/mcp-server | 0 .../rush/nonbrowser-approved-packages.json | 10 ++--- .../config/subspaces/default/pnpm-lock.yaml | 25 +++++++++++-- .../rush-mcp-docs-plugin/.eslintrc.js | 13 +++++++ rush-plugins/rush-mcp-docs-plugin/.npmignore | 37 +++++++++++++++++++ rush-plugins/rush-mcp-docs-plugin/LICENSE | 24 ++++++++++++ rush-plugins/rush-mcp-docs-plugin/README.md | 3 ++ .../rush-mcp-docs-plugin/config/rig.json | 7 ++++ .../rush-mcp-docs-plugin/package.json | 28 ++++++++++++++ .../rush-mcp-docs-plugin/rush-mcp-plugin.json | 24 ++++++++++++ .../rush-mcp-docs-plugin/src/DocsPlugin.ts | 28 ++++++++++++++ .../rush-mcp-docs-plugin/src/DocsTool.ts | 33 ++++++++++------- .../rush-mcp-docs-plugin/src/index.ts | 14 +++++++ .../src/rush-doc-fragment.mock.json | 0 .../rush-mcp-docs-plugin/tsconfig.json | 3 ++ rush.json | 6 +++ 16 files changed, 234 insertions(+), 21 deletions(-) mode change 100644 => 100755 apps/rush-mcp-server/bin/mcp-server create mode 100644 rush-plugins/rush-mcp-docs-plugin/.eslintrc.js create mode 100644 rush-plugins/rush-mcp-docs-plugin/.npmignore create mode 100644 rush-plugins/rush-mcp-docs-plugin/LICENSE create mode 100644 rush-plugins/rush-mcp-docs-plugin/README.md create mode 100644 rush-plugins/rush-mcp-docs-plugin/config/rig.json create mode 100644 rush-plugins/rush-mcp-docs-plugin/package.json create mode 100644 rush-plugins/rush-mcp-docs-plugin/rush-mcp-plugin.json create mode 100644 rush-plugins/rush-mcp-docs-plugin/src/DocsPlugin.ts rename apps/rush-mcp-server/src/tools/docs.tool.ts => rush-plugins/rush-mcp-docs-plugin/src/DocsTool.ts (52%) create mode 100644 rush-plugins/rush-mcp-docs-plugin/src/index.ts rename {apps/rush-mcp-server => rush-plugins/rush-mcp-docs-plugin}/src/rush-doc-fragment.mock.json (100%) create mode 100644 rush-plugins/rush-mcp-docs-plugin/tsconfig.json diff --git a/apps/rush-mcp-server/bin/mcp-server b/apps/rush-mcp-server/bin/mcp-server old mode 100644 new mode 100755 diff --git a/common/config/rush/nonbrowser-approved-packages.json b/common/config/rush/nonbrowser-approved-packages.json index c1149966a80..bf54393d14e 100644 --- a/common/config/rush/nonbrowser-approved-packages.json +++ b/common/config/rush/nonbrowser-approved-packages.json @@ -232,7 +232,7 @@ }, { "name": "@rushstack/mcp-server", - "allowedCategories": [ "tests" ] + "allowedCategories": [ "libraries", "tests" ] }, { "name": "@rushstack/module-minifier", @@ -490,6 +490,10 @@ "name": "buttono", "allowedCategories": [ "tests" ] }, + { + "name": "chokidar", + "allowedCategories": [ "libraries" ] + }, { "name": "cli-table", "allowedCategories": [ "libraries" ] @@ -658,10 +662,6 @@ "name": "https-proxy-agent", "allowedCategories": [ "libraries" ] }, - { - "name": "chokidar", - "allowedCategories": [ "libraries" ] - }, { "name": "ignore", "allowedCategories": [ "libraries" ] diff --git a/common/config/subspaces/default/pnpm-lock.yaml b/common/config/subspaces/default/pnpm-lock.yaml index 1ba0045bb90..c3222572b27 100644 --- a/common/config/subspaces/default/pnpm-lock.yaml +++ b/common/config/subspaces/default/pnpm-lock.yaml @@ -3297,12 +3297,12 @@ importers: '@pnpm/dependency-path': specifier: ~1000.0.9 version: 1000.0.9 - '@pnpm/dependency-path-lockfile-pre-v9': - specifier: npm:@pnpm/dependency-path@~2.1.2 - version: /@pnpm/dependency-path@2.1.8 '@pnpm/dependency-path-lockfile-pre-v10': specifier: npm:@pnpm/dependency-path@~5.1.7 version: /@pnpm/dependency-path@5.1.7 + '@pnpm/dependency-path-lockfile-pre-v9': + specifier: npm:@pnpm/dependency-path@~2.1.2 + version: /@pnpm/dependency-path@2.1.8 '@pnpm/link-bins': specifier: ~5.3.7 version: 5.3.25 @@ -4101,6 +4101,25 @@ importers: specifier: workspace:* version: link:../../rigs/local-node-rig + ../../../rush-plugins/rush-mcp-docs-plugin: + dependencies: + '@rushstack/mcp-server': + specifier: workspace:* + version: link:../../apps/rush-mcp-server + '@rushstack/node-core-library': + specifier: workspace:* + version: link:../../libraries/node-core-library + devDependencies: + '@rushstack/heft': + specifier: workspace:* + version: link:../../apps/heft + local-eslint-config: + specifier: workspace:* + version: link:../../eslint/local-eslint-config + local-node-rig: + specifier: workspace:* + version: link:../../rigs/local-node-rig + ../../../rush-plugins/rush-redis-cobuild-plugin: dependencies: '@redis/client': diff --git a/rush-plugins/rush-mcp-docs-plugin/.eslintrc.js b/rush-plugins/rush-mcp-docs-plugin/.eslintrc.js new file mode 100644 index 00000000000..de794c04ae0 --- /dev/null +++ b/rush-plugins/rush-mcp-docs-plugin/.eslintrc.js @@ -0,0 +1,13 @@ +// This is a workaround for https://github.com/eslint/eslint/issues/3458 +require('local-eslint-config/patch/modern-module-resolution'); +// This is a workaround for https://github.com/microsoft/rushstack/issues/3021 +require('local-eslint-config/patch/custom-config-package-names'); + +module.exports = { + extends: [ + 'local-eslint-config/profile/node', + 'local-eslint-config/mixins/friendly-locals', + 'local-eslint-config/mixins/tsdoc' + ], + parserOptions: { tsconfigRootDir: __dirname } +}; diff --git a/rush-plugins/rush-mcp-docs-plugin/.npmignore b/rush-plugins/rush-mcp-docs-plugin/.npmignore new file mode 100644 index 00000000000..c033d1b3561 --- /dev/null +++ b/rush-plugins/rush-mcp-docs-plugin/.npmignore @@ -0,0 +1,37 @@ +# THIS IS A STANDARD TEMPLATE FOR .npmignore FILES IN THIS REPO. + +# Ignore all files by default, to avoid accidentally publishing unintended files. +* + +# Use negative patterns to bring back the specific things we want to publish. +!/bin/** +!/lib/** +!/lib-*/** +!/dist/** + +!CHANGELOG.md +!CHANGELOG.json +!heft-plugin.json +!rush-plugin-manifest.json +!ThirdPartyNotice.txt + +# Ignore certain patterns that should not get published. +/dist/*.stats.* +/lib/**/test/ +/lib-*/**/test/ +*.test.js + +# NOTE: These don't need to be specified, because NPM includes them automatically. +# +# package.json +# README.md +# LICENSE + +# --------------------------------------------------------------------------- +# DO NOT MODIFY ABOVE THIS LINE! Add any project-specific overrides below. +# --------------------------------------------------------------------------- + +!rush-mcp-plugin.json +!*.schema.json + +!*.mock.json diff --git a/rush-plugins/rush-mcp-docs-plugin/LICENSE b/rush-plugins/rush-mcp-docs-plugin/LICENSE new file mode 100644 index 00000000000..5ad10fc49f8 --- /dev/null +++ b/rush-plugins/rush-mcp-docs-plugin/LICENSE @@ -0,0 +1,24 @@ +rush-mcp-example-plugin + +Copyright (c) Microsoft Corporation. All rights reserved. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/rush-plugins/rush-mcp-docs-plugin/README.md b/rush-plugins/rush-mcp-docs-plugin/README.md new file mode 100644 index 00000000000..8ca3190b2fc --- /dev/null +++ b/rush-plugins/rush-mcp-docs-plugin/README.md @@ -0,0 +1,3 @@ +# rush-mcp-example-plugin + +This example project shows how to create a plugin for `@rushstack/mcp-server` diff --git a/rush-plugins/rush-mcp-docs-plugin/config/rig.json b/rush-plugins/rush-mcp-docs-plugin/config/rig.json new file mode 100644 index 00000000000..165ffb001f5 --- /dev/null +++ b/rush-plugins/rush-mcp-docs-plugin/config/rig.json @@ -0,0 +1,7 @@ +{ + // The "rig.json" file directs tools to look for their config files in an external package. + // Documentation for this system: https://www.npmjs.com/package/@rushstack/rig-package + "$schema": "https://developer.microsoft.com/json-schemas/rig-package/rig.schema.json", + + "rigPackageName": "local-node-rig" +} diff --git a/rush-plugins/rush-mcp-docs-plugin/package.json b/rush-plugins/rush-mcp-docs-plugin/package.json new file mode 100644 index 00000000000..ed23c800845 --- /dev/null +++ b/rush-plugins/rush-mcp-docs-plugin/package.json @@ -0,0 +1,28 @@ +{ + "name": "@rushstack/rush-mcp-docs-plugin", + "version": "0.0.0", + "description": "Docs plugin for @rushstack/mcp-server", + "repository": { + "url": "https://github.com/microsoft/rushstack.git", + "type": "git", + "directory": "rush-plugins/rush-mcp-docs-plugin" + }, + "homepage": "https://rushjs.io", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "license": "MIT", + "scripts": { + "build": "heft build --clean", + "_phase:build": "heft run --only build -- --clean", + "_phase:test": "heft run --only test -- --clean" + }, + "dependencies": { + "@rushstack/node-core-library": "workspace:*", + "@rushstack/mcp-server": "workspace:*" + }, + "devDependencies": { + "@rushstack/heft": "workspace:*", + "local-node-rig": "workspace:*", + "local-eslint-config": "workspace:*" + } +} diff --git a/rush-plugins/rush-mcp-docs-plugin/rush-mcp-plugin.json b/rush-plugins/rush-mcp-docs-plugin/rush-mcp-plugin.json new file mode 100644 index 00000000000..61d2750e169 --- /dev/null +++ b/rush-plugins/rush-mcp-docs-plugin/rush-mcp-plugin.json @@ -0,0 +1,24 @@ +/** + * Every plugin package must contain a "rush-mcp-plugin.json" manifest in the top-level folder + * (next to package.json). + */ +{ + /** + * A name that uniquely identifies your plugin. Generally this should be the same name as + * the NPM package. If two NPM packages have the same pluginName, they cannot be loaded together. + */ + "pluginName": "rush-mcp-docs-plugin", + + /** + * (OPTIONAL) Indicates that your plugin accepts a config file. The MCP server will load this + * file and provide it to the plugin. + * + * The config file path will be `/common/config/rush-mcp/.json`. + */ + // "configFileSchema": "./lib/rush-mcp-example-plugin.schema.json", + + /** + * The entry point, whose default export should be a class that implements + */ + "entryPoint": "./lib/index.js" +} diff --git a/rush-plugins/rush-mcp-docs-plugin/src/DocsPlugin.ts b/rush-plugins/rush-mcp-docs-plugin/src/DocsPlugin.ts new file mode 100644 index 00000000000..5d12e5ea1bd --- /dev/null +++ b/rush-plugins/rush-mcp-docs-plugin/src/DocsPlugin.ts @@ -0,0 +1,28 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See LICENSE in the project root for license information. + +import type { IRushMcpPlugin, RushMcpPluginSession } from '@rushstack/mcp-server'; +import { DocsTool } from './DocsTool'; + +export interface IDocsPluginConfigFile {} + +export class DocsPlugin implements IRushMcpPlugin { + public session: RushMcpPluginSession; + public configFile: IDocsPluginConfigFile | undefined = undefined; + + public constructor(session: RushMcpPluginSession, configFile: IDocsPluginConfigFile | undefined) { + this.session = session; + this.configFile = configFile; + } + + public async onInitializeAsync(): Promise { + this.session.registerTool( + { + toolName: 'rush_docs', + description: + 'Search and retrieve relevant sections from the official Rush documentation based on user queries.' + }, + new DocsTool(this) + ); + } +} diff --git a/apps/rush-mcp-server/src/tools/docs.tool.ts b/rush-plugins/rush-mcp-docs-plugin/src/DocsTool.ts similarity index 52% rename from apps/rush-mcp-server/src/tools/docs.tool.ts rename to rush-plugins/rush-mcp-docs-plugin/src/DocsTool.ts index 7c157877b3f..cc8ecd2c064 100644 --- a/apps/rush-mcp-server/src/tools/docs.tool.ts +++ b/rush-plugins/rush-mcp-docs-plugin/src/DocsTool.ts @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. // See LICENSE in the project root for license information. -import { z } from 'zod'; +import type { IRushMcpTool, RushMcpPluginSession, CallToolResult, zodModule } from '@rushstack/mcp-server'; import { JsonFile } from '@rushstack/node-core-library'; import path from 'path'; -import { BaseTool, type CallToolResult } from './base.tool'; +import type { DocsPlugin } from './DocsPlugin'; interface IDocsResult { query: string; @@ -17,15 +17,22 @@ interface IDocsResult { searchTimeMs: number; } -export class RushDocsTool extends BaseTool { - public constructor() { - super({ - name: 'rush_docs', - description: - 'Search and retrieve relevant sections from the official Rush documentation based on user queries.', - schema: { - userQuery: z.string().describe('The user query to search for relevant documentation sections.') - } +export class DocsTool implements IRushMcpTool { + public readonly plugin: DocsPlugin; + public readonly session: RushMcpPluginSession; + + public constructor(plugin: DocsPlugin) { + this.plugin = plugin; + this.session = plugin.session; + } + + // ZOD relies on type inference generate a messy expression in the .d.ts file + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type + public get schema() { + const zod: typeof zodModule = this.session.zod; + + return zod.object({ + userQuery: zod.string().describe('The user query to search for relevant documentation sections.') }); } @@ -34,7 +41,7 @@ export class RushDocsTool extends BaseTool { const startTime: number = Date.now(); const results: IDocsResult['results'] = JsonFile.load( - path.join(__dirname, '../rush-doc-fragment.mock.json') + path.join(__dirname, './rush-doc-fragment.mock.json') ); return { @@ -45,7 +52,7 @@ export class RushDocsTool extends BaseTool { }; } - public async executeAsync({ userQuery }: { userQuery: string }): Promise { + public async executeAsync({ userQuery }: zodModule.infer): Promise { const docSearchResult: IDocsResult = this._searchDocs(userQuery); return { diff --git a/rush-plugins/rush-mcp-docs-plugin/src/index.ts b/rush-plugins/rush-mcp-docs-plugin/src/index.ts new file mode 100644 index 00000000000..569aef9dd9f --- /dev/null +++ b/rush-plugins/rush-mcp-docs-plugin/src/index.ts @@ -0,0 +1,14 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See LICENSE in the project root for license information. + +import type { RushMcpPluginSession, RushMcpPluginFactory } from '@rushstack/mcp-server'; +import { DocsPlugin, type IDocsPluginConfigFile } from './DocsPlugin'; + +function createPlugin( + session: RushMcpPluginSession, + configFile: IDocsPluginConfigFile | undefined +): DocsPlugin { + return new DocsPlugin(session, configFile); +} + +export default createPlugin satisfies RushMcpPluginFactory; diff --git a/apps/rush-mcp-server/src/rush-doc-fragment.mock.json b/rush-plugins/rush-mcp-docs-plugin/src/rush-doc-fragment.mock.json similarity index 100% rename from apps/rush-mcp-server/src/rush-doc-fragment.mock.json rename to rush-plugins/rush-mcp-docs-plugin/src/rush-doc-fragment.mock.json diff --git a/rush-plugins/rush-mcp-docs-plugin/tsconfig.json b/rush-plugins/rush-mcp-docs-plugin/tsconfig.json new file mode 100644 index 00000000000..dac21d04081 --- /dev/null +++ b/rush-plugins/rush-mcp-docs-plugin/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "./node_modules/local-node-rig/profiles/default/tsconfig-base.json" +} diff --git a/rush.json b/rush.json index f1ad0ab70b4..f635a74162e 100644 --- a/rush.json +++ b/rush.json @@ -1426,6 +1426,12 @@ "projectFolder": "webpack/webpack5-localization-plugin", "reviewCategory": "libraries", "shouldPublish": true + }, + { + "packageName": "@rushstack/rush-mcp-docs-plugin", + "projectFolder": "rush-plugins/rush-mcp-docs-plugin", + "reviewCategory": "libraries", + "shouldPublish": true } ] } From 72bf5d84c0aa54f7b074c0f1293cb13783fded41 Mon Sep 17 00:00:00 2001 From: Lincoln <778157949@qq.com> Date: Mon, 9 Jun 2025 13:02:43 +0000 Subject: [PATCH 2/5] feat: rush docs plugin --- apps/rush-mcp-server/src/server.ts | 4 +--- apps/rush-mcp-server/src/tools/index.ts | 1 - 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/apps/rush-mcp-server/src/server.ts b/apps/rush-mcp-server/src/server.ts index b9a690f27f6..b6132bd0faf 100644 --- a/apps/rush-mcp-server/src/server.ts +++ b/apps/rush-mcp-server/src/server.ts @@ -8,8 +8,7 @@ import { RushMigrateProjectTool, RushCommandValidatorTool, RushWorkspaceDetailsTool, - RushProjectDetailsTool, - RushDocsTool + RushProjectDetailsTool } from './tools'; import { RushMcpPluginLoader } from './pluginFramework/RushMcpPluginLoader'; @@ -41,7 +40,6 @@ export class RushMCPServer extends McpServer { this._tools.push(new RushCommandValidatorTool()); this._tools.push(new RushWorkspaceDetailsTool()); this._tools.push(new RushProjectDetailsTool()); - this._tools.push(new RushDocsTool()); } private _registerTools(): void { diff --git a/apps/rush-mcp-server/src/tools/index.ts b/apps/rush-mcp-server/src/tools/index.ts index 025e6d5452c..b0c15c01eee 100644 --- a/apps/rush-mcp-server/src/tools/index.ts +++ b/apps/rush-mcp-server/src/tools/index.ts @@ -7,4 +7,3 @@ export * from './project-details.tool'; export * from './rush-command-validator.tool'; export * from './workspace-details'; export * from './conflict-resolver.tool'; -export * from './docs.tool'; From 0b37c20aab92b88dceee09f3a02343302359f5a7 Mon Sep 17 00:00:00 2001 From: Lincoln <778157949@qq.com> Date: Mon, 9 Jun 2025 13:09:31 +0000 Subject: [PATCH 3/5] rush change --- .../feat-add-new-mcp-plugin_2025-06-09-13-09.json | 10 ++++++++++ .../feat-add-new-mcp-plugin_2025-06-09-13-09.json | 10 ++++++++++ 2 files changed, 20 insertions(+) create mode 100644 common/changes/@rushstack/mcp-server/feat-add-new-mcp-plugin_2025-06-09-13-09.json create mode 100644 common/changes/@rushstack/rush-mcp-docs-plugin/feat-add-new-mcp-plugin_2025-06-09-13-09.json diff --git a/common/changes/@rushstack/mcp-server/feat-add-new-mcp-plugin_2025-06-09-13-09.json b/common/changes/@rushstack/mcp-server/feat-add-new-mcp-plugin_2025-06-09-13-09.json new file mode 100644 index 00000000000..c0e078f9ed7 --- /dev/null +++ b/common/changes/@rushstack/mcp-server/feat-add-new-mcp-plugin_2025-06-09-13-09.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@rushstack/mcp-server", + "comment": "Add rush docs mcp plugin", + "type": "patch" + } + ], + "packageName": "@rushstack/mcp-server" +} \ No newline at end of file diff --git a/common/changes/@rushstack/rush-mcp-docs-plugin/feat-add-new-mcp-plugin_2025-06-09-13-09.json b/common/changes/@rushstack/rush-mcp-docs-plugin/feat-add-new-mcp-plugin_2025-06-09-13-09.json new file mode 100644 index 00000000000..9fe26a08e4f --- /dev/null +++ b/common/changes/@rushstack/rush-mcp-docs-plugin/feat-add-new-mcp-plugin_2025-06-09-13-09.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@rushstack/rush-mcp-docs-plugin", + "comment": "Add rush docs mcp plugin", + "type": "minor" + } + ], + "packageName": "@rushstack/rush-mcp-docs-plugin" +} \ No newline at end of file From efb93f948ef4e1e4a19f328c4949b9606ec3b1f7 Mon Sep 17 00:00:00 2001 From: Lincoln <778157949@qq.com> Date: Mon, 9 Jun 2025 13:23:05 +0000 Subject: [PATCH 4/5] fix ci --- README.md | 1 + apps/rush-mcp-server/.npmignore | 2 -- rush-plugins/rush-mcp-docs-plugin/LICENSE | 2 +- rush-plugins/rush-mcp-docs-plugin/README.md | 4 ++-- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index bd0c6aaa51b..1d4370fa3f7 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,7 @@ These GitHub repositories provide supplementary resources for Rush Stack: | [/rush-plugins/rush-azure-storage-build-cache-plugin](./rush-plugins/rush-azure-storage-build-cache-plugin/) | [![npm version](https://badge.fury.io/js/%40rushstack%2Frush-azure-storage-build-cache-plugin.svg)](https://badge.fury.io/js/%40rushstack%2Frush-azure-storage-build-cache-plugin) | | [@rushstack/rush-azure-storage-build-cache-plugin](https://www.npmjs.com/package/@rushstack/rush-azure-storage-build-cache-plugin) | | [/rush-plugins/rush-buildxl-graph-plugin](./rush-plugins/rush-buildxl-graph-plugin/) | [![npm version](https://badge.fury.io/js/%40rushstack%2Frush-buildxl-graph-plugin.svg)](https://badge.fury.io/js/%40rushstack%2Frush-buildxl-graph-plugin) | | [@rushstack/rush-buildxl-graph-plugin](https://www.npmjs.com/package/@rushstack/rush-buildxl-graph-plugin) | | [/rush-plugins/rush-http-build-cache-plugin](./rush-plugins/rush-http-build-cache-plugin/) | [![npm version](https://badge.fury.io/js/%40rushstack%2Frush-http-build-cache-plugin.svg)](https://badge.fury.io/js/%40rushstack%2Frush-http-build-cache-plugin) | | [@rushstack/rush-http-build-cache-plugin](https://www.npmjs.com/package/@rushstack/rush-http-build-cache-plugin) | +| [/rush-plugins/rush-mcp-docs-plugin](./rush-plugins/rush-mcp-docs-plugin/) | [![npm version](https://badge.fury.io/js/%40rushstack%2Frush-mcp-docs-plugin.svg)](https://badge.fury.io/js/%40rushstack%2Frush-mcp-docs-plugin) | [changelog](./rush-plugins/rush-mcp-docs-plugin/CHANGELOG.md) | [@rushstack/rush-mcp-docs-plugin](https://www.npmjs.com/package/@rushstack/rush-mcp-docs-plugin) | | [/rush-plugins/rush-redis-cobuild-plugin](./rush-plugins/rush-redis-cobuild-plugin/) | [![npm version](https://badge.fury.io/js/%40rushstack%2Frush-redis-cobuild-plugin.svg)](https://badge.fury.io/js/%40rushstack%2Frush-redis-cobuild-plugin) | | [@rushstack/rush-redis-cobuild-plugin](https://www.npmjs.com/package/@rushstack/rush-redis-cobuild-plugin) | | [/rush-plugins/rush-resolver-cache-plugin](./rush-plugins/rush-resolver-cache-plugin/) | [![npm version](https://badge.fury.io/js/%40rushstack%2Frush-resolver-cache-plugin.svg)](https://badge.fury.io/js/%40rushstack%2Frush-resolver-cache-plugin) | | [@rushstack/rush-resolver-cache-plugin](https://www.npmjs.com/package/@rushstack/rush-resolver-cache-plugin) | | [/rush-plugins/rush-serve-plugin](./rush-plugins/rush-serve-plugin/) | [![npm version](https://badge.fury.io/js/%40rushstack%2Frush-serve-plugin.svg)](https://badge.fury.io/js/%40rushstack%2Frush-serve-plugin) | | [@rushstack/rush-serve-plugin](https://www.npmjs.com/package/@rushstack/rush-serve-plugin) | diff --git a/apps/rush-mcp-server/.npmignore b/apps/rush-mcp-server/.npmignore index 39967972844..bc349f9a4be 100644 --- a/apps/rush-mcp-server/.npmignore +++ b/apps/rush-mcp-server/.npmignore @@ -21,8 +21,6 @@ /lib-*/**/test/ *.test.js -!*.mock.json - # NOTE: These don't need to be specified, because NPM includes them automatically. # # package.json diff --git a/rush-plugins/rush-mcp-docs-plugin/LICENSE b/rush-plugins/rush-mcp-docs-plugin/LICENSE index 5ad10fc49f8..5c060c96bc4 100644 --- a/rush-plugins/rush-mcp-docs-plugin/LICENSE +++ b/rush-plugins/rush-mcp-docs-plugin/LICENSE @@ -1,4 +1,4 @@ -rush-mcp-example-plugin +@rushstack/rush-mcp-docs-plugin Copyright (c) Microsoft Corporation. All rights reserved. diff --git a/rush-plugins/rush-mcp-docs-plugin/README.md b/rush-plugins/rush-mcp-docs-plugin/README.md index 8ca3190b2fc..84bcc9f4976 100644 --- a/rush-plugins/rush-mcp-docs-plugin/README.md +++ b/rush-plugins/rush-mcp-docs-plugin/README.md @@ -1,3 +1,3 @@ -# rush-mcp-example-plugin +# @rushstack/rush-mcp-docs-plugin -This example project shows how to create a plugin for `@rushstack/mcp-server` +The @rushstack/rush-mcp-docs-plugin package provides a documentation query tool for Rush. From 09987d6953b19790f874f1043d9d11d11298fa19 Mon Sep 17 00:00:00 2001 From: Pete Gonzalez <4673363+octogonz@users.noreply.github.com> Date: Fri, 13 Jun 2025 09:46:13 -0700 Subject: [PATCH 5/5] Update common/changes/@rushstack/mcp-server/feat-add-new-mcp-plugin_2025-06-09-13-09.json --- .../mcp-server/feat-add-new-mcp-plugin_2025-06-09-13-09.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/changes/@rushstack/mcp-server/feat-add-new-mcp-plugin_2025-06-09-13-09.json b/common/changes/@rushstack/mcp-server/feat-add-new-mcp-plugin_2025-06-09-13-09.json index c0e078f9ed7..d055b1477de 100644 --- a/common/changes/@rushstack/mcp-server/feat-add-new-mcp-plugin_2025-06-09-13-09.json +++ b/common/changes/@rushstack/mcp-server/feat-add-new-mcp-plugin_2025-06-09-13-09.json @@ -2,7 +2,7 @@ "changes": [ { "packageName": "@rushstack/mcp-server", - "comment": "Add rush docs mcp plugin", + "comment": "Move the `rush docs` tool to a plugin package `@rushstack/rush-mcp-docs-plugin`", "type": "patch" } ],