Ross Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Ross Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Personal life admin system — manage Apple Reminders, Outlook email/calendar, Apple Notes, voice memos, and documents from Claude, ChatGPT, or any MCP/API client.
Architecture: Client (Claude/ChatGPT/API) → Cloud Relay (Fly.io) → Local Mac Agent → Apple APIs / Microsoft Graph
| Category | Tools |
|---|---|
| Apple Reminders | Create, list, complete reminders |
| Outlook Email | Search, read threads, draft, send, schedule, archive, attachments |
| Outlook Calendar | List events, create/update/cancel events, find free slots |
| Apple Notes | Search, read, create notes, list folders |
| Voice Memos | List recordings, transcribe with speaker diarization (Deepgram) |
| Documents | Convert Markdown to PDF or DOCX |
| Agent Management | Check agent status, trigger remote self-update |
29 tools accessible from:
cd ross-mcp
arch -arm64 python3 -m venv .venv # Use arch -arm64 on Apple Silicon
source .venv/bin/activate
pip install -r agent/requirements.txt
pip install mcp httpx python-dotenvcp .env.example .env
# Edit .env — set RELAY_API_KEY (must match the Fly.io secret)brew install azure-cli
az login
./agent/setup_azure.sh
python3 -c "
import asyncio
from dotenv import load_dotenv
load_dotenv()
from agent.services.outlook_auth import OutlookAuth
auth = OutlookAuth()
asyncio.run(auth.authorize())
print('Success!' if auth.is_authenticated else 'Failed')
"The refresh token auto-renews every 3 days.
source .venv/bin/activate
python -m agent.agentThe agent will:
./agent/install.shCreates a launchd service that starts on boot and stays running.
All clients connect to the same remote endpoint on the relay. No local MCP server needed.
| Setting | Value |
|---|---|
| URL | https://ross-mcp-relay.fly.dev/mcp/mcp |
| Transport | Streamable HTTP |
| Auth | Bearer token (your RELAY_API_KEY) |
Add to ~/.claude/settings.json:
{
"mcpServers": {
"ross-life-admin": {
"type": "http",
"url": "https://ross-mcp-relay.fly.dev/mcp/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}https://ross-mcp-relay.fly.dev/openapi.jsonRELAY_API_KEYcurl -X POST https://ross-mcp-relay.fly.dev/api/command \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type": "create_reminder", "payload": {"title": "Buy milk"}}'The deploy.sh script handles the full deployment pipeline:
# 1. Commit your changes
git add . && git commit -m "your changes"
# 2. Deploy everything
./deploy.shThis will:
Deploy relay only:
fly deploy --app ross-mcp-relayUpdate agents only (via any client): Tell Claude/ChatGPT: "update the agents" — this triggers a git pull + restart on all connected agents.
Or via API:
curl -X POST https://ross-mcp-relay.fly.dev/api/command \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type": "update_agent", "payload": {}}'View relay logs:
fly logs --app ross-mcp-relayarch -arm64 python3 -m venv .venv && pip install -r agent/requirements.txt.env and change AGENT_NAME to identify the machine (e.g. mac-mini)./agent/setup_azure.sh then the OAuth login (one-time)./agent/install.shBoth agents connect to the same relay. Commands route to whichever is online. Use agent_status to see connected agents.
| Action | Command |
|---|---|
| Install | ./agent/install.sh |
| Stop | launchctl unload ~/Library/LaunchAgents/com.ross.mcp-agent.plist |
| Start | launchctl load ~/Library/LaunchAgents/com.ross.mcp-agent.plist |
| Restart | Unload then load |
| Logs | tail -f ~/Library/Logs/mcp-agent/mcp-agent.log |
| Errors | tail -f ~/Library/Logs/mcp-agent/mcp-agent.err |
Record meetings on iPad using Voice Memos, share to iCloud Drive, then transcribe via Claude or ChatGPT.
DEEPGRAM_API_KEY to .envThe relay includes a secure web dashboard at https://ross-mcp-relay.fly.dev/.
Features:
Set the dashboard password:
fly secrets set DASHBOARD_PASSWORD=your-password --app ross-mcp-relay| Endpoint | URL | Auth |
|---|---|---|
| Dashboard | https://ross-mcp-relay.fly.dev/ | Dashboard password |
| MCP (Claude) | POST https://ross-mcp-relay.fly.dev/mcp/mcp | Bearer token |
| REST API | POST https://ross-mcp-relay.fly.dev/api/command | Bearer token |
| Tool endpoints (ChatGPT) | POST https://ross-mcp-relay.fly.dev/api/tools/* | Bearer token |
| Swagger UI | https://ross-mcp-relay.fly.dev/docs | None (read-only) |
| Status | GET https://ross-mcp-relay.fly.dev/api/status | Bearer token |
| Agent WebSocket | wss://ross-mcp-relay.fly.dev/ws/agent | Bearer token |
| Secret | Location | Notes |
|---|---|---|
RELAY_API_KEY | .env (local) + Fly.io secrets | Shared by agent, relay, and clients |
DASHBOARD_PASSWORD | Fly.io secrets | Web dashboard login |
MS_CLIENT_ID / MS_CLIENT_SECRET | .env (local) | Azure AD app credentials |
.outlook_tokens.json | Project root (gitignored) | OAuth tokens, auto-refreshed |
DEEPGRAM_API_KEY | .env (local) | For voice memo transcription |
Regenerate API key:
python3 -c "import secrets; print(secrets.token_urlsafe(32))"
# Update: .env, fly secrets set, Claude settings.json, and ChatGPT action authross-mcp/
├── agent/ # Local Mac agent
│ ├── agent.py # Main agent (WebSocket client + command dispatch)
│ ├── web.py # Local web UI (port 8001)
│ ├── setup_azure.sh # Azure AD app registration script
│ ├── install.sh # Launchd auto-start installer
│ └── services/
│ ├── reminders.py # Apple Reminders via EventKit
│ ├── notes.py # Apple Notes via AppleScript
│ ├── outlook_auth.py # OAuth2 for Microsoft Graph
│ ├── outlook_mail.py # Outlook email operations
│ ├── outlook_calendar.py # Outlook calendar operations
│ ├── voice_memos.py # Voice memo transcription (Deepgram)
│ └── documents.py # Markdown to PDF/DOCX conversion
├── relay/ # Cloud relay (Fly.io)
│ ├── relay.py # FastAPI hub (WebSocket + HTTP + dashboard)
│ ├── mcp_endpoint.py # Remote MCP server (streamable-http)
│ ├── openai_endpoints.py # REST endpoints for ChatGPT Actions
│ ├── Dockerfile
│ └── requirements.txt
├── shared/
│ └── messages.py # Command/Response schemas (all command types)
├── mcp_server.py # Local MCP server (stdio, legacy — use remote instead)
├── deploy.sh # Full deploy: git push + relay deploy + agent update
├── fly.toml # Fly.io config
└── .env.example # Environment template~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.