设置项目技能——MCP服务器
A. 模型上下文协议(MCP)服务器 自动检测项目的技术栈 并将匹配的GitHub Copilot技能文件夹安装到 /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或 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 按照以下顺序:
skillSourcePath参数(如果提供)AWESOME_COPILOT_REPO_URL环境变量(设置克隆URL)G:\Repos\frontlook-admin\AI_HELPERS\awesome-copilotG:\Repos\frontlook-admin\awesome-copilot%USERPROFILE%\repos\awesome-copilot%USERPROFILE%\awesome-copilotC:\src\awesome-copilot- 自动克隆 从
https://github.com/github/awesome-copilot
在Docker中运行时,主机路径(3-7)不可见;服务器将自动克隆 首次使用,除非您挂载本地克隆(请参阅 在......下面
______________________________________________________________________
先决条件
- .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:localLinux/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容器注册表(GHCR) 每一次推。 无需配置秘密——它使用内置 GITHUB_TOKEN.
| 触发器 | 已发布标签 |
|---|---|
推到 main | latest, main, sha- |
标签 v1.2.3 | 1.2.3, 1.2, sha-, latest |
| 拉取请求 | 仅构建,不推送 |
______________________________________________________________________
输出:写什么
之后 setup_project_skills 或 refresh_project_skills 成功运行:
/
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