NORA Data MCP Server

1

Add it to Claude Code

Run this in a terminal.

Run in terminal
claude mcp add -e "KV_REST_API_URL=${KV_REST_API_URL}" -e "KV_REST_API_READ_ONLY_TOKEN=${KV_REST_API_READ_ONLY_TOKEN}" nora-data -- uv run --directory /path/to/nora-mcp-server python server.py
Required:KV_REST_API_URLKV_REST_API_READ_ONLY_TOKEN+ 2 optional
README.md

Read-only MCP server that exposes NORA Dashboard data from Upstash Redis.

NORA Data MCP Server

Read-only MCP server that exposes NORA Dashboard data from Upstash Redis.

Prerequisites

  • Python 3.10+ (the mcp package requires it)
  • uv (recommended) or pip

Setup

  1. Copy .env.example to .env and fill in the Upstash Redis credentials:

    cp .env.example .env
    
  2. Install dependencies:

    # With uv (recommended — handles Python version automatically):
    uv sync
    
    # Or with pip:
    pip install -e .
    

Running Locally (stdio transport)

# With uv:
uv run python server.py

# Or directly:
python server.py

Claude Desktop Configuration

Add to your Claude Desktop MCP config (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "nora-data": {
      "command": "uv",
      "args": ["run", "--directory", "/Users/ahale/nora-mcp-server", "python", "server.py"],
      "env": {
        "KV_REST_API_URL": "https://your-redis-instance.upstash.io",
        "KV_REST_API_READ_ONLY_TOKEN": "your-read-only-token"
      }
    }
  }
}

Claude Code Configuration

Add to your Claude Code MCP settings:

{
  "mcpServers": {
    "nora-data": {
      "command": "uv",
      "args": ["run", "--directory", "/Users/ahale/nora-mcp-server", "python", "server.py"],
      "env": {
        "KV_REST_API_URL": "https://your-redis-instance.upstash.io",
        "KV_REST_API_READ_ONLY_TOKEN": "your-read-only-token"
      }
    }
  }
}

Remote Deployment (Hosted Mode)

The server supports streamable-http transport for remote access. When deployed, team members can connect to it without running anything locally.

Deploy to Railway

  1. Push this repo to GitHub
  2. Create a new project on Railway
  3. Connect the GitHub repo
  4. Add environment variables in Railway dashboard:
    • KV_REST_API_URL — your Upstash Redis URL
    • KV_REST_API_READ_ONLY_TOKEN — your read-only token
    • MCP_TRANSPORTstreamable-http (set automatically via Dockerfile)
    • PORT — Railway sets this automatically
  5. Deploy — Railway will build from the Dockerfile

Docker Build & Run

docker build -t nora-mcp-server .
docker run -p 8000:8000 \
  -e KV_REST_API_URL="https://your-redis-instance.upstash.io" \
  -e KV_REST_API_READ_ONLY_TOKEN="your-read-only-token" \
  nora-mcp-server

Connecting via Cowork / Claude Code (Remote)

Once deployed, team members add the remote MCP server in their project settings:

{
  "mcpServers": {
    "nora-data": {
      "type": "url",
      "url": "https://your-deployed-url.up.railway.app/mcp/"
    }
  }
}

The streamable-http transport serves the MCP endpoint at /mcp/ by default.

Security Note

The server is read-only (it only reads from Upstash Redis with a read-only token). Authentication is not currently implemented — access control relies on URL obscurity and hosting platform network settings. Add bearer token auth if the server is exposed to the public internet.

Available Tools

Tool Description
get_data_status Health check — record counts for all tables
get_okrs Full OKR tree (objectives + key results + linked initiatives)
get_key_results Key results (optional filter: objective_id)
get_initiatives Initiatives (optional filters: key_result_id, bu_id)
get_okr_initiative_links OKR-to-initiative link records
get_flags WBR flags/risks (optional filter: status)
get_bu_portfolio Business unit portfolio overview
get_kpis KPI metrics (optional filter: initiative_id)
get_financial_summary Financial summary (optional filter: bu_id)
get_northstar_metrics North Star metrics (optional filter: bu_id)
get_business_units All business units

Architecture

  • Transport: stdio (local) or streamable-http (hosted)
  • Data source: Upstash Redis REST API (read-only token)
  • Redis key pattern: prod:table:{name}.json
  • Caching: Per-request cache (tables fetched once per tool call, not persisted)
  • Error handling: All tools return JSON; errors are returned as {"error": "..."}, never thrown

Tools (11)

get_data_statusHealth check — record counts for all tables
get_okrsFull OKR tree (objectives + key results + linked initiatives)
get_key_resultsKey results (optional filter: objective_id)
get_initiativesInitiatives (optional filters: key_result_id, bu_id)
get_okr_initiative_linksOKR-to-initiative link records
get_flagsWBR flags/risks (optional filter: status)
get_bu_portfolioBusiness unit portfolio overview
get_kpisKPI metrics (optional filter: initiative_id)
get_financial_summaryFinancial summary (optional filter: bu_id)
get_northstar_metricsNorth Star metrics (optional filter: bu_id)
get_business_unitsAll business units

Environment Variables

KV_REST_API_URLrequiredThe URL for the Upstash Redis instance
KV_REST_API_READ_ONLY_TOKENrequiredThe read-only token for Upstash Redis
MCP_TRANSPORTTransport mode, set to streamable-http for remote deployment
PORTPort for the server when running in hosted mode

Configuration

claude_desktop_config.json
{"mcpServers": {"nora-data": {"command": "uv", "args": ["run", "--directory", "/path/to/nora-mcp-server", "python", "server.py"], "env": {"KV_REST_API_URL": "https://your-redis-instance.upstash.io", "KV_REST_API_READ_ONLY_TOKEN": "your-read-only-token"}}}}

Try it

Show me the full OKR tree to see how our current initiatives align with objectives.
What are the current North Star metrics for our business unit?
List all active WBR flags and risks that need attention.
Get the financial summary for the current business unit portfolio.
Check the health status of the NORA data tables.

Frequently Asked Questions

What are the key features of NORA Data MCP Server?

Read-only access to NORA dashboard data stored in Upstash Redis. Supports both local stdio transport and remote streamable-http transport. Provides structured access to OKRs, KPIs, and financial summaries. Includes health check tools for monitoring data availability. Designed for easy deployment on platforms like Railway.

What can I use NORA Data MCP Server for?

Querying organizational alignment by linking OKRs to specific initiatives. Monitoring business performance metrics and KPIs during team meetings. Reviewing financial summaries and North Star metrics for business units. Identifying project risks and WBR flags through automated data retrieval.

How do I install NORA Data MCP Server?

Install NORA Data MCP Server by running: uv sync

What MCP clients work with NORA Data MCP Server?

NORA Data MCP Server works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep NORA Data MCP Server docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Need the old visual installer? Open Conare IDE.
Open Conare