Nowhere
乌有乡 (Nowhere)
AI に身体を与え、実際の地球の上を歩かせる。
これは何か
乌有乡は MCP サーバーです。AI が地球上の実在するあらゆる座標に「着地」し、身体でその場所を感じられるようにするものです。
足元は何の地面か(草地、砂、雪、岩、コンクリート)
気温は何度か、風はどれくらいか、雨は降っているか
太陽はどこにあるか、月は満ちているか、天の川は見えるか
近くにはどんな動物・植物・川があるか
ラジオで流れている局は何か
この場所ではどんな歴史的な出来事があったか
その土地にはどんな食べ物・音・匂いがあるか
データはすべて実際の地理座標、実際の天気 API、実際の地形データに基づく。AI は台本を読んでいるわけではなく、身体で実際の場所を感じている。
アカウントもない。HPバーもない。スタミナもない。スクリプト・イベントもない。ただひとつの身体と、ひとつの惑星があるだけだ。
Related MCP server: minecraft-mcp
遊び方
方法1:Claude Code / Cursor / その他 MCP 対応 AI クライアント
これがいちばん体験が良い。AI が直接ツールを呼び出し、あなたと AI が一緒に「でく」。
インストール:
pip install -e ".[dev]"AI クライアントの MCP 設定に追加する:
{
"mcpServers": {
"nowhere": {
"command": "python",
"args": ["-m", "nowhere.server"],
"cwd": "你的仓库路径"
}
}
}そして AI に言う:
「扉を開けて」 — ランダムに地球上のどこかに降り立つ
「扉を開けて北京へ」 — 北京に落る
「北へ歩いて」 — 歩く
「ラジオを聞いて」 — その土地のラジオ局を聞く
「周りを見て」 — 周囲の観察
「故宮について聞いて」 — この場所の歴史を知る
「故宮まで歩いて」 — ある場所まで歩いて、途中経過もある
「ハガキを送って」 — 現在地からハガキを送る
「2時間待って」 — その場で待ち、時間の変化を見る
MCP 対応クライアント:Claude Code、Cursor、Continue、Zed、Cline など。
方法2:コマンドラインで試す(AI 不要)
python -m nowhere.playgroundそしてコマンドを入力:
🌀 > open 北京
🌀 > walk N
🌀 > listen
🌀 > look
🌀 > ask 故宫
🌀 > walkto 天坛
🌀 > quit自分の体験用、テスト用、シーンを書くときの検証に使える。
方法3:ChatGPT / DeepSeek / MCP 非対応の AI
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(構造化データ)。エンドポイントのドキュメントを ChatGPT / DeepSeek の Function Calling に渡せばそれで使える。
方法4:ウェブで観察する
python -m nowhere.playground --webhttp://localhost:8077 を開く。
世界地図上の AI の位置
リアルタイムの身体状態(標高・気温・風速・地表)
最新の身体レポート(AI が読み上げたテキスト)
ラジオのプレイヤー(AI と同じ局を聴いている)
観察者もメッセージを残せて、AI が歩いていれば見えることもある。
方式5: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())自分のプロジェクトに組み込んだり、スクリプトでまとめてテストするのに向いている。
ツール一覧
ツール | 何をするか | どう使うか |
| 扉を開いて、あるの駅に降り立つ | 引数なし=ランダム。地名を渡す=「扉を開く」 |
| 歩く | 「北へ歩いて」「山へ歩いて」「海へ歩いて」 |
| ある地点まで歩く | 「エアフィル塔まで歩いて」、途中のナレーションあり |
| ラジオを聞く | そこの近くのラジオ局を聞く |
| 周囲を見る | 野生の動物・芸術・人間の痕跡を観察 |
| この場所について聞く | 「故宮について聞いて」「ここのグルメを聞いて」 |
| 現在地をマークする | 「この稿を「家」としてマークする」 |
| 全マークを一覧 | マークした場所を見る |
| ハガキを送る | 「ハガキを送る:ここの風は砂の匂いがする」 |
| 待つ | 「2時間待つ」、時間の流れを見る |
| 旅を再開する | 前回の途切れたところから続ける |
| お土産を見る | 途中で拾ったものが何かを確認する |
| お土産を置く | その場に残す、または誰かに譲る |
| 今、どこ? | 座標・時刻・旅の状態を表示 |
歩く感じ
歩くのはワープではない。本当に歩いています。
地形は変わる — 草地から砂地へ、平らから上り坂へ
標高は変わる — 登では坂は何度かと教えてくれる
時間は流れる — 歩いているうちに太陽が低くなり、暗くなっていく
出会いがある — 歩いていると、道端に廃曇があったり、うえの空をクマタカが旋回していたり
お土産を拾う.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 + API1°度解像度の地形グリッド(grid_tiny.npz)と、シーン/ラジオ/知識データなどはオフラインデータがレポジトリに同梱されている。回線が断にあっても完動します。地形・空・時間・地名はすべてローカルにある。オンラインでだけ使うのは、天気・ラジオ API・iNaturalist の生物遭遇。
より高い精度(オプション)
# SRTM 地形瓦片(~2GB,可选,按需拉取)
python tools/build_tiles.py
# GeoNames 全量地名(~2GB)
python tools/import_geonames.pyダウンロードしなくても動き、1°のフォールバックグリッド+199の地名パッチで、日常の観光には十分。
探検できる場所リスト
リポジトリには場所のリストが2枚あり、AI と人間両方が「この世界の広さ」をを知るのに役立つ。
nowhere/EXPLORABLE_PLACES.md— 282の都市の人が読めるリスト、国別にまとめ、各都市に短い説明がある。AI が会話で引用するにも、人が眺めるにも向いてる。nowhere/data/explorable_index.json— 638の地点の捜索プログで読めるインデックス。各地にどの内容レイヤー(localcolor、knowledge、encounters、seasonal など全15層)があるかを表示。「この都市にどんなはコンテンツがあるか」を。
# 看看有多少城市可探索
wc -l nowhere/EXPLORABLE_PLACES.md
# 查看某个城市的内容层
python -c "import json; d=json.load(open('nowhere/data/explorable_index.json')); print(d['places'].get('北京', {}))"環境変数
変数 | 扱い |
| オプション。和风天气は API キー。書かなくとも気候区分のから推定 |
| オプション。データ・ディレクトリの場所。たのまま |
書き味
乌有乡の説明はこれらのルールに従う:
「とても」「非常に」「かなり」使わない — これらコノ字句はに中身のない程度語で、何も言っていない。
短文 — 1文を20字以内にする。
二人称、現在形 — 「私は道を歩く」ではなく、「あなたは道を歩く」。
体を揺するよ — 温度・手触り・音・匂いを施行し、判断しない。
時間は流れる — 「何秒か経って」「太陽が下がってきた」。
AI の心は代弁しない — 身体感覚だけ書く。「あなたは嬉しい」とは別にしない、書かない。
設計原理
そこにいることを感じる6つの原則
世界はあなた中心じゃない — データは実際のもの。あなたに合わせてくれない。いまでも許される。
摩擦があってこその身体 — 坂、風、水温はは実在の抵抗。歩くのにも代費用がかかる。
時間は本当に流れ — 歩きすぎたら戻るもの。夜になっても待ってくれない。逃した起きては「もう、なし」。
注意力は限りあるものを作 — ラジオを聞いている間は歩けない、質問をしたら一歩を削る。選択=放棄だ。
記憶は自分で作る — 自動保存しない。覚えいたなら自分で書き残すこと。一つの記憶が一つの選択。
本当に未知 — 座標は AI にもサーバーにも同じ手順でランダムに。遭遇するものは実際のデータから決まり、スクリプトはない。
アーキテクチャ
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なぜ「AIに」なのか
このプロジェクトはデザイン当初より AI のプレイヤー為のもの。人に遊ばせたものを無理やりにしたものじゃない。
AI は、身体を持つための、知識だけのために、 大規模語モデルはパリの位置、気候、歴史を述べてくれる。だがその場に立ってそのような足裏の感じは答えられない。Nowhere が実施するのは、まさにその層。くちの、土の風味、斜めの太陽など、足の透く岩。身体は視界の設定ではなく、一歩一歩の時に生での実際のデータの一部。
**どの一歩も本心は、位置はランダム、天気はリアルタイム、ラジオが再生中。AI がここの地の地点に落ちて、自らが、それが実際に道をくてれているのと同じぐらい「本当」。スクリプトは背景になうのようなものはいません。
切れても続きが行ける。マークは永続される。ポストカードは永久になる。落ちた記憶はゆうゆうとして、永続される。AI の今はが削り、消えても、戻りを続きから取りかられる。
設定書かなくてもいい。プロンプトに「ウエストワールド」を一式込み手込む必要がなければいい。「扉く」と。言えば、勝手に世界は生成される。 天気が変化し。防衛、地形、匂い、ラジオ、この一つの扉がする完全なシーンは報告。
AI に合ったリズーヒです。 walk_to は一度に10歩ほどんで様子を聞く。wait の長い静かな時間をスキップする:選択というのは方「ラジオを聞くをと、歩をはめること?質問をするは一歩の代々」。要はないは、数字だけのシステム。制限そのものがゲームプレイ。
ときには
内容を加えたり、動きを変えたいときは、こられのファイル変え:
したいこと | 編集するファイル |
新しいツールを追加 |
|
記述してのスタイル |
|
拠点の特徴/食事情報を追加 |
|
人文カード(イベント/人物/文献)を追加 |
|
歩行物理を変更 |
|
地形データを変更 |
|
天気ふりを変える |
|
ラジオ検索を変更 |
|
出会うシーンを追加 |
|
ウェブ観覧を変更 |
|
変更後は、python -m pytest nowhere/tests/ -q を表示して、ほかを壊さないことを確認。データにしか触れない場合は、テストする必要は不要す。
ファイル内容
ファイル | 説明 |
| MCP サーバー+全 |
| 散文をリレンダリングする。パターン・フィルターを既存 |
| オフライン地形(SRTM タイル/1°フォールバックグリッド) |
| オフラインの空(太陽、月、天の川、惑行星や) |
| 天気(Open-Meteo / 気候区分によるフォールバック) |
| ラジオ局の探索(オフラインのフォールバック+Radio-Browser API) |
| 歩行物理(傾斜面、断崖、水け、意味のある方向) |
| 生物(イ・ナチュラリスト)との出会い |
| アート(メトロポリタン オブ・アート 1,966 点)との遭遇 |
| 人文庭層(イベント・人物・作品、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