| Crates.io | skulk |
| lib.rs | skulk |
| version | 0.1.0 |
| created_at | 2025-12-14 22:53:46.012079+00 |
| updated_at | 2025-12-14 22:53:46.012079+00 |
| description | MCP (Model Context Protocol) connection manager - sneaking connections to the outside |
| homepage | |
| repository | https://github.com/moltenlabs/molten |
| max_upload_size | |
| id | 1985227 |
| size | 60,044 |
MCP (Model Context Protocol) connection manager - sneaking connections to the outside.
Skulk provides a Rust client for the Model Context Protocol (MCP), managing connections to MCP servers and enabling tool discovery and execution.
[dependencies]
skulk = "0.1"
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(())
}
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(),
};
MIT OR Apache-2.0