mcpcraft-sdk
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

ParameterTypeRequiredDefaultDescription
namestringYesIdentifies your server to MCP clients
versionstringNo"0.1.0"SemVer version string
descriptionstringNoHuman-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", /* ... */ }))
PropertyTypeDescription
itemTool | ResourceCreated by tool() or resource()

Returns: McpServerInstance (chainable)


server.start()

Launches the server on stdio transport. Configures all JSON-RPC handlers automatically.

await server.start()
ReturnsDescription
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()