An HTTP-based MCP server for accessing real-time cryptocurrency data
My HTTP MCP Server
A small Model Context Protocol (MCP) server built with:
@modelcontextprotocol/sdkexpresstypescriptzod
The app exposes a Streamable HTTP MCP endpoint at /mcp and includes a few example tools, resources, and prompts centered around cryptocurrency data.
Project Structure
src/
server.ts
http/
createMcpApp.ts
mcp/
createMcpServer.ts
services/
cryptoService.ts
Responsibilities
src/server.tsStarts the HTTP server and wires the app together.src/http/createMcpApp.tsContains the HTTP and MCP transport boilerplate: request parsing, origin validation, session management, and/mcproute handling.src/mcp/createMcpServer.tsDefines the MCP server itself: tools, resources, prompts, and their schemas.src/services/cryptoService.tsContains the business logic for symbol normalization, Binance API calls, and activity log access.
Features
The server currently registers:
Tools:
ping,add_numbers,get_price,get_price_changeResources:
activity_log,crypto_pricePrompt:
executive_summary
The crypto-related tools call Binance's public market-data endpoints and append activity to activity.log.
Requirements
- Node.js 20+
- npm
Node 20+ is recommended because the app relies on the built-in fetch API.
Install
npm install
Run
Start the server directly from TypeScript with tsx:
npx tsx src/server.ts
By default, the server listens on:
http://127.0.0.1:8787/mcp
You can override the port with PORT:
PORT=3000 npx tsx src/server.ts
Build / Type Check
This repo does not currently include a tsconfig.json or build script, so the simplest way to validate the TypeScript sources is:
npx tsc --noEmit --module nodenext --moduleResolution nodenext --target es2022 --esModuleInterop src/server.ts src/http/createMcpApp.ts src/mcp/createMcpServer.ts src/services/cryptoService.ts
If you want to add a real build pipeline later, the next step would usually be:
- Add a
tsconfig.json - Add
build,dev, andtypecheckscripts topackage.json - Emit compiled JavaScript into a
dist/directory
Testing
There is not a dedicated automated test suite yet.
Right now, the practical testing flow is:
- Run the TypeScript check command above
- Start the server with
npx tsx src/server.ts - Connect with an MCP client and exercise the registered tools/resources/prompts
Suggested Manual Smoke Tests
- Call
pingand confirm it returnspong - Call
add_numberswith two values and confirm the sum - Call
get_pricewithBTC,ETH,Bitcoin, orEthereum - Call
get_price_changeand confirm a 24-hour summary is returned - Read the
activity_logresource and confirm requests are recorded - Use the
executive_summaryprompt and confirm it references the crypto tools correctly
Notes
- The HTTP boilerplate and session handling are intentionally separate from business logic.
- Session state is stored in memory, so this server is best suited for local development or simple demos.
- The crypto tools depend on outbound network access to Binance.
- The activity log is stored locally in
activity.logat the project root.
Future Improvements
- Add
tsconfig.json - Add npm scripts for
dev,build,typecheck, andtest - Add automated tests for:
- symbol normalization
- Binance response handling
- MCP tool/resource/prompt registration
- HTTP session lifecycle
Tools (4)
pingChecks if the server is responsive.add_numbersAdds two numbers together.get_priceFetches the current price for a cryptocurrency symbol.get_price_changeReturns a 24-hour price change summary.Environment Variables
PORTThe port the HTTP server listens on (defaults to 8787)Configuration
{ "mcpServers": { "crypto-http": { "command": "npx", "args": ["-y", "tsx", "src/server.ts"] } } }