Nexxupp MCP Server
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Nexxupp MCP Serverstore in memory that I prefer async standups, then schedule one Friday"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Nexxupp MCP Server
We've introduced hosted mode: run one Nexxupp MCP server for your whole team with per-user login — no API tokens in chat configs anymore:
Easy installation via standard OAuth. Users click Connect, log in with Nexxupp, approve scopes. No need to fiddle with JSON or API tokens.
Powerful tools tailored to AI agents across three products: Cortex memory, NWS workspace, and Calendar. Descriptions carry the conventions models need (datetime format, per-user scoping), keeping token consumption low.
We are prioritizing, and actively supporting, hosted mode. Local stdio keeps working for personal use.
This project implements an MCP server for Nexxupp: private memory (Cortex), programmable workspace (NWS), and scheduling (Calendar).
Tools (22)
Prefix | Tools |
|
|
|
|
|
|
|
|
Conventions the models must follow are in each tool description: datetimes are
YYYY-MM-DD HH:MM:SS, memory calls are scoped per end-user id.
Installation
1. Get your credentials
Cortex tools need a per-tenant key (
cortex_...).NWS + Calendar tools need your Nexxupp login (email + password). The server logs in once and refreshes behind the scenes. Prefer this over a static access token (15-minute life, no refresh).
Credentials in an MCP config act as you. Keep them on personal machines — never on shared servers. On shared servers, use hosted mode below.
2. Adding MCP config to your client
Using npm
Cursor & Claude
Add the following to your .cursor/mcp.json or claude_desktop_config.json
(MacOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json)
{
"mcpServers": {
"nexxupp": {
"command": "npx",
"args": ["-y", "@nexxupp/mcp"],
"env": {
"NEXXUPP_API_URL": "https://api.nexxupp.com",
"CORTEX_API_URL": "https://api.cortex.nexxupp.com",
"CORTEX_API_KEY": "cortex_...",
"NEXXUPP_EMAIL": "you@example.com",
"NEXXUPP_PASSWORD": "..."
}
}
}
}For local development against your own stack, point at localhost:
{
"mcpServers": {
"nexxupp-local": {
"command": "node",
"args": ["/absolute/path/to/nexxupp/mcp/dist/index.js"],
"env": {
"NEXXUPP_API_URL": "http://localhost:8080",
"CORTEX_API_URL": "http://localhost:8081",
"CORTEX_API_KEY": "cortex_...",
"NEXXUPP_EMAIL": "you@example.com",
"NEXXUPP_PASSWORD": "..."
}
}
}
}Zed
Add the following to your settings.json
{
"context_servers": {
"nexxupp": {
"command": {
"path": "npx",
"args": ["-y", "@nexxupp/mcp"],
"env": {
"NEXXUPP_API_URL": "https://api.nexxupp.com",
"CORTEX_API_URL": "https://api.cortex.nexxupp.com",
"CORTEX_API_KEY": "cortex_...",
"NEXXUPP_EMAIL": "you@example.com",
"NEXXUPP_PASSWORD": "..."
}
},
"settings": {}
}
}
}GitHub Copilot CLI
Use the Copilot CLI to interactively add the MCP server:
/mcp addAlternatively, create or edit ~/.copilot/mcp-config.json and add:
{
"mcpServers": {
"nexxupp": {
"command": "npx",
"args": ["-y", "@nexxupp/mcp"],
"env": {
"NEXXUPP_API_URL": "https://api.nexxupp.com",
"CORTEX_API_URL": "https://api.cortex.nexxupp.com",
"CORTEX_API_KEY": "cortex_...",
"NEXXUPP_EMAIL": "you@example.com",
"NEXXUPP_PASSWORD": "..."
}
}
}
}Using Docker
Build the image locally (no public registry yet):
docker build -t nexxupp-mcp:0.1.0 .Then add the following to your .cursor/mcp.json or claude_desktop_config.json
{
"mcpServers": {
"nexxupp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e", "NEXXUPP_API_URL",
"-e", "CORTEX_API_URL",
"-e", "CORTEX_API_KEY",
"-e", "NEXXUPP_EMAIL",
"-e", "NEXXUPP_PASSWORD",
"nexxupp-mcp:0.1.0"
],
"env": {
"NEXXUPP_API_URL": "https://api.nexxupp.com",
"CORTEX_API_URL": "https://api.cortex.nexxupp.com",
"CORTEX_API_KEY": "cortex_...",
"NEXXUPP_EMAIL": "you@example.com",
"NEXXUPP_PASSWORD": "..."
}
}
}
}Transport options
STDIO transport (default)
The default transport uses standard input/output. This is what desktop clients like Claude Desktop and Cursor expect.
# Run with default stdio transport
npx -y @nexxupp/mcp
# Or explicitly specify stdio
npx -y @nexxupp/mcp --transport stdioStreamable HTTP transport
For web-based applications or bridged setups, run Streamable HTTP:
# Run on port 3100 (default), localhost only
npx -y @nexxupp/mcp --transport http
# Run on a custom port
npx -y @nexxupp/mcp --transport http --port 8080
# Bind to a different host. The default is 127.0.0.1.
npx -y @nexxupp/mcp --transport http --host 0.0.0.0The server answers at http://127.0.0.1:<port>/mcp. Health at /health,
dependency status at /ready, counters at /metrics.
Authentication
Local HTTP mode has no gateway auth and binds localhost by default — keep it that way. For anything shared, use hosted mode:
MCP_MODE=hosted MCP_TRANSPORT=http MCP_PORT=3100 \
MCP_PUBLIC_URL=https://mcp.nexxupp.com npm startIn hosted mode every /mcp request must carry Authorization: Bearer <user access token>. The server validates it against the backend and scopes all
nws_* / calendar_* calls to that caller — no token, or a bad token, gets
401 before any tool runs. cortex_* tools additionally accept a per-call
apiKey (the caller's own tenant key); never set a global CORTEX_API_KEY on
a shared server.
# Example request
curl -H "Authorization: Bearer <user-access-token>" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc": "2.0", "method": "tools/list", "params": {}, "id": 1}' \
http://localhost:3100/mcpHosted setup (operator checklist)
Deploy the Docker image beside the API with
MCP_MODE=hostedandMCP_PUBLIC_URLset to its public URL.Set backend
OAUTH_API_BASE=https://api.nexxupp.comso discovery advertises reachable URLs.Register one OAuth client per bot via
POST /oauth/clientswith the bot's redirect URIs and scopes (openid profile email calendar).Users connect from the bot, approve scopes in the Nexxupp consent screen, and manage grants at
GET /oauth/consents/DELETE /oauth/consents/{client_id}(revoking kills the bot's refresh tokens immediately; access tokens expire within ~15 minutes).Point
NEXXUPP_API_URLat production, keep the default 120/min caller quota (or lower it), and alert on/metricsrate_limitedspikes — they mean an agent loop is burning someone's wallet.
Examples
Using the following instruction
Remember that Maya prefers oat-milk lattesAI will call cortex_memory_store with your user id, and the memory comes back
versioned as a brick.
Similarly, the following instruction summarizes a whole workspace
Summarize my station, including open tasks and recent pagesAI will call nws_summarize_station (listing stations first if it doesn't know
the id), and may follow up with nws_search_blocks for detail.
You may also schedule in plain language
Find us 30 minutes next week for a design reviewAI will call calendar_ai_assist, which reads the calendar and returns
executable scheduling actions.
Development
Build & test
npm install
npm run build
npm testnpm test runs 14 tests (unit + live transport/auth-matrix tests, tool-surface
snapshot, rate-limit checks; no external services required).
Execute
npm startTesting changes locally in Cursor:
Run
npm linkfrom the repository root.Merge the snippet below into Cursor's
mcp.json.(Cleanup) run
npm unlinkfrom the repository root.
{
"mcpServers": {
"nexxupp-local-package": {
"command": "nexxupp-mcp",
"env": {
"NEXXUPP_API_URL": "http://localhost:8080",
"CORTEX_API_URL": "http://localhost:8081",
"CORTEX_API_KEY": "cortex_...",
"NEXXUPP_EMAIL": "you@example.com",
"NEXXUPP_PASSWORD": "..."
}
}
}
}Publish
npm login
npm publish --access publicObservability
Logs: stderr, one line per request (
LOG_LEVEL=debug|info|warn|error).GET /readyreturns 503 while the backend is unreachable — wire alerts there, not to the container healthcheck (GET /health).Tune with
MCP_REQUEST_TIMEOUT_MS(default 60000),MCP_MAX_BODY_BYTES(default 1048576),MCP_UPSTREAM_TIMEOUT_MS(default 20000),MCP_RATE_LIMIT_MAX(default 120) andMCP_RATE_LIMIT_WINDOW_MS(default 60000) — the per-caller tool-call quota (429 +Retry-Afterwhen hit, counted asrate_limitedin/metrics).
Related MCP server: ellmos-homebase-mcp
License
MIT — see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Governed memory and workspace for any AI: tasks, calendar, mail and pages, with per-action consent.
Hosted runtime for persistent agent teams, durable workflows, memory, schedules, and goals.
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
ADHD system of record for agents: tasks, goals, loops, calendar, focus stats.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to persist and retrieve memories via a personal knowledge graph, with tools for emotional intelligence, CRM, life management, social features, self-training, and autonomous insights.397 npm6MIT

ellmos-homebase-mcpofficial
AlicenseNot gradedqualityBmaintenanceEnables local-first LLM orchestration with persistent memory, knowledge management, routing, swarm patterns, API probing, tests, automation planning, and plugin discovery via a stdio MCP server, using SQLite for offline storage.116 npm1MIT- AlicenseNot gradedqualityBmaintenanceConnects AI assistants such as Claude, ChatGPT, Gemini, and Cursor to a unified personal operating system, enabling them to track habits and streaks, manage task lifecycles and deadlines, and build syllabi and flashcard decks with FSRS-5 spaced-repetition scheduling through 102 typed tools. All reads and writes run against a single append-only event ledger over an OAuth 2.1-secured Streamable HTTP endpoint.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents and tools to share durable, approved knowledge, current decisions, task ownership, and handoffs from a local-first workspace kept outside any single AI product. Markdown holds human-readable rules, goals, and narratives while SQLite tracks agents, sessions, tasks, leases, and audit events behind one transport-independent core.1MIT