跳到主要内容
翻译页面

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

如何在 Rust 应用中嵌入 StackQL MCP 服务器

StackQL 的 MCP 服务器可以在 Rust 二进制文件内运行,无需 npx,无需单独安装,也没有运行时依赖。stackql-mcp crate 在 rmcp 客户端的背后通过 stdio 启动已签名的 StackQL 二进制文件,因此你的 Rust 应用可以获得一个受治理、自描述的 SQL 接口,用于访问 StackQL 注册表中的每个云和 SaaS Provider。这就是 auditron 所采用的模式,它是一个终端合规助手,以单个二进制文件发布。

步骤​

  1. 添加 crate 到 Cargo.toml:
stackql-mcp = "0.1"
  1. 构建服务器并列出工具。 构建器默认使用 Mode::ReadOnly:
use stackql_mcp::{Mode, StackqlMcp};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let server = StackqlMcp::builder()
.mode(Mode::ReadOnly)
.auth(serde_json::json!({"github": {"type": "null_auth"}}))
.start()
.await?;
let tools = server.list_all_tools().await?;
println!("{} tools available", tools.len());
server.shutdown().await?;
Ok(())
}

构建器还提供 .binary()、.bundle_path()、.approot() 和 .command()。MSRV 为 Rust 1.88。

  1. 选择模式。 .mode() 默认为 Mode::ReadOnly。仅当应用需要预配资源时,才设置 Mode::Safe、Mode::DeleteSafe 或 Mode::FullAccess。权限提升必须显式进行。

使用 include_bytes! 发布单个二进制文件​

两个功能标志控制二进制文件的获取方式:

  • sidecar(默认):在首次运行时下载、校验并缓存已签名的二进制文件。
  • vendored:使用 include_bytes! 嵌入二进制文件,生成单个自包含的可执行文件。

vendored 二进制文件会使构建体积增加约 80 MB。

演示应用​

auditron 是一个终端合规助手:它是一个 TUI,以流式方式输出通过/失败结果,同时显示所用的 SQL 和 Claude 的解释,以约 80 MB 的 vendored 单个二进制文件发布。