API & MCP Server Skeleton
by luridarmawan
A lightweight, high-performance API Server using ElysiaJS with Bun runtime, integrated with Model Context Protocol (MCP) and WebSocket support. It's designed for context-aware interactions with AI agents or applications.
Last updated: N/A
API & MCP Server Skeleton (ElysiaJS + Bun)
bun
elysia
mcp
websocket
license
(Documentation is not yet complete.)
<!-- TOC --> <details> <summary>š Daftar Isi</summary> </details>A lightweight, high-performance API Server using ElysiaJS with Bun runtime, integrated with Model Context Protocol (MCP) and WebSocket support.
š Features
- REST API Server powered by Bun runtime.
- WebSocket Event Handling (realtime communication).
- Model Context Protocol (MCP) base support:
- MCP Plugin Registry
- MCP Discovery Endpoint (
/.well-known/mcp.json
)
- Hot reload during development.
- Ready for scalable deployment.
- Example Events: Prayer Schedule, Event Registration.
š Requirements
- Bun runtime (v1.0+): Install Bun
- Node.js (optional, for installing tools like wscat)
- WebSocket client (Postman, wscat, etc.)
š ļø Getting Started
Clone this project and install dependencies:
git clone https://github.com/luridarmawan/mcp-api-server.git
cd mcp-api-server
bun install
Run development server:
bun run dev
Open http://localhost:3000 in your browser.
š§ Model Context Protocol (MCP)
MCP is a lightweight communication protocol designed to enable context-aware interactions with AI agents or applications.
- Base URL: http://localhost:3000/mcp
- Discovery Endpoint: http://localhost:3000/mcp/.well-known/mcp.json
Example basic MCP interaction via WebSocket:
{
"event": "prayer:schedule",
"data": {
"city": "Jakarta"
}
}
For full details, see MCP and API Explanation.
š WebSocket Usage
You can interact with the server via WebSocket:
- Install wscat if needed:
npm install -g wscat
- Connect to the WebSocket server:
wscat -c ws://localhost:3000
- Example Events you can send:
| Event | Payload Example | Description |
|---|---|---|
| prayer:schedule
| "Jakarta"
| Get prayer times for a city |
| registration:new
| { "name": "Alice", "phone": "081122334455", "email": "[email protected]" }
| Register a new user |
# Install wscat (jika belum ada)
npm install -g wscat
# Connect ke socket server
wscat -c ws://localhost:3000
# Setelah terhubung, kirim event:
>> {"event":"prayer:schedule","data":{"city":"Jakarta"}}
>> {"event":"registration:new","data":{"name":"Alice","phone":"081122334455","email":"[email protected]"}}
š Project Structure
.
āāā constants.ts
āāā index.test.ts
āāā index.ts
āāā modules
āĀ Ā āāā mcp
āĀ Ā āĀ Ā āāā index.ts
āĀ Ā āĀ Ā āāā types.ts
āĀ Ā āāā prayer
āĀ Ā āĀ Ā āāā index.ts
āĀ Ā āĀ Ā āāā types.ts
āĀ Ā āāā registration
āĀ Ā āāā index.ts
āĀ Ā āāā types.ts
āāā services
āĀ Ā āāā prayerService.ts
āāā sockets
āĀ Ā āāā index.ts
āāā utils
āāā http.ts
š Deployment
Build and run for production:
bun run build
bun start
Ready to deploy on platforms like Vercel, Railway, Fly.io, or any Bun-supported environment.
š License
This project is licensed under the Apache 2.0 License.