API Reference
createServer
Initialize and configure your mcpcraft server.
createServer
Initializes a new Model Context Protocol (MCP) server instance with automatic transport configuration.
import { createServer } from "mcpcraft-sdk"
const server = createServer({
name: "my-server",
version: "1.0.0",
description: "A custom MCP server"
})Options
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
name | string | Yes | — | Identifies your server to MCP clients |
version | string | No | "0.1.0" | SemVer version string |
description | string | No | — | Human-readable description shown in client UIs |
Methods
server.add(item)
Registers a tool or resource. Returns the server instance for chaining.
const server = createServer({ name: "my-server" })
server
.add(tool({ name: "search", /* ... */ }))
.add(resource({ name: "status", /* ... */ }))| Property | Type | Description |
|---|---|---|
item | Tool | Resource | Created by tool() or resource() |
Returns: McpServerInstance (chainable)
server.start()
Launches the server on stdio transport. Configures all JSON-RPC handlers automatically.
await server.start()| Returns | Description |
|---|---|
Promise<void> | Resolves when the server begins listening |
server.start() sets up stdio transport by default. For custom transports, access the underlying SDK instance via server.server.
server.server
Accesses the low-level Server instance from @modelcontextprotocol/sdk for advanced use cases.
import { CallToolRequestSchema } from "@modelcontextprotocol/sdk/types.js"
server.server.setRequestHandler(CallToolRequestSchema, async (req) => {
// Custom handler logic
})Full Example
import { createServer, tool, resource } from "mcpcraft-sdk"
const server = createServer({
name: "demo-server",
version: "1.0.0",
description: "Demonstrates all createServer features"
})
server
.add(tool({
name: "ping",
description: "Health check",
input: {},
run: async () => ({ status: "ok" })
}))
.add(resource({
name: "config",
description: "Server configuration",
uri: "config://app",
fetch: async () => ({ mode: "production" })
}))
await server.start()