connect-an-ai-client
Connect an AI client (Claude Code, Claude Desktop, or any MCP client) to the Wandering OS MCP server to ask about trips — anonymous, friend-token, or owner tier.
SKILL.md.claude/skills/connect-an-ai-client/SKILL.md
GitHubConnect an AI client
The MCP (Model Context Protocol) server at https://travel.michaelwheeler.ai/mcp is a read-only,
stateless streamable-HTTP endpoint over the trip graph: 8 tools, 2 resources
(graph://schema, graph://stats), 8 slash-command prompts. Trip data is
public on purpose; every answer is privacy-scrubbed for every tier.
Read first
- services/mcp/README.md — Connect section, the eight-tools table, access tiers, and ground rules.
- docs/GETTING_STARTED.md — the live-surfaces table (fallback URL until the DNS delegation lands).
Commands
# anonymous (public tier — full read toolset)
claude mcp add --transport http wandering-os https://travel.michaelwheeler.ai/mcp
# friend or owner tier
claude mcp add --transport http wandering-os https://travel.michaelwheeler.ai/mcp \
--header "Authorization: Bearer <token>"
Client can't send headers? Append ?token=<token> to the URL. Mint tokens with just mint-token --role friend --label alice --ttl 30d (see mint-and-revoke-tokens).
Gotchas
- The DNS delegation is live for the production deploy, so the primary URL works. On a fresh account before the delegation lands, the working fallback is the CloudFront domain plus
/mcp(for production,https://d2na1bvnmer5k1.cloudfront.net/mcp— see the live-surfaces table). The raw Lambda Function URL is origin-locked — it 403s any caller that is not CloudFront — so it is never usable directly. - Friend and anonymous see identical data today; friend is the trusted tier future features hang off. Owner unlocks exactly one thing: presigned links for non-image attachments (raw video/audio keep embedded GPS).
- A presented-but-invalid token gets 401 even though anonymous access is open — it never silently downgrades to public.
- Rate limit: 300 requests / 5 min / IP (WAF). Attachment links expire after 15 minutes — ask again.
- Tell clients to read
graph://schemabefore usingquery_graph; writes are rejected twice (guard regex + read-only transaction) andLIMIT 200is injected when absent.