Skip to main content
Glama
Balneario-de-Cofrentes

mcp-stdio

mcp-stdio

Zero-dependency MCP server for stdio transport. Just tools, nothing else.

npm version License: MIT

Why

The official MCP SDK has 17 dependencies (Express, Hono, OAuth, JWT...). Most MCP servers just need stdio + tools. This package is 222 lines, zero runtime dependencies.

@modelcontextprotocol/sdk

mcp-stdio

Dependencies

17

0

Transport

stdio, HTTP, SSE

stdio

Features

tools, resources, prompts, sampling, auth

tools

Lines

~5000+

222

Related MCP server: MPC-PoC-1-EchoServerToolsbasicas

Install

npm install mcp-stdio

Usage

import { createMcpServer } from 'mcp-stdio';

createMcpServer({
  name: 'my-server',
  version: '1.0.0',
  tools: {
    greet: {
      description: 'Say hello',
      parameters: {
        type: 'object',
        properties: { name: { type: 'string' } },
        required: ['name'],
      },
      handler: async ({ name }) => `Hello ${name}!`,
    },

    add: {
      description: 'Add two numbers',
      parameters: {
        type: 'object',
        properties: {
          a: { type: 'number' },
          b: { type: 'number' },
        },
        required: ['a', 'b'],
      },
      handler: async ({ a, b }) => `${Number(a) + Number(b)}`,
    },
  },
});

Configure in Claude Code

{
  "mcpServers": {
    "my-server": {
      "command": "node",
      "args": ["my-server.js"]
    }
  }
}

API

createMcpServer(options)

Starts an MCP server reading JSON-RPC from stdin, writing to stdout.

Options:

Field

Type

Required

Description

name

string

yes

Server name (shown to clients)

version

string

no

Server version (default: '0.1.0')

tools

Record<string, ToolDefinition>

yes

Tool definitions

ToolDefinition:

Field

Type

Required

Description

description

string

yes

What the tool does

parameters

JsonSchema

no

JSON Schema for input

handler

(params) => Promise<string | ToolContent[]>

yes

Implementation

Handler return types:

  • string — wrapped as [{ type: 'text', text: '...' }]

  • ToolContent[] — returned as-is (supports text, image, resource)

Errors in handlers are caught and returned as { isError: true, content: [{ type: 'text', text: 'Error: ...' }] } — the server never crashes.

What it implements

  • JSON-RPC 2.0 over stdio (newline-delimited)

  • initialize with capability negotiation

  • tools/list with JSON Schema input schemas

  • tools/call with structured content responses

  • ping

  • Proper error codes (-32700, -32600, -32601, -32603)

  • Notification handling (no response for messages without id)

  • Logs to stderr (stdout is protocol-only)

What it doesn't implement

  • HTTP/SSE/Streamable HTTP transport

  • Resources, Prompts, Sampling

  • OAuth, authentication

  • Schema validation (trusts the caller — your handler validates)

These are intentional omissions. If you need them, use the official SDK.

License

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A simple toolkit for creating MCP servers with stdio and SSE transport, auto-validating tools via Pydantic.
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    A learning-oriented MCP server that exposes basic tools (echo, add, reverse) over stdio transport to validate MCP handshake and tool calls.
    3
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    A minimal, decorator-based framework for building MCP servers in Python with zero dependencies. It enables you to define tools and resources via simple decorators, handling JSON-RPC protocol, type inference, and stdio transport automatically.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Minimal MCP server allowing Python functions to be served as MCP tools over stdio or HTTP, with a built-in client for connecting to MCP servers.
    2
    Apache 2.0