MCPServerPS
此项目创建了一个用作模型上下文协议(MCP)服务器的PowerShell模块。 该模块公开 Start-MyMCP cmdlet,它启动MCP服务器并根据调用方式动态公开工具。
MCP服务器作为PowerShell模块
将MCP服务器作为PowerShell模块发货的好处:
- 小尺寸:3.35 MB。只有。NET MCP SDK程序集是必需的。
- 可用性:易于通过PowerShell库跨平台分发和安装。
- 灵活:公开C#工具,
.ps1脚本工具或模块功能工具。 - 对于需要PowerShell功能的MCP服务器,运行时自然可用(在
pwsh.exe),因此无需发布PowerShell SDK程序集。
构建模块
要构建项目,请运行:
dotnet publish .\src\MCPServerPS.csproj已发布的模块将在 .\out\MCPServerPS.
将模块部署到PowerShell模块路径后,您可以使用以下命令启动MCP服务器 Start-MyMCP cmdlet。
启动MyMCP Cmdlet参数集
这 Start-MyMCP cmdlet支持三个参数集:
Start-MyMCP []
Start-MyMCP -ScriptRoot []
Start-MyMCP -Module []- 默认:
Start-MyMCP公开此程序集的C#代码中定义的所有MCP工具。 - ScriptRoot: `Start-MyMCP -ScriptRoot
暴露每个 .ps1` 指定目录中的脚本文件作为MCP工具。
- 模块:
Start-MyMCP -Module将指定模块中的每个功能作为MCP工具公开。
脚本工具和模块功能工具的示例可以在 ./scripts 文件夹。
脚本工具和模块功能工具都使用基于注释的帮助来定义每个工具的描述和参数。这确保了工具元数据的可发现性和用户友好性。
运行空间行为
- 每个脚本工具都在自己的专用运行空间中运行,因此它们彼此隔离。
- 模块功能工具共享模块的相同运行空间,允许一个功能工具对模块状态所做的更改对其他功能工具可见。这是因为模块功能被认为是相关的,可能需要共享状态。
在VSCode中使用MCPServerPS
1.暴露C#MCP工具
{
"servers": {
"MCPServerPS": {
"type": "stdio",
"command": "pwsh",
"args": [
"-noprofile",
"-c",
"MCPServerPS\\Start-MyMCP"
]
}
},
"inputs": []
}2.公开PowerShell脚本工具
假设本地回购根位于 E:\repos\MCPServerPS.
{
"servers": {
"MCPServerPS": {
"type": "stdio",
"command": "pwsh",
"args": [
"-noprofile",
"-c",
"MCPServerPS\\Start-MyMCP -ScriptRoot E:\\repos\\MCPServerPS\\scripts"
]
}
},
"inputs": []
}3.曝光模块功能工具
假设本地回购根位于 E:\repos\MCPServerPS.
{
"servers": {
"MCPServerPS": {
"type": "stdio",
"command": "pwsh",
"args": [
"-noprofile",
"-c",
"MCPServerPS\\Start-MyMCP -Module E:\\repos\\MCPServerPS\\scripts\\tools.psm1"
]
}
},
"inputs": []
}从PowerShell库安装
这 MCPServerPS 模块需要PowerShell 7.4或更高版本。 要安装它,请运行以下命令:
Install-PSResource -Name MCPServerPS -Repository PSGallery从GitHub版本安装
使用下载最新版本的zip gh CLI,然后将其解压缩到PowerShell模块路径。
# Download the latest release zip
gh release download --repo daxian-dbw/MCPServerPS --pattern "MCPServerPS-*.zip" --output MCPServerPS.zip --clobber
# Extract to your PowerShell module path (adjust destination as needed)
Expand-Archive -Path MCPServerPS.zip -DestinationPath "$HOME\Documents\PowerShell\Modules" -Force提取后,验证模块是否可用:
Get-Module -ListAvailable MCPServerPS从GitHub NuGet Feed安装
先决条件
- 这
PSResourceGet模块已安装。 - A.
SecretVault被创建为default.
说明
设置PAT以读取馈送。
创建一个 个人访问令牌(经典) 随着 package:read 许可。 在撰写本文时,这是唯一允许这些前提的令牌类型。
## The command should prompt for the secret.
Set-Secret -Name GitHubPackageRead注册存储库。 这假设你叫你保管库 default 如先决条件中所述。
Register-PSResourceRepository `
-name daxian-dbw `
-uri https://nuget.pkg.github.com/daxian-dbw/index.json `
-ApiVersion V3 `
-CredentialInfo @{ VaultName='default'; SecretName='GitHubPackageRead' } `
-Trusted然后,您可以安装该模块:
Install-PSResource -Name MCPServerPS -Repository daxian-dbw