Skip to main content
Glama
piyushgithub15

Streamable MCP Server

Streamable MCP Server

A Model Context Protocol server written in TypeScript, exposed over the Streamable HTTP transport (the modern replacement for the older HTTP+SSE transport).

Features

  • Streamable HTTP transport at POST/GET/DELETE /mcp, with per-session state (via the mcp-session-id header)

  • Example tools: echo, add, get-time

  • Example resource: info://server

  • GET /healthz for container/orchestrator health checks

  • Multi-stage, non-root Dockerfile

Related MCP server: MCP Server Basic Example

Project layout

src/
  server.ts   # McpServer factory: tools & resources are registered here
  index.ts    # Express app wiring the Streamable HTTP transport + session management

Local development

npm install
npm run dev      # tsx watch, restarts on change

Or build and run compiled JS:

npm run build
npm start

The server listens on http://localhost:3000/mcp by default (override with PORT).

Trying it with curl

Initialize a session (note the mcp-session-id response header, needed for follow-up requests):

curl -i -X POST http://localhost:3000/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl-test","version":"1.0"}}}'

Then, using the returned session id:

SESSION=<mcp-session-id from above>

curl -X POST http://localhost:3000/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "mcp-session-id: $SESSION" \
  -d '{"jsonrpc":"2.0","method":"notifications/initialized"}'

curl -X POST http://localhost:3000/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "mcp-session-id: $SESSION" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"add","arguments":{"a":21,"b":21}}}'

Docker

Build the image:

docker build -t streamable-mcp-server .

Run it:

docker run -d -p 3000:3000 --name mcp-server streamable-mcp-server

Check health:

curl http://localhost:3000/healthz

Adding your own tools

Add new server.registerTool(...) calls in src/server.ts. Each new session gets a freshly created McpServer, so any per-session state should live inside the factory function's closure or be looked up externally (e.g. a database) rather than stored in module-level globals.

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    D
    maintenance
    A simple implementation of a Model Context Protocol server that demonstrates core functionality including mathematical tools (add, subtract) and personalized greeting resources.
    93
    GPL 3.0
  • F
    license
    -
    quality
    D
    maintenance
    A demonstration implementation of a Model Context Protocol server that provides simple mathematical tools (add, subtract) and personalized greeting resources.
  • F
    license
    -
    quality
    D
    maintenance
    A minimal Model Context Protocol (MCP) server that uses streamable HTTP transport to provide demo tools for calculations, notes, and time. It serves as a standalone example for testing MCP connectivity and gateway registration through a standard HTTP endpoint.

View all related MCP servers

Related MCP Connectors

  • A Model Context Protocol server for Wix AI tools

  • Streamable HTTP MCP server for Google Calendar and Sheets with OAuth login.

  • MCP (Model Context Protocol) server for Appwrite

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/piyushgithub15/streamable-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server