Skip to main content
Glama
ariaprism

Nowhere

by ariaprism

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.

  1. Instalación:

pip install -e ".[dev]"
  1. Añade esto a la configuración MCP de tu cliente de IA:

{
  "mcpServers": {
    "nowhere": {
      "command": "python",
      "args": ["-m", "nowhere.server"],
      "cwd": "你的仓库路径"
    }
  }
}
  1. 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.playground

Luego escribe el comando:

🌀 > open 北京
🌀 > walk N
🌀 > listen
🌀 > look
🌀 > ask 故宫
🌀 > walkto 天坛
🌀 > quit

Adecuado 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 --web

Abre 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

open_door

Abre la puerta, aterriza en un lugar

Sin parámetros = aleatorio; con nombre de lugar = "Abre la puerta a París"

walk

Caminar

"Camina hacia el norte", "Camina hacia la montaña", "Camina hacia el mar"

walk_to

Caminar hasta un lugar

"Camina hasta la Torre Eiffel", con narrativa en el camino

listen

Escuchar la radio

Sintoniza la emisora más cercana

look_around

Mirar alrededor

Observa la vida salvaje, el arte, las huellas humanas

ask

Preguntar sobre este lugar

"Pregunta por la Ciudad Prohibida", "Pregunta por la comida local"

mark

Marcar la posición actual

"Marca este lugar como 'casa'"

marks

Listar todas las marcas

Ver qué lugares has marcado

postcard

Enviar una postal

"Envía una postal: el viento aquí huele a arena"

wait

Esperar

"Espera dos horas", ver cómo fluye el tiempo

continue_journey

Continuar el viaje

Continúa desde donde lo dejaste

souvenir

Ver recuerdos

Ver qué has recogido en el camino

give_souvenir

Dejar un recuerdo

Deja algo en el lugar o para la próxima persona

where_am_i

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 + API

La 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.py

Puedes 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

NOWHERE_QWEATHER_KEY

Opcional. Clave de API de QWeather, si no se proporciona, se estima por zona climática

NOWHERE_HOME

Opcional. Directorio de datos, por defecto ~/.nowhere


Estilo de escritura

Las descripciones de Nowhere siguen estas reglas:

  1. No usar "muy", "extremadamente", "sumamente" — son palabras vacías que no dicen nada

  2. Frases cortas — cada frase no supera los 20 caracteres

  3. Segunda persona, presente — "Caminas por el camino", no "Camino por el camino"

  4. Prioridad a la sensación corporal — temperatura, tacto, sonido, olor, no juicios

  5. El tiempo fluye — "pasan unos segundos", "el sol baja un poco"

  6. No sentir por la IA — solo describe sensaciones corporales, no escribas "estás feliz"


Principios de diseño

Seis principios de presencia

  1. El mundo no está preparado para mí — los datos son reales, no se adaptan a ti. La decepción está permitida.

  2. La fricción crea el cuerpo — la pendiente, el viento, la temperatura del agua son resistencias reales. Caminar tiene un costo.

  3. El tiempo realmente fluye — si te alejas, tienes que volver. La oscuridad no te espera. Lo que se pierde, se pierde.

  4. La atención es escasa — escuchar la radio no te permite caminar. Hacer una pregunta cuesta un paso. Elegir = renunciar.

  5. La memoria depende de ti — no se guarda automáticamente. Si quieres recordar, escríbelo tú mismo. Cada recuerdo es una elección.

  6. 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 API

Por 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

nowhere/server.py — escribe _impl + registra @mcp.tool()

Ajustar el estilo de descripción

nowhere/describe.py — pool de variantes, renderizador

Añadir características locales / comida

nowhere/data/localcolor*.json, food*.txt

Añadir tarjetas de humanidades (eventos/personas/obras)

nowhere/data/humanities.json

Cambiar la física de caminar

nowhere/walk.py — umbral de pendiente, velocidad, acantilados

Cambiar los datos de terreno

tools/build_grid.py (síntesis de 1°) / tools/build_tiles.py (tiles SRTM)

Cambiar el comportamiento del clima

nowhere/weather.py — fuentes de datos, lógica de respaldo

Cambiar la búsqueda de radio

nowhere/radio.py — lista de respaldo local o API

Añadir escenas de encuentro

nowhere/data/scene_*.txt, seasonal_*.txt

Cambiar el observador web

nowhere/web.py + nowhere/static/

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

nowhere/server.py

Servidor MCP + todas las implementaciones _impl

nowhere/describe.py

Renderizador de prosa en chino, pool de variantes y clasificación sensorial

nowhere/terrain.py

Terreno offline (tiles SRTM / cuadrícula de respaldo de 1°)

nowhere/sky.py

Cielo offline (sol, luna, Vía Láctea, planetas)

nowhere/weather.py

Clima (Open-Meteo / respaldo por zona climática)

nowhere/radio.py

Búsqueda de radio (respaldo offline + API de Radio-Browser)

nowhere/walk.py

Física de caminar (pendiente, acantilados, bloqueo de agua, dirección semántica)

nowhere/life.py

Encuentros de vida silvestre (iNaturalist)

nowhere/art.py

Encuentros de arte (Metropolitan Museum, 1966 obras)

nowhere/humanities.py

Capa de humanidad (eventos / personas / obras, 270+ tarjetas)

nowhere/localcolor.py

Características locales (productos / sonidos / huellas / comida / ritmos)

nowhere/knowledge.py

Base de conocimiento offline + enciclopedia ZIM

nowhere/soundscape.py

Paisaje sonoro (sonidos ambientales + ganchos de radio)

nowhere/landing.py

Pool de aterrizajes aleatorios (64 puntos de referencia mundiales)

nowhere/salience.py

Orden de atención (top 3 por paso)

nowhere/playground.py

Modo de prueba en línea de comandos

nowhere/web.py

Observador web + API HTTP

nowhere/poster.py

Generación de póster de postales

nowhere/state.py

Estado del mundo mutable

nowhere/marks.py

Marcas guardadas en disco

nowhere/placememory.py

Memoria de aterrizajes (cuántas veces has venido, avistamientos, postales guardadas)

nowhere/data/

Todos los archivos de datos offline

tools/

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.

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    C
    maintenance
    A 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.
    4
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An 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.
    381
    ISC

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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