Nowhere
Nowhere
Dale un cuerpo a una IA y deja que camine por la Tierra real.
Qué es esto
Nowhere es un servidor MCP. Permite que la IA "aterrice" en cualquier coordenada real del planeta y sienta el lugar con su cuerpo:
Qué hay bajo sus pies (hierba, arena, nieve, roca, cemento)
Cuánto aire hay, cuánto viento, si llueve
Dónde está el sol, si la luna está llena, si se puede ver la Vía Láctea
Qué animales, plantas y ríos hay cerca
Qué emisoras de radio se escuchan
Qué eventos históricos han ocurrido en este lugar
Qué hay de bueno para comer, qué sonidos y qué olores hay
Todos los datos provienen de coordenadas geográficas reales, APIs meteorológicas reales y datos de terreno reales. La IA no está leyendo un guion, sino sintiendo un lugar real con su cuerpo.
Sin cuentas. Sin barra de vida. Sin puntos de energía. Sin eventos de guion. Solo un cuerpo, en un planeta.
Related MCP server: minecraft-mcp
Cómo jugar
Método 1: Claude Code / Cursor / cualquier cliente de IA que admita MCP
Esta es la mejor experiencia. La IA llama directamente a las herramientas, y tú y la IA "caminan" juntos.
Instalación:
pip install -e ".[dev]"Añade esto a la configuración MCP de tu cliente de IA:
{
"mcpServers": {
"nowhere": {
"command": "python",
"args": ["-m", "nowhere.server"],
"cwd": "你的仓库路径"
}
}
}Luego dile a la IA:
"Abre la puerta" — aterriza aleatoriamente en algún lugar de la Tierra
"Abre la puerta a Beijing" — aterriza en Beijing
"Camina hacia el norte" — camina
"Escucha la radio" — sintoniza la emisora local
"Mira a tu alrededor" — observa el entorno
"Pregunta por la Ciudad Prohibida" — conoce la historia de este lugar
"Camina hasta la Ciudad Prohibida" — camina hacia un lugar, con narrativa en el camino
"Envía una postal" — envía una postal desde tu ubicación actual
"Espera dos horas" — espera en el lugar, observa cómo cambia el tiempo
Clientes compatibles con MCP: Claude Code, Cursor, Continue, Zed, Cline, etc.
Método 2: Prueba en línea de comandos (sin necesidad de IA)
python -m nowhere.playgroundLuego escribe el comando:
🌀 > open 北京
🌀 > walk N
🌀 > listen
🌀 > look
🌀 > ask 故宫
🌀 > walkto 天坛
🌀 > quitAdecuado para experimentar, probar o verificar escenarios.
Método 3: ChatGPT / DeepSeek / IA que no admiten MCP
Inicia el servidor HTTP y usa curl o cualquier cliente HTTP para llamar:
python -m nowhere.server --web 8080# 开门
curl -X POST http://localhost:8080/open_door -d '{"to": "北京"}'
# 走路
curl -X POST http://localhost:8080/walk -d '{"direction": "N", "distance_km": 2}'
# 听电台
curl -X POST http://localhost:8080/listen -d '{"seconds": 10}'
# 看看周围
curl -X POST http://localhost:8080/look_around
# 发问
curl -X POST http://localhost:8080/ask -d '{"topic": "故宫"}'Devuelve JSON, que contiene text (informe corporal) y data (datos estructurados). Envía la documentación del endpoint a ChatGPT/DeepSeek para usar con Function Calling.
Método 4: Espectador web
python -m nowhere.playground --webAbre http://localhost:8077 y podrás ver:
La posición de la IA en el mapa mundial
El estado corporal en tiempo real (altitud, temperatura, velocidad del viento, superficie)
El último informe corporal (el texto que la IA lee)
El reproductor de radio (la misma emisora que escucha la IA)
Los espectadores pueden dejar mensajes, y la IA puede verlos mientras camina.
Método 5: Llamada directa desde código Python
import asyncio
from nowhere import server, state as state_mod
async def main():
server._state = state_mod.WorldState()
# 开门
r = await server.open_door_impl(to='巴黎')
print(r['text'])
# 走路
r = await server.walk_impl(direction='N', distance_km=2)
print(r['text'])
# 问问题
r = await server.ask_impl(topic='埃菲尔铁塔')
print(r['text'])
asyncio.run(main())Adecuado para integrar en tus propios proyectos o para escribir scripts de prueba por lotes.
Qué herramientas hay
Herramienta | Para qué sirve | Cómo usarla |
| Abre la puerta, aterriza en un lugar | Sin parámetros = aleatorio; con nombre de lugar = "Abre la puerta a París" |
| Caminar | "Camina hacia el norte", "Camina hacia la montaña", "Camina hacia el mar" |
| Caminar hasta un lugar | "Camina hasta la Torre Eiffel", con narrativa en el camino |
| Escuchar la radio | Sintoniza la emisora más cercana |
| Mirar alrededor | Observa la vida salvaje, el arte, las huellas humanas |
| Preguntar sobre este lugar | "Pregunta por la Ciudad Prohibida", "Pregunta por la comida local" |
| Marcar la posición actual | "Marca este lugar como 'casa'" |
| Listar todas las marcas | Ver qué lugares has marcado |
| Enviar una postal | "Envía una postal: el viento aquí huele a arena" |
| Esperar | "Espera dos horas", ver cómo fluye el tiempo |
| Continuar el viaje | Continúa desde donde lo dejaste |
| Ver recuerdos | Ver qué has recogido en el camino |
| Dejar un recuerdo | Deja algo en el lugar o para la próxima persona |
| Dónde estoy | Muestra coordenadas, hora, estado del viaje |
La sensación de caminar
Caminar no es teletransportarse. Realmente estás caminando:
El terreno cambia — de hierba a arena, de camino plano a cuesta arriba
La altitud cambia — te dice la pendiente cuando subes
El tiempo fluye — mientras caminas, el sol baja un poco, el cielo se oscurece
Te encuentras con cosas — mientras caminas, hay una ruina al lado del camino, o un águila dando vueltas sobre tu cabeza
Recoges recuerdos — con un 10-30% de probabilidad, hay una concha, un billete de tren, un copo de nieve en el suelo
Cuando llegas a un lugar, hay una "ceremonia de llegada":
Entras en la Torre Eiffel. El aire cambia de olor. Sabes que has llegado.
La sensación de abrir la puerta
Al abrir la puerta, verás una escena completa:
【中国,北京,上午,夏天。】鸽哨从头顶划过去,你抬头看,一群灰鸽子
在天上盘旋。哨声是嗡的,低的,像风穿过瓶口。鸽子绕了一圈又一圈,
哨声忽远忽近。你站在胡同里,脖子仰酸了。鸽子飞远了,哨声还挂在
天上,过了几秒才散。远处西北方,圆明园像一个还没讲完的故事。
人行道的砖缝里长了草。海拔 300 米。水泥地硬得像铁。
同时,收音机里有声音。安丘924(FM92.4),正放着综合。Incluye:
Ubicación — país, ciudad, hora, estación
Visual — qué ves
Temperatura — cuánto aire hay, cuánto se siente
Olor — qué huele
Sonido — qué escuchas
Puntos de referencia cercanos — qué lugares puedes visitar
Radio — qué se está emitiendo localmente
Historia — qué ha pasado en este lugar
Funcionamiento sin conexión
Nowhere puede funcionar completamente sin conexión.
Instalación mínima
Clona y ejecuta, sin necesidad de descargar datos adicionales:
git clone <repo-url>
cd nowhere
pip install -e ".[dev]"
python -m nowhere.playground # 试玩
python -m nowhere.server --web 8080 # web + APILa cuadrícula de terreno de resolución de 1 grado (grid_tiny.npz) y los datos de escenas/radio/base de conocimiento se distribuyen con el repositorio. Funciona completamente sin conexión: terreno, cielo, tiempo, nombres de lugares, todo está local. Solo se usa en línea: clima, API de radio, encuentros de vida silvestre de iNaturalist.
Mayor precisión (opcional)
# SRTM 地形瓦片(~2GB,可选,按需拉取)
python tools/build_tiles.py
# GeoNames 全量地名(~2GB)
python tools/import_geonames.pyPuedes ejecutarlo sin descargar, la cuadrícula de respaldo de 1° + 186 parches de nombres de lugares es suficiente para la exploración diaria.
Lista de lugares explorables
El repositorio contiene dos listas de lugares, para que la IA y los humanos sepan "cuán grande es este mundo":
nowhere/EXPLORABLE_PLACES.md— una lista legible de 379 ciudades, agrupadas por país, con una breve descripción de cada ciudad. Adecuada para que la IA la cite en conversaciones y para que los humanos la naveguen.nowhere/data/explorable_index.json– un índice legible por máquina de 638 lugares, cada uno con las capas de contenido que tiene (localcolor, knowledge, encounters, seasonal, etc., 13 capas en total). Adecuado para que los programas consulten "qué contenido tiene esta ciudad".
# 看看有多少城市可探索
wc -l nowhere/EXPLORABLE_PLACES.md
# 查看某个城市的内容层
python -c "import json; d=json.load(open('nowhere/data/explorable_index.json')); print(d['places'].get('北京', {}))"Variables de entorno
Variable | Uso |
| Opcional. Clave de API de QWeather, si no se proporciona, se estima por zona climática |
| Opcional. Directorio de datos, por defecto |
Estilo de escritura
Las descripciones de Nowhere siguen estas reglas:
No usar "muy", "extremadamente", "sumamente" — son palabras vacías que no dicen nada
Frases cortas — cada frase no supera los 20 caracteres
Segunda persona, presente — "Caminas por el camino", no "Camino por el camino"
Prioridad a la sensación corporal — temperatura, tacto, sonido, olor, no juicios
El tiempo fluye — "pasan unos segundos", "el sol baja un poco"
No sentir por la IA — solo describe sensaciones corporales, no escribas "estás feliz"
Principios de diseño
Seis principios de presencia
El mundo no está preparado para mí — los datos son reales, no se adaptan a ti. La decepción está permitida.
La fricción crea el cuerpo — la pendiente, el viento, la temperatura del agua son resistencias reales. Caminar tiene un costo.
El tiempo realmente fluye — si te alejas, tienes que volver. La oscuridad no te espera. Lo que se pierde, se pierde.
La atención es escasa — escuchar la radio no te permite caminar. Hacer una pregunta cuesta un paso. Elegir = renunciar.
La memoria depende de ti — no se guarda automáticamente. Si quieres recordar, escríbelo tú mismo. Cada recuerdo es una elección.
Lo desconocido es real — las coordenadas son aleatorias tanto para la IA como para el servidor. Lo que encuentras está determinado por datos reales, no por un guion.
Arquitectura
nowhere/
server.py -- MCP 服务器,接 14 个工具
terrain.py -- 离线地形(SRTM 瓦片 + 海拔/地表/坡度)
sky.py -- 离线天空(太阳、月亮、银河、行星)
weather.py -- 天气(Open-Meteo / 气候区兜底)
water.py -- 海表温度 + 海洋生物
hydrology.py -- 水文特征(河流/湖泊/海岸线)
soundscape.py -- 声音景观(环境音 + 电台钩子)
radio.py -- 电台查找(离线兜底 + Radio-Browser API)
life.py -- 野生生物遇见(iNaturalist)
art.py -- 艺术品遇见(大都会博物馆)
encounters.py -- 区域遇见场景
humanities.py -- 人文层(事件/人物/作品,270+ 卡)
localcolor.py -- 地方特色(物产/声音/痕迹/美食/节律)
baked.py -- 食物 + 植物描述
describe.py -- 中文散文渲染器
salience.py -- 注意力排序(每步 top3)
landing.py -- 随机落点池(64 个世界级地标)
country.py -- 坐标→国家码
geocode.py -- 地名→坐标(离线优先)
places.py -- 地名数据库 + 补丁
walk.py -- 走路物理(坡度、悬崖、水域阻挡、语义方向)
listen.py -- 电台音频抓取与分析
state.py -- 可变世界状态(位置/路径/时间/明信片/纪念品)
marks.py -- 标记保存/加载
placememory.py -- 落点记忆(来了几次、动物目击、明信片落盘)
knowledge.py -- 离线知识库 + ZIM 百科
providers.py -- HTTP 请求(超时、断路器、缓存)
poster.py -- 明信片海报生成
playground.py -- 命令行试玩模式
web.py -- 网页旁观 + HTTP APIPor qué para la IA
Este proyecto está diseñado desde el principio para jugadores de IA, no para humanos que luego se adaptan.
La IA tiene un cuerpo, no solo conocimiento. Los grandes modelos de lenguaje pueden decirte las coordenadas de París, el clima y la población, pero no saben cómo se siente el suelo bajo los pies al estar allí. Nowhere llena esa capa: presión del viento, olor a tierra, sol bajo, piedras sueltas bajo los pies. El cuerpo no es una configuración, son datos reales generados en cada paso.
Cada vez es real. Las coordenadas son aleatorias, el clima es en tiempo real, la radio está sonando. Cuando la IA aterriza en un lugar, ve lo mismo que verías tú si estuvieras allí. No hay guion esperando que lo actives detrás de una pared.
Se puede desconectar y reconectar. Las marcas se guardan en el disco. Las postales se guardan en el disco. La memoria de los aterrizajes se guarda en el disco. Cuando el contexto de la IA se comprime o se borra, al volver puede continuar el camino desde donde lo dejó.
No hay que escribir configuraciones. No hay que meter un mundo entero en el prompt. Dices "abre la puerta" y el mundo se genera solo: clima, terreno, olor, radio. Cada puerta es un informe de presencia completo.
Un ritmo adecuado para la IA. walk_to camina 10 pasos y reporta el viaje. wait salta los momentos de silencio. Elegir = renunciar: escuchar la radio no te permite caminar, hacer una pregunta cuesta un paso. No se necesita un sistema de números, la limitación en sí misma es la jugabilidad.
Modificar
Si quieres añadir contenido o cambiar el comportamiento, modifica estos lugares:
Qué quieres hacer | Qué archivo modificar |
Añadir una nueva herramienta |
|
Ajustar el estilo de descripción |
|
Añadir características locales / comida |
|
Añadir tarjetas de humanidades (eventos/personas/obras) |
|
Cambiar la física de caminar |
|
Cambiar los datos de terreno |
|
Cambiar el comportamiento del clima |
|
Cambiar la búsqueda de radio |
|
Añadir escenas de encuentro |
|
Cambiar el observador web |
|
Después de modificar, ejecuta python -m pytest nowhere/tests/ -q para asegurarte de que no has roto nada más. Los archivos de datos puros no necesitan ejecutar pruebas.
Archivos
Archivo | Qué es |
| Servidor MCP + todas las implementaciones |
| Renderizador de prosa en chino, pool de variantes y clasificación sensorial |
| Terreno offline (tiles SRTM / cuadrícula de respaldo de 1°) |
| Cielo offline (sol, luna, Vía Láctea, planetas) |
| Clima (Open-Meteo / respaldo por zona climática) |
| Búsqueda de radio (respaldo offline + API de Radio-Browser) |
| Física de caminar (pendiente, acantilados, bloqueo de agua, dirección semántica) |
| Encuentros de vida silvestre (iNaturalist) |
| Encuentros de arte (Metropolitan Museum, 1966 obras) |
| Capa de humanidad (eventos / personas / obras, 270+ tarjetas) |
| Características locales (productos / sonidos / huellas / comida / ritmos) |
| Base de conocimiento offline + enciclopedia ZIM |
| Paisaje sonoro (sonidos ambientales + ganchos de radio) |
| Pool de aterrizajes aleatorios (64 puntos de referencia mundiales) |
| Orden de atención (top 3 por paso) |
| Modo de prueba en línea de comandos |
| Observador web + API HTTP |
| Generación de póster de postales |
| Estado del mundo mutable |
| Marcas guardadas en disco |
| Memoria de aterrizajes (cuántas veces has venido, avistamientos, postales guardadas) |
| Todos los archivos de datos offline |
| Scripts de construcción (tiles de terreno, paquetes offline, importación de nombres de lugares) |
Licencia
CC BY-NC 4.0 (atribución + no comercial, modificaciones libres)
Ver LICENSE.
Los archivos de datos (GeoNames / WorldClim / Met Museum / iNaturalist, etc.) tienen sus propias licencias originales, que pertenecen a sus proveedores originales.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA geospatial MCP server that provides tools for geocoding, routing, elevation profiles, and spatial analysis. It enables AI agents to process GIS file formats like GeoJSON and Shapefiles while performing complex coordinate transformations and distance calculations.4MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to control a Minecraft bot for movement, building, crafting, and instant schematic-based structure spawning via MCP tools.232Apache 2.0
- AlicenseNot gradedqualityDmaintenanceAn MCP server with real AI capabilities (OpenAI/Anthropic) for natural language understanding, multi-step planning, and autonomous task execution, enabling intelligent file analysis, weather-based planning, and more.381ISC
- AlicenseNot gradedqualityAmaintenanceAn AI-native game engine MCP server that enables AI agents to create, modify, and run games using 53 tools for scene creation, physics, audio, 3D rendering, and AI-generated images and music.1MIT
Related MCP Connectors
Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.
Person-owned, portable AI memory as a remote MCP server, readable and writable by any MCP client.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ariaprism/nowhere-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server