跳到主要内容
翻译页面

本页面由 AI 辅助从英文翻译而来。如两者存在差异,以英文版本为准。

.NET / C#

将 StackQL MCP 服务器嵌入 .NET 应用,可作为下载的 sidecar 运行,或以 vendoring 方式打包进你的构建,生成自包含的可执行文件。客户端是官方的 C# MCP SDK。

信息

嵌入的二进制文件在首次运行时下载并经 sha256 校验,或以 vendoring 方式打包进你的应用。参阅通用契约。


安装​

dotnet add package StackQL.Mcp

可选的 StackQL.Mcp.AgentFramework 包提供 Agent Framework 集成。需要 .NET 8 或更高版本。


快速入门​

using StackQL.Mcp;

await using var server = await StackqlMcp.CreateBuilder()
.WithMode(StackqlMode.ReadOnly)
.WithAuth("github", "null_auth")
.StartAsync();

var tools = await server.ListToolsAsync();
var result = await server.CallToolAsync("list_services",
new() { ["provider"] = "github", ["row_limit"] = 5 });

API 为 StackqlMcp.CreateBuilder(),搭配 .WithMode()、.WithAuth()、.WithBinary()、.WithBundlePath()、.WithApproot() 和 .WithCommand(),然后是 .StartAsync()、.ListToolsAsync() 和 .CallToolAsync()。


模式​

构建器默认使用 StackqlMode.ReadOnly。调用 .WithMode() 并传入 StackqlMode.Safe、StackqlMode.DeleteSafe 或 StackqlMode.FullAccess 即可提升权限。权限提升必须显式进行:除非你明确选择启用,否则服务器不会启用变更或生命周期工具。


Vendoring / 嵌入​

获取二进制文件有两种方式:

  • Sidecar(默认):平台 bundle 在首次运行时下载,经 sha256 校验后缓存到 ~/.stackql/mcp-server-bin/<version>/<platform-key>/,并通过 stdio 启动。
  • Vendored:将 bundle 作为构建资源嵌入,生成自包含的可执行文件:
dotnet build -p:StackqlVendorBundle=/path/to/stackql-mcp-windows-x64.mcpb

也可以在运行时通过 STACKQL_MCP_BIN 或 STACKQL_MCP_BUNDLE 环境变量覆盖二进制文件或 bundle。


演示应用​

driftwatch 是一个 .NET Worker Service,它嵌入只读的 StackQL 服务器,定时运行一组 SQL 漂移检查(公开暴露、缺少标签或许可证、基线漂移),并将检查结果发布到 Teams Adaptive Card。


github.com/stackql/stackql-mcp-dotnet