项目技能自动安装服务

一个自动检测项目技术栈并安装对应GitHub Copilot技能文件夹的MCP服务器,适用于多种开发环境。

  • by frontlook-admin
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 frontlook-admin/SkillMcp

使用说明

设置项目技能——MCP服务器

A. 模型上下文协议(MCP)服务器 自动检测项目的技术栈 并将匹配的GitHub Copilot技能文件夹安装到 <project>/skills/, 然后更新 .vscode/settings.json 所以Copilot发现了它们。

作为Docker容器运行(推荐)或直接通过 dotnet run. 通过MCP stdio协议进行通信——不需要网络端口。


暴露的工具

工具 说明
detect_project_type 扫描目录并返回检测到的技术类型。 只读。
check_project_skills 模拟运行:显示哪些技能将被添加或已经存在。 没有变化。
setup_project_skills 增量 --复制新技能文件夹;保持现有的不变。
refresh_project_skills 完全刷新 --将所有技能文件夹替换为源代码中的最新文件夹。

所有工具都接受这些可选参数:

参数 说明
targetProject 项目根目录的绝对路径。默认为容器的工作目录。
skillSourcePath 通往当地的道路 awesome-copilot 克隆。跳过自动发现。
skillRepoUrl 如果本地找不到仓库,则克隆Git URL。覆盖 AWESOME_COPILOT_REPO_URL.

检测到的项目类型

检测扫描所有文件(不包括 .git/, node_modules/, bin/, obj/)并且是非排他性的-- 一个项目可以匹配多种类型。

类型 关键指标
Blazor .razor 文件+ .csproj (也收到 Frontend 技能)
AspNetCoreApi .csproj + Program.cs,没有Razor/MAUI/设计器文件
MAUI Microsoft.NET.Sdk.Maui SDK或 <UseMaui>true 在 .csproj
WinForms .csproj + .designer.cs / .designer.vb
Android AndroidManifest.xml, .kt,或 .java 文件
Frontend package.json + .ts/.tsx,或 package.json 没有 .csproj
CppCMake .cpp, .vcxproj,或 CMakeLists.txt
Unknown 没有匹配的,只有常见技能

技能安装

常见技能(每个项目)

git-commit · conventional-commit · create-readme · folder-structure-blueprint-generator · technology-stack-blueprint-generator · context-map · what-context-needed

特定类型技能

类型 技能
Blazor fluentui-blazor · aspnet-minimal-api-openapi · ef-core · dotnet-best-practices · dotnet-design-pattern-review · csharp-async · csharp-docs · csharp-xunit · containerize-aspnetcore · multi-stage-dockerfile · refactor · create-specification · sql-optimization · sql-code-review
AspNetCoreApi aspnet-minimal-api-openapi · ef-core · dotnet-best-practices · dotnet-design-pattern-review · csharp-async · csharp-docs · csharp-xunit · sql-optimization · sql-code-review · containerize-aspnetcore · multi-stage-dockerfile · openapi-to-application-code · create-specification
MAUI dotnet-best-practices · dotnet-design-pattern-review · csharp-async · csharp-docs · csharp-xunit · dotnet-upgrade · multi-stage-dockerfile · refactor
WinForms dotnet-best-practices · dotnet-upgrade · containerize-aspnet-framework · dotnet-design-pattern-review · refactor · csharp-docs
Android kotlin-springboot · java-springboot · java-docs · java-junit · java-refactoring-extract-method · java-refactoring-remove-parameter · java-add-graalvm-native-image-support
Frontend create-web-form · javascript-typescript-jest · markdown-to-html · multi-stage-dockerfile · refactor
CppCMake multi-stage-dockerfile · refactor · refactor-method-complexity-reduce · sql-code-review

中存在的任何技能文件夹 awesome-copilot/skills/ 来源,但不在上面的地图上 当其名称包含与检测到的类型匹配的关键字时,也会自动发现并安装。


技能来源解析

服务器正在查找 awesome-copilot 按照以下顺序:

  1. skillSourcePath 参数(如果提供)
  2. AWESOME_COPILOT_REPO_URL 环境变量(设置克隆URL)
  3. G:\Repos\frontlook-admin\AI_HELPERS\awesome-copilot
  4. G:\Repos\frontlook-admin\awesome-copilot
  5. %USERPROFILE%\repos\awesome-copilot
  6. %USERPROFILE%\awesome-copilot
  7. C:\src\awesome-copilot
  8. 自动克隆 从 https://github.com/github/awesome-copilot

在Docker中运行时,主机路径(3-7)不可见;服务器将自动克隆 首次使用,除非您挂载本地克隆(请参阅 Docker使用 在......下面


先决条件

  • .NET 10 SDK --用于本地运行
  • 码头工人 --用于集装箱使用
  • 带有GitHub Copilot扩展的VS代码(用于MCP发现)
  • git 在PATH中--仅在以下情况下需要 awesome-copilot 必须自动克隆

本地运行(.Net)

cd SkillMcp
dotnet run

服务器从stdin读取MCP消息,并将响应写入stdout。 所有日志都会转到stderr。


码头工人

本地建设

docker build -t skillmcp:local .

运行--挂载repos驱动器,以便服务器可以读取项目文件

Windows(PowerShell):

docker run --rm -i -v "G:\Repos:/g/Repos" skillmcp:local

Linux/macOS:

docker run --rm -i -v "$HOME/repos:/repos" skillmcp:local

然后通过 集装箱侧 路径为 targetProject:

targetProject = /g/Repos/your-project          # Windows mount
targetProject = /repos/your-project            # Linux/macOS mount

挂载本地出色的副驾驶克隆(可选,避免自动克隆)

docker run --rm -i \
  -v "G:\Repos:/g/Repos" \
  -v "G:\Repos\frontlook-admin\awesome-copilot:/opt/awesome-copilot:ro" \
  skillmcp:local

通过 skillSourcePath = /opt/awesome-copilot 作为一种工具论证。

通过环境变量覆盖克隆URL

docker run --rm -i \
  -e AWESOME_COPILOT_REPO_URL=https://github.com/your-fork/awesome-copilot \
  skillmcp:local

从GitHub容器注册表中提取

docker pull ghcr.io/frontlook-admin/skillmcp:latest

VS代码MCP配置

这 .vscode/mcp.json 在这个仓库中,服务器会自动注册。 在VS Code中打开工作区,GitHub Copilot将发现并列出工具。

配置示例:

{
  "servers": {
    "setup-project-skills": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-v", "G:\\Repos:/g/Repos",
        "ghcr.io/frontlook-admin/skillmcp:latest"
      ]
    }
  }
}

Windows路径转换 --服务器自动转换 G:\Repos\foo 到 /g/Repos/foo 以匹配上面的卷装载。 将任一表格作为 targetProject;两者都处理得当。


GitHub操作——自动Docker发布

工作流程在 .github/workflows/docker-publish.yml 构建并推动 GitHub容器注册表(GHCR) 每一次推。 无需配置秘密——它使用内置 GITHUB_TOKEN.

触发器 已发布标签
推到 main latest, main, sha-<short>
标签 v1.2.3 1.2.3, 1.2, sha-<short>, latest
拉取请求 仅构建,不推送

输出:写什么

之后 setup_project_skills 或 refresh_project_skills 成功运行:

<project>/
  skills/
    git-commit/
    conventional-commit/
    csharp-async/            ← type-specific skills
    ...
    skills.json              ← manifest: detected type + list of installed skills
  .vscode/
    settings.json            ← chat.promptFilesLocations entry added/updated