TestMcpServer
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@TestMcpServercapture browser console logs from https://example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
TestMcpServer
Introduction
This example MCP Server implementation uses Anthropic's open source Model Context Protocol. I found the existing examples to be unbearable to look at, mostly very long one-filers and very hard to read through. With this more manageable approach I want users to find examples that are easier to understand and get into than what is currently out there. Let this be the foundation for your next MCP Server project.
Requires Node, npm, typescript
Features
The MCP server currently provides the following tools:
Mathematical Tools
Addition: Add two numbers together
Subtraction: Subtract one number from another
Multiplication: Multiply two numbers together
Division: Divide one number by another (with division by zero protection)
Square Root: Calculate the square root of a number
Power: Raise a number to the power of another number
Modulo: Calculate the remainder when dividing one number by another
Logarithm: Calculate the logarithm of a number with a specified base
Average: Calculate the arithmetic mean of two numbers
Related MCP server: Local Utilities MCP Server
Image Processing Tools
Image Conversion: Convert images between formats (PNG/JPG to WebP/AVIF) with compression
Image Resize: Resize images while optionally converting formats
Filesystem Tools
Tree: Get the directory tree structure of a specified path
Git Tools
Commit History: Show recent git commits
Diff: Show diffs between revisions
Text Utilities
Word Count: Count lines, words and characters
Search Replace: Perform search and replace on files
Network Tools
HTTP Request: Perform a simple HTTP request
Ping: Check connectivity to a host
Date/Time Utilities
Timestamp Convert: Convert between timestamps and dates
Schedule: Run a command after a short delay
Security Tools
Hash: Generate hashes for text or files
Checksum: Verify file checksums
Browser Tools
Console Capture: Captures browser console logs (errors, warnings, info, logs) from a specified URL
All tools include comprehensive error handling and input validation to ensure robust operation.
Installation
run npm install upon cloning the repository.
Check package.json for scripts to use.
Run npm run build to build the server.
Run node build/index.js to run the server.
I suggest the following however:
Run npm run dev to watch changes on save and then rebuild and re-run inspector so you can test it in localhost:5173
Before being able to run the MCP server in Cursor it must be built first.
Testing MCP Tools
This project includes a comprehensive testing framework for MCP tools using Jest. The tests ensure that all tools work correctly and handle edge cases properly.
Running Tests
To run all tests:
npm testTo run tests with coverage report:
npm run test:coverageTo run specific tests:
npm test -- --testPathPattern=tests/maths/Test Structure
Controller Tests: Test controller handler methods directly (
tests/maths/,tests/browser/, etc.)Filesystem Tests: Use fixture directories for consistent testing
Browser Tests: Test browser interactions with test HTML pages
MCP Simulation Tests: Test tools through the MCP request/response flow
Edge Case Tests: Specialized tests for validation and error handling (
tests/maths/validation-edge-cases.test.ts)
Testing Approach
The test suite follows a comprehensive approach:
Basic functionality tests - Verify that tools work correctly with valid inputs
Edge case tests - Test boundary conditions like zero values, negative numbers, etc.
Error handling tests - Verify proper error responses for invalid inputs
Validation tests - Test input validation with null/undefined values, non-numeric inputs, etc.
Overflow tests - Test behavior with extremely large values
Adding New Tests
Create test files in the appropriate category folder under
tests/Use the utility in
tests/utils/mcpTestHelper.tsto simulate MCP tool callsFor filesystem tests, use the fixtures in
tests/fixtures/For browser tests, use or create test HTML files
For validation edge cases, add tests to specialized validation test files
MCP Server - Adding New Tools
This guide explains how to add new tools to the MCP server. The process involves four main components:
1. Tool Definition (/src/definitions/)
First, create your tool definition in the appropriate category folder (e.g., maths/):
// Example: src/definitions/maths/addition.ts
import { Tool } from "@modelcontextprotocol/sdk/types.js";
export const ADDITION: Tool = {
name: "addition",
description: "Add two numbers together",
inputSchema: {
type: "object",
properties: {
a: {
type: "number",
description: "First number to add",
},
b: {
type: "number",
description: "Second number to add",
},
},
required: ["a", "b"],
},
};Then add it to the category's main file:
// src/definitions/maths/main.ts
import { ADDITION } from "./addition.js";
import { MULTIPLICATION } from "./multiplication.js";
const MATHS_TOOLS = [ADDITION, MULTIPLICATION] as const;
export default MATHS_TOOLS;2. Controller Implementation (/src/controllers/)
Add the handler method to the appropriate controller:
// src/controllers/MathsController.ts
class MathsController {
async handleAddition(a: number, b: number) {
try {
const result = a + b;
return {
content: [
{
type: "text",
text: `Sum: ${result}`,
},
],
isError: false,
};
} catch (error) {
return {
content: [
{
type: "text",
text: `Error calculating sum: ${
error instanceof Error ? error.message : String(error)
}`,
},
],
isError: true,
};
}
}
}3. Tool Registry (/src/utils/toolRegistry.ts)
Register your tool in the controllerMap:
const controllerMap: ControllerMap = {
// Math tools
addition: {
controller: MathsController,
handlerMethod: "handleAddition",
},
multiplication: {
controller: MathsController,
handlerMethod: "handleMultiplication",
},
};The registry exports two main functions:
// Get tool definitions for server registration
export function getToolDefinitions() {
return {
MATHS_TOOLS,
};
}
// Get handler for tool execution
export function getToolHandler(toolName: string) {
const mapping = controllerMap[toolName];
if (!mapping) {
return null;
}
const controllerInstance = new mapping.controller();
return async (args: any) => {
return await controllerInstance[mapping.handlerMethod](
...Object.values(args)
);
};
}4. Server Configuration (/src/index.ts)
The server is configured to use the tool registry:
const tools = getToolDefinitions();
const server = new Server(
{
name: "mcp-server",
version: "0.1.0",
},
{
capabilities: {
tools: getToolDefinitions(), // Register tools array
},
}
);
// List available tools
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: tools,
}));
// Handle tool calls
server.setRequestHandler(CallToolRequestSchema, async (request) => {
try {
const handler = getToolHandler(request.params.name);
if (!handler) {
return toolController.getUnknownToolResponse(request.params.name);
}
return await handler(request.params.arguments);
} catch (error) {
return toolController.getErrorResponse(error);
}
});Conventions
Tool Names: Use lowercase (e.g.,
addition,multiplication)Handler Methods: Name them as
handle+ PascalCase of the tool name (e.g.,handleAddition,handleMultiplication)Tool Categories: Group related tools in their own directory under
definitions/Controllers: Group related handlers in a controller class named after the category (e.g.,
MathsController)
Example Flow
Create tool definition in
src/definitions/category/toolname.tsAdd tool to category's
main.tsAdd handler method to appropriate controller
Register tool in
toolRegistry.ts'scontrollerMapTest the new tool
Add MCP Server to Cursor
Open settings
Go to Features
Scroll to MCP Servers
Click Add new MCP server
Give MCP Server a name of your preference
For type use
commandServer URL for local use should be
node <absolute path to project>\build\index.js>
It should light up green and list the registered tools.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/maikmetzger/TestMcpServer'
If you have feedback or need assistance with the MCP directory API, please join our Discord server