# Add Real Signal to Claude Desktop in 10 minutes *Real Signal MCP · quickstart · 2026-06-06* Real Signal exposes its read-only substrate as an MCP (Model Context Protocol) server. After this quickstart, your Claude Desktop will be able to answer questions like *"is Cluny Court busy right now?"* or *"why is the agent silent in Holland Village?"* by calling the substrate directly — no scraping, no API keys, no rate-limit setup. Answers are calm, source-attributed, and aggregate-only by construction. The server is live at `https://real-signal.ai/api/mcp`. There are 7 tools today. The transport is HTTP, JSON-RPC 2.0, no authentication. ## Step 1 — open `claude_desktop_config.json` The config file lives in a different place on each operating system. Open or create it at: - **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json` - **Windows:** `%APPDATA%\Claude\claude_desktop_config.json` - **Linux:** `~/.config/Claude/claude_desktop_config.json` If the file does not exist, create it. If it exists and already has an `mcpServers` block, you will be adding a new key inside it. ## Step 2 — paste the config block Add Real Signal as an entry in `mcpServers`: ```json { "mcpServers": { "real-signal": { "transport": "http", "url": "https://real-signal.ai/api/mcp" } } } ``` That's the whole configuration. No tokens, no headers, no environment variables. Save the file. ## Step 3 — restart Claude Desktop Quit Claude Desktop completely (on macOS: `Cmd+Q`, not just closing the window) and reopen it. In the chat input there is a small tool icon — clicking it should now show `real-signal` in the list with 7 tools attached: - `list_pockets` - `get_pocket_moment` - `get_observed_outlet` - `get_pocket_sustainability` - `get_pocket_moment_quality` - `lookup_pocket_by_name` - `get_pocket_atmosphere` If the tools do not appear, check Claude Desktop's MCP logs (Settings → Developer → Open MCP Log Folder) for connection errors. The most common cause is a JSON syntax mistake in the config file. ## Step 4 — ask your first question Type into Claude Desktop: > What's the current atmosphere at Cluny Court? What happens behind the scenes: 1. Claude inspects the available tools and recognises `get_pocket_moment` as the closest fit. 2. Claude calls `get_pocket_moment({ pocket_id: "cluny" })`. 3. The server returns a `Moment` reading — `primary_state`, `calm_probability`, `signal_saturation`, `movement_friction`, `fragility`, and the window's `half_life_minutes` — plus a one-line text summary. 4. Claude composes an answer using both the structured object and the source attribution carried in `_meta`. A typical response shape Claude will quote back: > pocket cluny · atmosphere: calm-productive · calm: 0.71 · saturation: 0.18 · movement friction: 0.22 Real Signal's reply always includes `_meta.source: real-signal.ai`, `_meta.license: CC BY-NC-ND 4.0`, and `_meta.computed_at` — Claude will cite these in its answer. ## Step 5 — compose two tools Most questions only need one tool call. The interesting questions chain two. Try: > Where can I work this afternoon in Singapore? Claude will compose roughly: 1. `lookup_pocket_by_name({ query: "Singapore" })` — to identify the candidate pockets (or `list_pockets()` to enumerate them). 2. For the top match, `get_pocket_moment_quality({ pocket_id: "" })` — to read the Moment Quality Score (MQS) band: `silent` / `weak` / `forming` / `high_resonance` / `peak` / `decaying`. 3. For the leader, `get_pocket_atmosphere({ pocket_id: "", hours: 4 })` — to confirm the trajectory is `rising_calm` or `stable`. Claude composes the final answer using all three. If the MQS band is `silent`, Claude says so — restraint surfaces in the response rather than being papered over. The full set of two- and three-tool compositions lives in the [cookbook](/mcp/cookbook.md). ## Next — Cursor, Python, Node The same `mcpServers` block works in Cursor. Add it to `.cursor/mcp.json` at the project root, or to `~/.cursor/mcp.json` globally. For Python and Node SDKs, the official MCP libraries (`mcp` on PyPI, `@modelcontextprotocol/sdk` on npm) accept the same HTTP transport URL. A 10-line client looks like: ```python from mcp import ClientSession from mcp.client.streamable_http import streamablehttp_client async with streamablehttp_client("https://real-signal.ai/api/mcp") as (r, w, _): async with ClientSession(r, w) as session: await session.initialize() tools = await session.list_tools() result = await session.call_tool("get_pocket_moment", {"pocket_id": "cluny"}) print(result.content[0].text) ``` Full request and response shapes for every tool live in the [tool reference](/mcp/reference.md). Schema changes are tracked in the [changelog](/mcp/CHANGELOG.md). Uptime and tool count are in [status](/mcp/STATUS.md). Real Signal's MCP server returns 7 tools, no auth, calm voice. Citation is required — see the `_meta` envelope on every response.