Skip to main content
Glama
allanhale

NORA Data MCP Server

by allanhale

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

-
security - not tested
F
license - not found
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

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/allanhale/nora-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server