MCP Data Server �
A comprehensive Model Context Protocol (MCP) server that provides various data services, starting with real-time weather data and designed for easy extension to other data sources.
🚀 Features
- Modular Architecture: Easy to extend with new data services
- Real-time Weather Data: Get current weather conditions for any city
- MCP Protocol Compliance: Fully compatible with the Model Context Protocol
- TypeScript Support: Written in TypeScript for better type safety
- Stdio Transport: Uses standard input/output for communication
- Extensible Design: Ready for news, finance, sports, and other data services
📋 Prerequisites
- Node.js (v18 or higher)
- npm or yarn package manager
- TypeScript support
🛠️ Installation
- Clone the repository:
- Install dependencies:
- Build the project (optional):
🎯 Usage
Running the Server
Development Mode
Production Mode
MCP Configuration
Add the following configuration to your MCP client's configuration file (.vscode/mcp.json
):
🔧 Available Services
Weather Service
getWeather
Get current weather data for a specified city.
Parameters:
city
(string): The name of the city to get weather for
Example Usage:
Response Format:
🔮 Future Services (Planned)
- News Service: Get latest news from various sources
- Finance Service: Stock prices, market data, cryptocurrency
- Sports Service: Live scores, team statistics, schedules
- Social Media Service: Trending topics, social metrics
- Maps Service: Location data, directions, places
🏗️ Architecture
Project Structure
Transport Layer
The server uses StdioServerTransport for communication:
- Input: Standard input (stdin)
- Output: Standard output (stdout)
- Protocol: JSON-RPC over stdio
- Benefits: Simple, reliable, and widely supported
Service Architecture
Each service follows this pattern:
🔍 MCP Inspector Integration
For debugging and development, you can use the MCP Inspector:
- Install the MCP Inspector:
- Run the inspector:
- Open the inspector in your browser at
http://localhost:5173
🧪 Development
Adding New Services
- Create Type Definitions (
src/types/myservice.ts
):
- Implement Service (
src/services/myservice.ts
):
- Register Tool (in
src/main.ts
):
Development Scripts
npm run dev
- Run in development mode with hot reloadnpm run build
- Build the TypeScript projectnpm start
- Run the built projectnpm test
- Run tests (when implemented)
🌐 API Details
Weather Service API
- Geocoding:
https://geocoding-api.open-meteo.com/v1/search
- Weather:
https://api.open-meteo.com/v1/forecast
- Rate Limit: Free tier, no authentication required
- Model: UKMO Seamless (UK Met Office)
🤝 Contributing
We welcome contributions for new data services! Here's how:
- Fork the repository
- Create a feature branch:
git checkout -b feature/new-service
- Add your service following the architecture above
- Add tests and documentation
- Commit your changes:
git commit -m 'Add new service'
- Push to the branch:
git push origin feature/new-service
- Open a Pull Request
Service Guidelines
- Each service should be self-contained in its own file
- Use TypeScript for type safety
- Include proper error handling
- Add JSDoc comments for public methods
- Follow the existing code style
📄 License
This project is licensed under the ISC License - see the LICENSE file for details.
🙏 Acknowledgments
- Model Context Protocol for the protocol specification
- Open-Meteo for the free weather API
- TypeScript for type safety
📞 Support
If you encounter any issues or have questions:
- Check the Issues page
- Create a new issue with detailed information
- Contact: rajasekaran.parthiban7@gmail.com
🔄 Changelog
v1.0.0
- Initial release with weather service
- Modular architecture for easy extension
- MCP protocol compliance
- TypeScript implementation
- Stdio transport support
Made with ❤️ by ParthibanRajasekaran | Ready for extension to any data service! const server = new McpServer({ name: "MCP Weather Server", version: "1.0.0", description: "A server that provides weather data" });
📁 Project Structure
🔍 MCP Inspector Integration
To use with the MCP Inspector for debugging and development:
- Configure MCP Client: Add the server to your MCP configuration file (
.vscode/mcp.json
):
- Launch Inspector: The server can be inspected using MCP-compatible tools and inspectors.
- Debug Mode: Use the development server for real-time debugging:
🌐 API Integration
The server integrates with two Open-Meteo APIs:
Geocoding API
- Endpoint:
https://geocoding-api.open-meteo.com/v1/search
- Purpose: Convert city names to coordinates
- Features: Multi-language support, fuzzy matching
Weather API
- Endpoint:
https://api.open-meteo.com/v1/forecast
- Purpose: Retrieve weather data using coordinates
- Model: UK Met Office Seamless model (
ukmo_seamless
) - Data: Current conditions + hourly forecasts
🛠️ Development
Available Scripts
Adding New Features
- New Tools: Add tools to the server using the
server.tool()
method - Enhanced Data: Extend the weather API calls to include more parameters
- Error Handling: Improve error handling for edge cases
🌍 Usage Examples
Basic Weather Query
Multi-City Comparison
🔐 Error Handling
The server includes comprehensive error handling:
- Invalid Cities: Returns helpful error messages for non-existent cities
- API Failures: Graceful handling of network issues
- Data Validation: Input validation using Zod schemas
📊 Data Schema
Current Weather Response
🤝 Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
📝 License
This project is licensed under the ISC License - see the LICENSE file for details.
🙏 Acknowledgments
- Open-Meteo for providing free weather data
- Model Context Protocol for the MCP specification
- UK Met Office for the weather model data
📞 Support
For questions or issues:
- Create an issue on GitHub
- Check the MCP Documentation
Built with ❤️ using the Model Context Protocol
This server cannot be installed
A Model Context Protocol server that provides real-time weather data and forecasts for any city.