ApiColombiaMCP
A Model Context Protocol (MCP) server that provides information about Colombia through the API Colombia service.
📊 Data Source
This project uses the API Colombia service for educational and practical purposes. The API provides comprehensive information about Colombia including departments, regions, cities, and general country data.
API URL: https://api-colombia.com/
Documentation: https://api-colombia.com/#informacionAPIS
Purpose: Educational and practical implementation of MCP server
Data Coverage: Departments, regions, cities, tourist attractions, and general country information
Note: This implementation is for educational and practical purposes only. The API Colombia service is a public, open-source project that provides free access to Colombian data.
🏗️ Architecture Overview
This project follows Clean Architecture principles with a modular, scalable structure designed for maintainability and extensibility.
📁 Project Structure
🎯 Architecture Layers
1. Presentation Layer (index.ts
)
Responsibility: Server initialization and tool registration
Key Features:
Uses constants for configuration
Dynamic tool registration from centralized configuration
Clean separation from business logic
2. Tools Layer (tools/
)
Responsibility: MCP tool definitions and configurations
Key Features:
Centralized tool configuration
Interface-based tool definitions
Easy extension for new tools
Type-safe tool registration
3. Business Logic Layer (services/
)
Responsibility: Core business operations
Key Features:
External API integration
Data transformation and formatting
Error handling and validation
Environment-based configuration
4. Shared Layer (shared/
)
Responsibility: Cross-cutting concerns and utilities
Key Features:
Centralized constants and configuration
Shared type definitions
Error message standardization
Reusable utilities
🔧 Key Components
Constants (shared/constants/index.ts
)
Tool Configuration (tools/index.ts
)
Service Implementation (services/country.services.ts
)
Fetches data from API Colombia
Formats response for MCP compatibility
Handles errors gracefully
Uses environment variables for configuration
🚀 Adding New Tools
To add a new tool, follow these steps:
Add constants in
shared/constants/index.ts
:
Create service in
services/
directory:
Add tool configuration in
tools/index.ts
:
🔒 Environment Configuration
The project uses environment variables for configuration:
The service gracefully falls back to default URLs if environment variables are not set.
🧪 Development
Prerequisites
Node.js (v16.9+ or v14.19+)
pnpm (package manager)
Package Manager Setup
This project uses pnpm as the package manager. If you encounter package manager conflicts:
Enable Corepack (included with Node.js 16.9+):
Install pnpm (if not available):
Verify pnpm version:
Installation
Troubleshooting Package Manager Issues
If you see package manager errors:
Ensure Corepack is enabled:
corepack enable
Clear npm cache:
npm cache clean --force
Use pnpm directly instead of npm/yarn
Check that
.npmrc
file exists in the project root
📋 Features
Country Information: Get comprehensive data about Colombia
Clean Architecture: Modular, testable, and maintainable code
Type Safety: Full TypeScript support
Error Handling: Graceful error management
Environment Configuration: Flexible configuration management
Scalable Design: Easy to extend with new tools
🔧 Technologies Used
TypeScript: Type-safe JavaScript
MCP SDK: Model Context Protocol server development
Zod: Schema validation
Node.js: Runtime environment
🎯 Benefits of This Architecture
🔄 Scalability: Easy to add new tools and features
📝 Maintainability: Clear separation of concerns
🧪 Testability: Each layer can be tested independently
📋 Type Safety: Full TypeScript coverage
🚀 Consistency: Centralized configuration and constants
🔧 Flexibility: Environment-based configuration
📖 Readability: Clean, well-organized code structure
This architecture ensures your MCP server is ready for production use and can grow with your needs!
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Provides comprehensive information about Colombia including departments, regions, cities, tourist attractions, and general country data through the API Colombia service. Enables users to query Colombian geographical and administrative information through natural language.