About MCP Test Server
A TypeScript and Express.js MCP server for testing and demonstrations. It exposes BMI calculation, weather lookup, and echo tools over Streamable HTTP, with environment-based configuration.
Key features
- 01BMI calculation tool
- 02City weather lookup
- 03Message echo tool
- 04Streamable HTTP transport
- 05Environment-based configuration
Use cases
- 01Test MCP tool calls with sample functions
- 02Demonstrate a Streamable HTTP MCP server
- 03Try weather lookup with an API key
MCP support
The server exposes BMI, weather, and echo tools to MCP clients over Streamable HTTP at the `/mcp` endpoint.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEMCP Test Server
A Model Context Protocol (MCP) server implementation with multiple tools for testing and demonstration purposes.
Overview
This server provides three main tools:
- BMI Calculator: Calculate Body Mass Index from weight and height
- Weather Service: Get weather information for any city (with API key support)
- Echo Tool: Simple echo functionality for testing
Features
- Built with TypeScript and Express.js
- Streamable HTTP transport for MCP
- Environment-based configuration
- Hot reload development support
- Modular tool architecture
Prerequisites
- Node.js (v18 or higher)
- npm or yarn package manager
Installation
-
Clone or download this repository
-
Install dependencies:
npm install -
Copy the environment example file:
cp .env.example .env -
(Optional) Add your weather API key to
.env:WEATHER_API_KEY=your_openweathermap_api_key_here
Build and Run
Development Mode
# Build and start with hot reload
npm run dev
Production Mode
# Build the project
npm run build
# Start the server
npm start
The server will start on http://localhost:3000 (or the port specified in your PORT environment variable).
API Endpoint
The MCP server is accessible at:
POST http://localhost:3000/mcp
Available Tools
1. BMI Calculator (calculate-bmi)
Calculate Body Mass Index from weight and height.
Parameters:
weightKg(number): Weight in kilogramsheightM(number): Height in meters
2. Weather Service (get-weather)
Get current weather information for a city.
Parameters:
city(string): City namecountry(string, optional): Country code (e.g., "IN", "US")
3. Echo Tool (echo)
Simple echo functionality for testing purposes.
Parameters:
message(string): Message to echo back
Testing the Server
Using MCP Inspector
For a GUI interface to test MCP server:
-
Start server:
npm start -
In another terminal, run the MCP inspector:
npm run inspector
VS Code Integration
If you're using VS Code with MCP support, add this server to your settings:
{
"mcp": {
"servers": {
"mcp-test-server": {
"url": "http://localhost:3000/mcp"
}
}
}
}
Project Structure
├── src/
│ ├── index.ts # Main server file
│ └── tools/ # Tool implementations
│ ├── bmi.ts # BMI calculator tool
│ ├── weather.ts # Weather service tool
│ └── echo.ts # Echo tool
├── build/ # Compiled JavaScript files
├── package.json # Project configuration
├── tsconfig.json # TypeScript configuration
├── .env.example # Environment variables example
└── README.md # This file
Development
Adding New Tools
-
Create a new tool file in
src/tools/:import { CallToolResult } from '@modelcontextprotocol/sdk/types.js'; import { z } from 'zod'; export const myTool = { name: 'my-tool', schema: { param1: z.string(), param2: z.number(), }, handler: async ({ param1, param2 }: { param1: string; param2: number }): Promise<CallToolResult> => { return { content: [ { type: 'text', text: `Result: ${param1} - ${param2}`, }, ], }; }, }; -
Import and register it in
src/index.ts:import { myTool } from './tools/my-tool.js'; // In the getServer() function: server.tool( myTool.name, 'Description of my tool', myTool.schema, myTool.handler );
Available Scripts
npm run build- Compile TypeScript to JavaScriptnpm run watch- Watch for changes and recompilenpm run dev- Development mode with hot reloadnpm start- Start the compiled servernpm run inspector- Launch MCP inspector
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.