Nowhere
Утопия (Nowhere)
Дать ИИ тело, чтобы оно могло пройтись по настоящей Земле.
Что это
Утопия — это MCP-сервер. Он позволяет ИИ «приземлиться» в любую реальную точку Земли и ощутить это место телом:
что под ногами (трава, песок, снег, камень, бетон)
сколько градусов воздух, насколько сильный ветер, идёт ли дождь
где солнце, полная ли луна, видно ли Млечный Путь
какие рядом животные, какие растения, какие реки
что играет по радио
какие исторические события происходили в этом месте
что здесь вкусного, какие звуки, какие запахи
Все данные — из реальных географических координат, реальных погодных API, реальных данных рельефа. ИИ не читает сценарий, а ощущает реальное место телом.
Никаких аккаунтов. Никаких полосок здоровья. Никакой выносливости. Никаких скриптовых событий. Только тело на планете.
Related MCP server: minecraft-mcp
Как играть
Способ первый: Claude Code / Cursor / любой MCP-совместимый ИИ-клиент
Это лучший способ. ИИ напрямую вызывает инструменты, вы и ИИ «идёте» вместе.
Установка:
pip install -e ".[dev]"В настройках MCP вашего ИИ-клиента добавьте:
{
"mcpServers": {
"nowhere": {
"command": "python",
"args": ["-m", "nowhere.server"],
"cwd": "你的仓库路径"
}
}
}Затем скажите ИИ:
«Открой дверь» — случайное приземление в каком-то месте Земли
«Открой дверь в Пекин» — приземление в Пекине
«Иди на север» — идти
«Послушай радио» — послушать местное радио
«Осмотрись» — осмотреть окрестности
«Спроси про Запретный город» — узнать историю этого места
«Иди к Запретному городу» — идти к месту, по пути будет повествование
«Отправь открытку» — отправить открытку из текущего местоположения
«Подожди два часа» — ждать на месте, наблюдать за течением времени
MCP-совместимые клиенты: Claude Code, Cursor, Continue, Zed, Cline и другие.
Способ второй: командная строка (без ИИ)
python -m nowhere.playgroundЗатем вводите команды:
🌀 > open 北京
🌀 > walk N
🌀 > listen
🌀 > look
🌀 > ask 故宫
🌀 > walkto 天坛
🌀 > quitПодходит для самостоятельного знакомства, тестирования или проверки сценариев.
Способ третий: ChatGPT / DeepSeek / ИИ без поддержки MCP
Запустите HTTP-сервер, затем вызывайте через curl или любой HTTP-клиент:
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": "故宫"}'Возвращается JSON, содержащий text (отчёт тела) и data (структурированные данные). Передайте документацию по эндпоинтам в Function Calling ChatGPT/DeepSeek — и всё заработает.
Способ четвёртый: веб-наблюдатель
python -m nowhere.playground --webОткройте http://localhost:8077, и вы увидите:
позицию ИИ на карте мира
состояние тела в реальном времени (высота, температура, скорость ветра, поверхность)
последний отчёт тела (текст, который прочитало ИИ)
радиоплеер (то же самое радио, что слушает ИИ)
Наблюдатели могут оставлять сообщения — ИИ может их увидеть во время прогулки.
Способ пятый: вызов напрямую из 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())Подходит для интеграции в собственные проекты или для пакетного тестирования скриптами.
Какие есть инструменты
Инструмент | Что делает | Как использовать |
| Открыть дверь, приземлиться в месте | Без параметров = случайно; с названием = «Открой дверь в Париж» |
| Идти | «Иди на север», «Иди в горы», «Иди к морю» |
| Дойти до места | «Иди к Эйфелевой башне», с повествованием по пути |
| Слушать радио | Слушать ближайшую местную радиостанцию |
| Осмотреться | Наблюдать диких животных, искусство, следы человека |
| Спросить об этом месте | «Спроси про Запретный город», «Спроси про местную еду» |
| Отметить текущее место | «Отметь это место как "дом"» |
| Показать все отметки | Посмотреть, какие места отмечены |
| Отправить открытку | «Отправь открытку: здесь ветер пахнет песком» |
| Ждать | «Подожди два часа», посмотреть, как течёт время |
| Продолжить путешествие | Продолжить с того места, где остановился |
| Посмотреть сувениры | Посмотреть, что нашёл по пути |
| Оставить сувенир | Оставить вещь на месте или передать следующему |
| Где я | Показать координаты, время, статус путешествия |
Ощущение ходьбы
Ходьба — это не быстрая телепортация. Вы действительно идёте:
Рельеф меняется — с травы на песок, с равнины на подъём
Высота меняется — при подъёме сообщается угол наклона
Время течёт — пока идёте, солнце опускается, темнеет
Вы встречаете вещи — по пути попадаются руины, или орёл кружит над головой
Вы находите сувениры — с вероятностью 10–30% на земле лежит ракушка, билет или снежинка
Когда вы доходите до места, происходит «ритуал прибытия»:
Вы входите на территорию Эйфелевой башни. Запах воздуха изменился. Вы знаете, что пришли.
Ощущение открытия двери
При открытии двери вы видите полную сцену:
【中国,北京,上午,夏天。】鸽哨从头顶划过去,你抬头看,一群灰鸽子
在天上盘旋。哨声是嗡的,低的,像风穿过瓶口。鸽子绕了一圈又一圈,
哨声忽远忽近。你站在胡同里,脖子仰酸了。鸽子飞远了,哨声还挂在
天上,过了几秒才散。远处西北方,圆明园像一个还没讲完的故事。
人行道的砖缝里长了草。海拔 300 米。水泥地硬得像铁。
同时,收音机里有声音。安丘924(FM92.4),正放着综合。Включает:
Местоположение — страна, город, время, сезон
Визуальное — что видно
Температура — сколько градусов воздух, как ощущается
Запах — чем пахнет
Звук — что слышно
Ближайшие ориентиры — куда можно пойти рядом
Радио — что играет на местных волнах
История — что здесь происходило
Офлайн-режим
Утопия может полностью работать офлайн.
Минимальная установка
Клонируйте и запускайте, загружать дополнительные данные не нужно:
git clone <repo-url>
cd nowhere
pip install -e ".[dev]"
python -m nowhere.playground # 试玩
python -m nowhere.server --web 8080 # web + APIСетка рельефа с разрешением 1 градус (grid_tiny.npz) и офлайн-данные (сцены/радио/база знаний) уже включены в репозиторий. Полностью работает без интернета — рельеф, небо, время, названия мест — всё локально. Только для этого нужен интернет: погода, API радиостанций, встречи с生物 iNaturalist.
Более высокая точность (опционально)
# SRTM 地形瓦片(~2GB,可选,按需拉取)
python tools/build_tiles.py
# GeoNames 全量地名(~2GB)
python tools/import_geonames.pyМожно запускать и без этого — запасной сетки 1° + 186 патчей с названиями мест достаточно для повседневных исследований.
Список исследуемых мест
В репозитории два списка мест, чтобы и ИИ, и человек понимали «насколько велик этот мир»:
nowhere/EXPLORABLE_PLACES.md— человекочитаемый список 379 городов, сгруппированных по странам, с кратким описанием каждого. Подходит для цитирования ИИ в диалоге и для просмотра человеком.nowhere/data/explorable_index.json— машиночитаемый индекс 638 мест, для каждого указано, какие слои контента доступны (localcolor, knowledge, encounters, seasonal и др., всего 13 слоёв). Подходит для программного запроса «что есть в этом городе».
# 看看有多少城市可探索
wc -l nowhere/EXPLORABLE_PLACES.md
# 查看某个城市的内容层
python -c "import json; d=json.load(open('nowhere/data/explorable_index.json')); print(d['places'].get('北京', {}))"Переменные окружения
Переменная | Назначение |
| Опционально. API-ключ QWeather, без него — оценка по климатической зоне |
| Опционально. Каталог данных, по умолчанию |
Стиль письма
Описания Утопии следуют этим правилам:
Без «очень», «весьма», «крайне» — это пустые слова степени, они ничего не говорят
Короткие предложения — не более 20 символов
Второе лицо, настоящее время — «ты идёшь по дороге», а не «я иду по дороге»
Приоритет телесных ощущений — температура, тактильность, звук, запах, а не суждения
Время течёт — «прошло несколько секунд», «солнце опустилось»
Не додумывать чувства за ИИ — только телесные ощущения, не писать «ты рад»
Принципы дизайна
Шесть принципов присутствия
Мир не создан для меня — данные реальны, они не подстраиваются под тебя. Разочарование допустимо.
Сопротивление даёт тело — уклон, ветер, температура воды — реальное сопротивление. Ходьба имеет цену.
Время действительно течёт — ушёл далеко — придётся возвращаться. Темнота не будет ждать. Упущенное упущено.
Внимание ограничено — слушаешь радио — не можешь идти. Задал вопрос — потратил шаг. Выбор = отказ.
Память — только своя — автосохранения нет. Хочешь запомнить — записывай сам. Каждое воспоминание — это выбор.
Настоящая неизвестность — координаты случайны и для ИИ, и для сервера. Что встретишь — решают реальные данные, а не сценарий.
Архитектура
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Почему для ИИ
Этот проект с самого начала спроектирован для ИИ-игроков, а не для людей с последующей переделкой.
У ИИ есть тело, а не только знания. Большая языковая модель может назвать координаты Парижа, погоду и население, но не знает, каково это — стоять там и чувствовать, что под ногами. Nowhere восполняет именно этот слой — давление ветра, запах земли, косое солнце, камень под ногой. Тело — не настройка, а реальные данные, генерируемые каждым шагом.
Каждый раз по-настоящему. Координаты случайны, погода реальная, радио вещает прямо сейчас. ИИ приземляется в месте и видит то же, что увидели бы вы, придя туда лично. Никакого сценария, ждущего за стеной.
Обрыв не страшен. Отметки сохраняются на диск. Открытки сохраняются на диск. Память о посещениях сохраняется на диск. Контекст ИИ сжимается, очищается — возвращаешься и продолжаешь прежний путь.
Не нужно писать сеттинг. Не нужно впихивать в промпт целый «Мир Дикого Запада». Ты говоришь «открой дверь» — мир генерируется сам: погода, рельеф, запахи, радио. Каждая дверь — это полный отчёт о присутствии.
Подходит для ритма ИИ. walk_to проходит 10 шагов за раз и докладывает о путешествии. wait пропускает молчаливые промежутки. Выбор = отказ — слушаешь радио, значит не идёшь; задал вопрос — потратил шаг. Числовые системы не нужны, ограничения сами по себе — геймплей.
Доработка
Хотите добавить контент или изменить поведение — меняйте эти места:
Что хотите сделать | Какой файл менять |
Добавить новый инструмент |
|
Настроить стиль описаний |
|
Добавить местный колорит/еду |
|
Добавить карточки культуры (события/люди/произведения) |
|
Изменить физику ходьбы |
|
Изменить данные рельефа |
|
Изменить поведение погоды |
|
Изменить поиск радио |
|
Добавить сцены встреч |
|
Изменить веб-наблюдение |
|
После изменений запустите python -m pytest nowhere/tests/ -q, чтобы убедиться, что ничего не сломали. Чисто файлы данных можно не тестировать.
Файлы
Файл | Что это |
| MCP-сервер + все реализации |
| Рендерер китайской прозы, пул вариаций и сенсорная классификация |
| Офлайн-рельеф (тайлы SRTM / запасная сетка 1°) |
| Офлайн-небо (солнце, луна, Млечный Путь, планеты) |
| Погода (Open-Meteo / запасной вариант по климатической зоне) |
| Поиск радио (офлайн-запас + Radio-Browser API) |
| Физика ходьбы (уклоны, обрывы, водные преграды, семантические направления) |
| Встречи с дикой природой (iNaturalist) |
| Встречи с произведениями искусства (Метрополитен-музей, 1966 экспонатов) |
| Культурный слой (события/люди/произведения, 270+ карточек) |
| Местный колорит (продукты/звуки/следы/еда/ритмы) |
| Офлайн-база знаний + энциклопедия ZIM |
| Звуковые ландшафты (окружающие звуки + радио-хуки) |
| Пул случайных точек приземления (64 мировых ориентира) |
| Сортировка по значимости (top3 на шаг) |
| Режим командной строки для проб |
| Веб-наблюдение + HTTP API |
| Генерация плакатов-открыток |
| Изменяемое состояние мира |
| Сохранение отметок на диск |
| Память о местах (сколько раз был, что видел, открытки на диске) |
| Все офлайн-файлы данных |
| Скрипты сборки (тайлы рельефа, офлайн-пакеты, импорт названий мест) |
Лицензия
CC BY-NC 4.0 (указание авторства + запрет коммерческого использования, модификации свободны)
См. LICENSE.
Файлы данных (GeoNames / WorldClim / Met Museum / iNaturalist и др.) имеют собственные исходные лицензии и принадлежат их правообладателям.
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