skulk

Crates.ioskulk
lib.rsskulk
version0.1.0
created_at2025-12-14 22:53:46.012079+00
updated_at2025-12-14 22:53:46.012079+00
descriptionMCP (Model Context Protocol) connection manager - sneaking connections to the outside
homepage
repositoryhttps://github.com/moltenlabs/molten
max_upload_size
id1985227
size60,044
Chris Mathew (chriscmathew-dorsia)

documentation

README

🕵️ Skulk

MCP (Model Context Protocol) connection manager - sneaking connections to the outside.

Crates.io Documentation License

Overview

Skulk provides a Rust client for the Model Context Protocol (MCP), managing connections to MCP servers and enabling tool discovery and execution.

Features

  • 🔌 Multiple transport support (stdio, socket, HTTP)
  • 🔧 Automatic tool discovery
  • 📦 Tool schema caching
  • 💓 Health monitoring
  • 🔒 Sandbox state notifications

Installation

[dependencies]
skulk = "0.1"

Usage

use skulk::{McpManager, McpServerConfig};
use warhorn::McpTransport;

#[tokio::main]
async fn main() -> Result<(), skulk::McpError> {
    let mut manager = McpManager::new();

    // Connect to an MCP server
    let config = McpServerConfig {
        id: "my-server".into(),
        name: "My MCP Server".into(),
        transport: McpTransport::Stdio {
            command: "my-mcp-server".into(),
            args: vec![],
        },
        env: Default::default(),
    };

    manager.connect(config).await?;

    // Discover available tools
    let tools = manager.list_tools();
    for tool in tools {
        println!("Found tool: {} - {}", tool.name, tool.description);
    }

    // Call a tool
    let result = manager.call_tool(
        "my-server",
        "some_tool",
        serde_json::json!({"arg": "value"})
    ).await?;

    Ok(())
}

Transport Types

use warhorn::McpTransport;

// Stdio (spawn a process)
let stdio = McpTransport::Stdio {
    command: "npx".into(),
    args: vec!["-y", "@modelcontextprotocol/server-filesystem"].into_iter().map(String::from).collect(),
};

// Unix socket
let socket = McpTransport::Socket {
    path: "/tmp/mcp.sock".into(),
};

// HTTP/SSE
let http = McpTransport::Http {
    url: "http://localhost:3000/mcp".into(),
};

Part of the Goblin Family

License

MIT OR Apache-2.0

Commit count: 0

cargo fmt