Geocoding Tool
Convierte nombres de ciudades y ubicaciones en coordenadas de latitud y longitud utilizando la API gratuita OpenStreetMap Nominatim. No se requiere clave API.
Documentación
Servidor MCP de Geocodificación
Un servidor de Protocolo de Contexto de Modelo (MCP) que proporciona coordenadas de latitud/longitud para ciudades y ubicaciones utilizando la API de OpenStreetMap Nominatim.
Características
- 🌍 Geocodificación Global: Obtén coordenadas para cualquier ubicación en todo el mundo
- 🆓 API Gratuita: Utiliza OpenStreetMap Nominatim (no se requiere clave API)
- Integración MCP: Funciona con Cursor, VS Code, Claude Desktop y otras herramientas compatibles con MCP
- 📦 Instalación Fácil: Instala vía PyPI con
uvx geocode-mcp-️ Herramientas Modernas: Construido con Python 3.12+, async/await y pruebas exhaustivas
Inicio Rápido
Instalación
Instala el paquete desde PyPI usando uvx (recomendado):
uvx geocode-mcp
O instala con pip:
pip install geocode-mcp
Configuración MCP
Añade a la configuración de tu cliente MCP:
{
"mcpServers": {
"geocoding": {
"command": "uvx",
"args": ["geocode-mcp"]
}
}
}
Consulta el directorio config/ para ver ejemplos específicos para diferentes herramientas.
Herramientas Disponibles
mcp_geocoding_get_coordinates
Obtén coordenadas de latitud y longitud para una ciudad o ubicación.
Parámetros:
location(obligatorio): Nombre de ciudad, dirección o ubicación (ej., "Nueva York", "París, Francia", "123 Calle Principal, Seattle")limit(opcional): Número máximo de resultados a devolver (predeterminado: 1, máximo: 10)
Ejemplo de Uso:
Get coordinates for Tokyo, Japan
Find the latitude and longitude of London, UK
What are the coordinates for New York City?
Get coordinates for "1600 Pennsylvania Avenue, Washington DC" with limit 5
Formato de Respuesta:
{
"query": "Tokyo, Japan",
"results_count": 1,
"coordinates": [
{
"latitude": 35.6762,
"longitude": 139.6503,
"display_name": "Tokyo, Japan",
"place_id": "282885117",
"type": "city",
"class": "place",
"importance": 0.9,
"bounding_box": {
"south": 35.619,
"north": 35.739,
"west": 139.619,
"east": 139.682
}
}
]
}
Guías de Integración
Cursor
Copia la configuración de config/cursor-mcp.json a la configuración MCP de tu Cursor.
VS Code
Copia la configuración de config/vscode-mcp.json a la configuración MCP de tu VS Code.
Claude Desktop
Copia la configuración de config/claude-desktop.json al archivo de configuración de tu Claude Desktop.
Consulta el README de configuración para instrucciones detalladas de instalación.
Desarrollo
Configuración
# Clone the repository
git clone https://github.com/X-McKay/geocode-mcp.git
cd geocode-mcp
# Install with development dependencies
pip install -e ".[dev]"
Ejecutar Pruebas
# Run all tests
pytest
# Run with coverage
pytest --cov=src/geocode_mcp --cov-report=html
# Run specific test files
pytest tests/test_geocoding.py -v
pytest tests/test_mcp_server.py -v
Calidad de Código
# Format code
ruff format
# Lint code
ruff check
# Run all checks
ruff check && ruff format --check
Desarrollo Local
Para desarrollo y pruebas locales, puedes ejecutar el servidor directamente:
python -m geocode_mcp.server
O usa la configuración de desarrollo en tu cliente MCP:
{
"mcpServers": {
"geocoding": {
"command": "python",
"args": ["-m", "geocode_mcp.server"],
"cwd": "/path/to/geocode-mcp",
"env": {
"PYTHONPATH": "/path/to/geocode-mcp/src"
}
}
}
}
Estructura del Proyecto
geocode-mcp/
├── src/geocode_mcp/ # Main source code
│ └── server.py # MCP server implementation
├── tests/ # Test suite
│ ├── test_geocoding.py # Geocoding functionality tests
│ ├── test_mcp_server.py # MCP server integration tests
│ ├── test_mcp.py # MCP protocol tests
│ └── test_vscode.py # VS Code integration tests
├── config/ # Configuration examples
│ ├── cursor-mcp.json # Cursor configuration
│ ├── vscode-mcp.json # VS Code configuration
│ ├── claude-desktop.json # Claude Desktop configuration
│ └── README.md # Configuration guide
├── docs/ # Documentation
├── pyproject.toml # Project configuration
├── requirements.txt # Production dependencies
├── requirements-dev.txt # Development dependencies
└── README.md # This file
Referencia de la API
Funciones Principales
async def geocode_location(location: str, limit: int = 1) -> dict[str, Any]:
"""
Geocode a location using OpenStreetMap Nominatim API.
Args:
location: The location to geocode
limit: Maximum number of results (1-10)
Returns:
Dictionary containing query, results_count, and coordinates
"""
Servidor MCP
El servidor implementa el Protocolo de Contexto de Modelo y proporciona la herramienta mcp_geocoding_get_coordinates para su uso en aplicaciones compatibles con MCP.
Contribuciones
- Haz un fork del repositorio
- Crea una rama de características (
git checkout -b feature/amazing-feature) - Realiza tus cambios
- Ejecuta las pruebas (
pytest) - Ejecuta el linting (
ruff check && ruff format) - Confirma tus cambios (
git commit -m 'Add amazing feature') - Sube a la rama (
git push origin feature/amazing-feature) - Abre una Solicitud de Extracción
Consulta CONTRIBUTING.md para más detalles.
Licencia
Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.
Agradecimientos
- OpenStreetMap por proporcionar el servicio gratuito de geocodificación Nominatim
- Protocolo de Contexto de Modelo por la especificación del protocolo
- El equipo del SDK MCP de Python por las excelentes herramientas haz lint
Formatea el código
haz format
Verificación de tipos
haz type-check
Ejecuta todas las verificaciones
haz check-all
### Testing
```bash
# Run all tests
make test
# Run with coverage
make test-cov
# Run specific test categories
pytest tests/test_geocoding.py -v # Geocoding tests
pytest tests/test_mcp.py -v # MCP server tests
python tests/test_mcp_server.py # Integration tests
python tests/test_vscode.py # VSCode tests
Instalación
# Install production dependencies
make install
# Install development dependencies
make install-dev
Configuración
Integración con Cursor
Consulta la Guía de Integración con Cursor para instrucciones detalladas de configuración.
Integración con VSCode
Ejecuta las pruebas de integración de VSCode:
python tests/test_vscode.py
Referencia de la API
Función de Geocodificación
async def geocode_location(location: str, limit: int = 1) -> dict[str, Any]:
"""Geocode a location using Nominatim API."""
Servidor MCP
El servidor proporciona la herramienta get_coordinates que se puede llamar mediante el protocolo MCP.
Contribuciones
- Haz un fork del repositorio
- Crea una rama de características
- Realiza tus cambios
- Ejecuta las pruebas:
make test - Ejecuta el linting:
make lint - Envía una solicitud de extracción
Consulta CONTRIBUTING.md para más detalles.
Licencia
Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.
Agradecimientos
- OpenStreetMap por proporcionar el servicio de geocodificación Nominatim
- MCP por la especificación del protocolo
---
## 🚀 Quick Setup Instructions
1. **Create Project Folder:**
```bash
mkdir mcp-geocoding-server-python
cd mcp-geocoding-server-python
-
Copia los Archivos: Copia cada sección de archivo de arriba en archivos con los nombres respectivos
-
Instala las Dependencias:
pip install -r requirements.txt -
Ejecuta el Servidor:
python geocoding_server.py -
Configura el Cliente MCP: Añade a la configuración de tu cliente MCP (como Claude Desktop):
{ "mcpServers": { "geocoding": { "command": "python", "args": ["/full/path/to/mcp-geocoding-server-python/geocoding_server.py"] } } }