nodus-mcp
Model Context Protocol (MCP) library for Nodus — bidirectional client and server, implementing the 2026-07-28 RC specification.
Status: v0.1.0 — published on PyPI.
Authentication warning
v0.1 does not support OAuth 2.0. Only bearer-token authentication is implemented. Servers that require OAuth 2.0 / OIDC authentication (including many production MCP deployments) cannot be used with nodus-mcp v0.1. OAuth support is planned for v0.2.
To connect to a server with a bearer token:
from nodus_mcp import HttpTransport, McpClient
client = McpClient()
transport = HttpTransport("https://server/mcp", bearer_token="sk-...")
conn = client.connect(transport, alias="srv")
Installation
pip install nodus-mcp
# Development install (both repos checked out):
pip install -e . --no-deps
# Set PYTHONPATH to nodus-lang source:
# PYTHONPATH="path/to/nodus-lang/src" python ...
Quick start
Run an MCP server
# Spawned-child stdio mode (parent process connects to our stdin/stdout)
nodus-mcp serve --stdio
# HTTP mode
nodus-mcp serve --http --port 8080 --bearer-token my-api-key
To expose tools, use the Python API before serving:
from nodus_mcp import McpServer, HttpServerTransport
server = McpServer()
server.set_resource_list_handler(lambda: [
{"uri": "file:///data", "name": "Data Directory"}
])
transport = HttpServerTransport("localhost", 8080)
transport.serve(server.dispatch)
Connect to a server
nodus-mcp connect http://localhost:8080 --bearer-token my-api-key
Interactive REPL:
Connected. Server: my-server 1.0. Tools: 3. Type 'help' for commands.
mcp> list
my.tool — Does something useful
mcp> call my.tool {"x": 42}
{"content": [{"type": "text", "text": "done"}]}
mcp> quit
Use from a Nodus script
import "nodus-mcp"
// Discover and call tools (requires McpClient.connect() in host Python code)
let result = tool.invoke("mcp.srv.my_tool", {x: 42})
Entry-point contract
# nodus-mcp registers itself in the nodus.nd entry-point group:
# nodus-mcp = "nodus_mcp.nd:get_nd_root"
#
# After pip install nodus-mcp, any Nodus script can:
# import "nodus-mcp"
# and get the adapter module without additional configuration.
# See docs/guide/library-entry-points.md in nodus-lang for the contract.
Deprecated features (Roots + Sampling)
nodus-mcp v0.1 includes Roots and Sampling despite their deprecation in the 2026-07-28 RC, because existing MCP servers in the ecosystem use them (real interop need) and the RC's 12-month deprecation window extends to at least 2027-07-28.
Do not remove Roots or Sampling before:
- The protocol has actually removed them, AND
- nodus-mcp has shipped a replacement
The removal gate is 2027-07-28 at the earliest. See docs/governance/TECH_DEBT.md
(TD-001, TD-002) and docs/design/05-deprecated-features.md §C1.
Known limitations
| Limitation | Details |
|---|---|
| No OAuth support | Bearer token only; see auth warning above |
resources/subscribe not implemented |
Server-push deferred to v0.2 |
| Server-initiated requests (HTTP) | roots/list, sampling/createMessage, elicitation/create are stdio-only; HTTP has no push channel (TD-007) |
| Partial JSON Schema validation | _validate_args checks required fields and primitive types; enum, pattern, minLength etc. are not enforced server-side (TD-008) |
Resource handler KeyError convention |
Resource read handlers must raise KeyError(uri) for unknown URIs (TD-009) |
requestState is on the wire |
Server-issued elicitation state travels to the client; never checkpoint secrets (TD-010) |
Spec target
2026-07-28 RC — stateless (no session
initialization handshake, no Mcp-Session-Id). Capabilities travel in _meta
per-request. server/discover replaces capability exchange.
Release files for nodus-mcp 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| nodus_mcp-0.1.5.tar.gz | 101.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nodus_mcp-0.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 160.1 kB
Release files / nodus_mcp-0.1.5.tar.gz
| Download URL | nodus_mcp-0.1.5.tar.gz |
|---|---|
| Size | 101.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c9bea495cec28f7c035b54bdee2540d1663a49946c422e2b1c1482dd920ba4e8
|
|
BLAKE2b-256 checksum How to use checksums |
d02b4905198c5231548b498eb7cad114af7f5f85743fdeb31ada00f6416be261
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.9
|
Release files / nodus_mcp-0.1.5-py3-none-any.whl
| Download URL | nodus_mcp-0.1.5-py3-none-any.whl |
|---|---|
| Size | 58.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e3638112e26158b011b00c40f86f6b1d7fd9ca0cd9ee16286e4b3ec603077820
|
|
BLAKE2b-256 checksum How to use checksums |
506493d79f4153cf4463a319452cbac834930cfe760f00ee831da92baa3c2ce9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.9
|