Geocoding Tool
Converta nomes de cidades e localizações em coordenadas de latitude e longitude usando a API gratuita OpenStreetMap Nominatim. Nenhuma chave de API é necessária.
Documentação
Servidor MCP de Geocoding
Um servidor Model Context Protocol (MCP) que fornece coordenadas de latitude/longitude para cidades e locais usando a API OpenStreetMap Nominatim.
Recursos
- 🌍 Geocodificação Global: Obtenha coordenadas para qualquer local no mundo
- 🆓 API Gratuita: Usa OpenStreetMap Nominatim (nenhuma chave de API necessária)
- 🔌 Integração MCP: Funciona com Cursor, VS Code, Claude Desktop e outras ferramentas compatíveis com MCP
- 📦 Instalação Fácil: Instale via PyPI com
uvx geocode-mcp - ⚙️ Ferramentas Modernas: Construído com Python 3.12+, async/await e testes abrangentes
Início Rápido
Instalação
Instale o pacote do PyPI usando uvx (recomendado):
uvx geocode-mcp
Ou instale com pip:
pip install geocode-mcp
Configuração MCP
Adicione à configuração do seu cliente MCP:
{
"mcpServers": {
"geocoding": {
"command": "uvx",
"args": ["geocode-mcp"]
}
}
}
Consulte o diretório config/ para exemplos específicos de diferentes ferramentas.
Ferramentas Disponíveis
mcp_geocoding_get_coordinates
Obtenha coordenadas de latitude e longitude para uma cidade ou local.
Parâmetros:
location(obrigatório): Nome da cidade, endereço ou local (ex.: "Nova York", "Paris, França", "123 Main St, Seattle")limit(opcional): Número máximo de resultados a retornar (padrão: 1, máximo: 10)
Exemplo 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 Resposta:
{
"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
}
}
]
}
Guias de Integração
Cursor
Copie a configuração de config/cursor-mcp.json para as configurações MCP do seu Cursor.
VS Code
Copie a configuração de config/vscode-mcp.json para as configurações MCP do seu VS Code.
Claude Desktop
Copie a configuração de config/claude-desktop.json para o arquivo de configuração do seu Claude Desktop.
Consulte o README de configuração para instruções detalhadas de configuração.
Desenvolvimento
Configuração
# Clone the repository
git clone https://github.com/X-McKay/geocode-mcp.git
cd geocode-mcp
# Install with development dependencies
pip install -e ".[dev]"
Executando Testes
# 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
Qualidade de Código
# Format code
ruff format
# Lint code
ruff check
# Run all checks
ruff check && ruff format --check
Desenvolvimento Local
Para desenvolvimento e testes locais, você pode executar o servidor diretamente:
python -m geocode_mcp.server
Ou use a configuração de desenvolvimento no seu cliente MCP:
{
"mcpServers": {
"geocoding": {
"command": "python",
"args": ["-m", "geocode_mcp.server"],
"cwd": "/path/to/geocode-mcp",
"env": {
"PYTHONPATH": "/path/to/geocode-mcp/src"
}
}
}
}
Estrutura do Projeto
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
Referência da API
Funções Principais
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
O servidor implementa o Model Context Protocol e fornece a ferramenta mcp_geocoding_get_coordinates para uso em aplicativos compatíveis com MCP.
Contribuindo
- Faça um fork do repositório
- Crie um branch de recurso (
git checkout -b feature/amazing-feature) - Faça suas alterações
- Execute os testes (
pytest) - Execute o linting (
ruff check && ruff format) - Faça commit das suas alterações (
git commit -m 'Add amazing feature') - Envie para o branch (
git push origin feature/amazing-feature) - Abra um Pull Request
Consulte CONTRIBUTING.md para mais detalhes.
Licença
Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE para detalhes.
Agradecimentos
- OpenStreetMap por fornecer o serviço gratuito de geocodificação Nominatim
- Model Context Protocol pela especificação do protocolo
- A equipe do SDK Python MCP pelas excelentes ferramentas make lint
Formatar código
make format
Verificação de tipos
make type-check
Executar todas as verificações
make 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
Instalação
# Install production dependencies
make install
# Install development dependencies
make install-dev
Configuração
Integração com Cursor
Consulte o Guia de Integração com Cursor para instruções detalhadas de configuração.
Integração com VSCode
Execute os testes de integração do VSCode:
python tests/test_vscode.py
Referência da API
Função de Geocodificação
async def geocode_location(location: str, limit: int = 1) -> dict[str, Any]:
"""Geocode a location using Nominatim API."""
Servidor MCP
O servidor fornece a ferramenta get_coordinates que pode ser chamada via protocolo MCP.
Contribuindo
- Faça um fork do repositório
- Crie um branch de recurso
- Faça suas alterações
- Execute os testes:
make test - Execute o linting:
make lint - Envie um pull request
Consulte CONTRIBUTING.md para mais detalhes.
Licença
Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE para detalhes.
Agradecimentos
- OpenStreetMap por fornecer o serviço de geocodificação Nominatim
- MCP pela especificação do protocolo
---
## 🚀 Quick Setup Instructions
1. **Create Project Folder:**
```bash
mkdir mcp-geocoding-server-python
cd mcp-geocoding-server-python
-
Copie os Arquivos: Copie cada seção de arquivo acima para arquivos com os respectivos nomes
-
Instale as Dependências:
pip install -r requirements.txt -
Execute o Servidor:
python geocoding_server.py -
Configure o Cliente MCP: Adicione à configuração do seu cliente MCP (como Claude Desktop):
{ "mcpServers": { "geocoding": { "command": "python", "args": ["/full/path/to/mcp-geocoding-server-python/geocoding_server.py"] } } }