A production-ready TypeScript implementation of a Model Context Protocol (MCP) server with example tools demonstrating best practices for building MCP servers.
npm installnpm run buildnpm startnpm run exampleThe Model Context Protocol (MCP) is an open protocol that standardizes how applications provide context to Large Language Models (LLMs). It enables:
- Standardized Communication: A unified way for LLMs to interact with external tools and data sources
- Tool Integration: Expose custom functionality that AI models can discover and use
- Resource Management: Provide structured access to files, databases, and APIs
- Prompt Templates: Define reusable prompts for common tasks
- Server: Exposes tools, resources, and prompts that clients can use
- Client: Connects to MCP servers to access their capabilities
- Tools: Executable functions that perform specific tasks
- Resources: Data sources like files, database records, or API endpoints
- Prompts: Reusable prompt templates with parameters
creating-your-first-mcp-server/
├── src/
│ ├── index.ts # Main MCP server implementation
│ └── tools/
│ ├── calculator.ts # Mathematical operations tool
│ ├── weather.ts # Weather information tool
│ └── file-ops.ts # File operations tool
├── examples/
│ └── client.ts # Example MCP client usage
├── documentation/
│ ├── MCP-CONCEPTS.md # In-depth MCP concepts
│ ├── TOOL-DEVELOPMENT.md # Guide to creating tools
│ └── INTEGRATION.md # Integration guide
├── package.json
├── tsconfig.json
└── LICENSE
Performs mathematical operations (add, subtract, multiply, divide, power, sqrt).
// Example usage
{
"operation": "add",
"a": 5,
"b": 3
}
// Returns: { "result": 8 }Retrieves weather information for a location (simulated data for demonstration).
// Example usage
{
"location": "San Francisco"
}
// Returns weather data including temperature, conditions, humidityPerforms file system operations (read, write, list, delete).
// Example usage
{
"operation": "read",
"path": "/path/to/file.txt"
}
// Returns file contents or operation resultnpm run buildnpm run devnpm run cleanFor more detailed information, see:
- MCP Concepts - Deep dive into MCP architecture and concepts
- Tool Development Guide - How to create custom tools
- Integration Guide - Integrating the server with clients
This server implements comprehensive error handling:
- Input validation for all tool parameters
- Graceful error messages for clients
- Type-safe error responses
- Logging for debugging
- File operations are restricted to safe directories
- Input validation prevents injection attacks
- Error messages don't expose sensitive system information
- Rate limiting can be added for production use
MIT License - Copyright (c) 2026 ry-ops
Contributions are welcome! Please feel free to submit a Pull Request.