Documentation Index Fetch the complete documentation index at: https://docs.prism.byescaleira.com/llms.txt
Use this file to discover all available pages before exploring further.
MCP Transports
Prism supports two transport modes for MCP communication. Choose based on how your AI client connects.
Stdio Transport
The stdio transport reads JSON-RPC messages from stdin and writes responses to stdout. This is the standard for CLI-based MCP servers that AI clients launch as subprocesses.
@main
struct MyMCPServer {
static func main () async throws {
let mcp = PrismMCPServer ( name : "my-tools" , version : "1.0.0" )
await mcp. registerTool ( "hello" , description : "Say hello" , inputSchema : [ : ]) { _ in
PrismMCPToolResult ( content : [. text ( "Hello from Prism!" )], isError : false )
}
let transport = PrismMCPStdioTransport ( server : mcp)
await transport. start () // Blocks, reading stdin
}
}
Claude Desktop Configuration
Add your server to Claude Desktop’s config file:
claude_desktop_config.json
{
"mcpServers" : {
"my-tools" : {
"command" : "/path/to/your/binary" ,
"args" : []
}
}
}
Build your server as a release binary with swift build -c release, then point Claude Desktop to the binary in .build/release/.
HTTP Transport
The HTTP transport integrates with your Prism web server, handling MCP requests over HTTP POST and server notifications over SSE:
let server = PrismHTTPServer ( port : 8080 )
let mcp = PrismMCPServer ( name : "web-tools" , version : "1.0.0" )
// Register tools...
await mcp. registerTool ( "search" , description : "Search" , inputSchema : [ "q" : "string" ]) { args in
PrismMCPToolResult ( content : [. text ( "Results for: \( args[ "q" ] ?? "" ) " )], isError : false )
}
// Mount MCP on the HTTP server
let mcpTransport = PrismMCPHTTPTransport ( server : mcp, path : "/mcp" )
await server. use (mcpTransport)
try await server. start ()
Endpoints
Method Path Purpose POST /mcpSend JSON-RPC requests GET /mcp/sseSSE stream for server notifications
Testing with curl
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"clientInfo":{"name":"test"}}}'
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"search","arguments":{"q":"prism"}}}'
Choosing a Transport
Use Stdio When... Building CLI tools, local development servers, or Claude Desktop integrations. The AI client launches your binary as a subprocess.
Use HTTP When... Running a web service, hosting MCP alongside a REST/GraphQL API, or serving remote AI clients over the network.
What’s Next
Tools Build powerful tools for AI assistants
Resources Expose data as readable resources