ntro-mcp
MCP (Model Context Protocol) server for the ntro platform. Exposes the Workspace API as tools, resources, and prompts that Claude can call directly — from Claude Desktop, Claude Code, or claude.ai.
What's included
| Type | Count | Examples |
|---|---|---|
| Tools | 8 | ntro_whoami, ntro_tenant_create, ntro_workflow_run |
| Resources | 11 | ntro://tenants, ntro://tasks/{id}, ntro://schedule |
| Prompts | 3 | onboard_spv, run_nav, platform_status |
Installation
Prerequisites
- Python 3.11+
- The
ntroSDK installed (see ntro-python) - The Workspace API running locally or a valid
~/.ntro/config.toml
Development install (local workspace)
# Create a shared venv (once — skip if already done)
uv venv ~/.ntro-dev --python 3.12
# Install the SDK (editable)
uv pip install -e ~/ntropii/ntro-python --python ~/.ntro-dev/bin/python
# Install ntro-mcp (editable)
uv pip install -e ~/ntropii/ntro-mcp --python ~/.ntro-dev/bin/python
Verify:
~/.ntro-dev/bin/ntro-mcp --help
Production install (once published to PyPI)
pip install ntro-mcp
Configuration
The server resolves the API connection in this priority order:
--ntro-host/--ntro-api-keyCLI flagsNTRO_HOST/NTRO_API_KEYenvironment variables--connectionflag → named entry in~/.ntro/config.tomldefault_connection_namein~/.ntro/config.toml
Example ~/.ntro/config.toml:
default_connection_name = "local"
[connections.local]
host = "http://localhost:3000/v1"
api_key = "ntro_dev_key"
[connections.production]
host = "https://api.ntropii.com/v1"
api_key = "your-api-key-here"
Run ntro auth login (from ntro-cli) to create this file interactively.
Claude Desktop setup (stdio)
This is the recommended transport for local use. Claude Desktop spawns ntro-mcp as a child process and communicates over stdin/stdout.
1. Find your Claude Desktop config file:
| OS | Path |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| Windows (WSL) | /mnt/c/Users/<Username>/AppData/Roaming/Claude/claude_desktop_config.json |
2. Add the ntro server:
{
"mcpServers": {
"ntro": {
"command": "/home/ollie/.ntro-dev/bin/ntro-mcp",
"args": ["--transport", "stdio", "--connection", "local"],
"env": {}
}
}
}
Or use explicit env vars instead of a connection name:
{
"mcpServers": {
"ntro": {
"command": "/home/ollie/.ntro-dev/bin/ntro-mcp",
"args": ["--transport", "stdio"],
"env": {
"NTRO_HOST": "http://localhost:3000/v1",
"NTRO_API_KEY": "ntro_dev_key"
}
}
}
}
3. Restart Claude Desktop. The ntro tools will appear in the tool picker.
Claude Code setup (stdio)
Add to your project's .claude/mcp.json or the global ~/.claude/mcp.json:
{
"mcpServers": {
"ntro": {
"command": "/home/ollie/.ntro-dev/bin/ntro-mcp",
"args": ["--transport", "stdio", "--connection", "local"]
}
}
}
claude.ai setup (Streamable HTTP)
For use with claude.ai, the server must be reachable over HTTPS. Run it locally and tunnel with cloudflared:
# Terminal 1 — start the MCP server
ntro-mcp --transport http --port 8000 --connection local
# Terminal 2 — expose it over HTTPS
cloudflared tunnel --url http://localhost:8000
# → https://random-words.trycloudflare.com
Then in Claude.ai: Settings → Connected Apps → Add MCP Server → paste the tunnel URL.
CLI reference
ntro-mcp [OPTIONS]
Options:
--transport {http,stdio} Transport type (default: stdio)
--port INT HTTP port (default: 8000)
--host TEXT HTTP bind host (default: 127.0.0.1)
-c, --connection TEXT Connection name from ~/.ntro/config.toml
--ntro-host TEXT Workspace API URL (overrides config)
--ntro-api-key TEXT API key (overrides config)
Examples:
# Local dev via config file
ntro-mcp --transport stdio --connection local
# Explicit target (no config file needed)
ntro-mcp --transport stdio --ntro-host http://localhost:3000/v1 --ntro-api-key ntro_dev_key
# HTTP server for tunnelling to claude.ai
ntro-mcp --transport http --port 8000 --connection local
# Production
ntro-mcp --transport stdio --connection production
Tool reference
Write tools
| Tool | Description |
|---|---|
ntro_whoami |
Get current user identity |
ntro_integration_create |
Register a data platform (Databricks, Snowflake) |
ntro_integration_test |
Test connectivity to a data platform |
ntro_tenant_create |
Create a new tenant (client cell) |
ntro_entity_create |
Create an SPV/fund within a tenant |
ntro_workflow_create |
Register a workflow definition |
ntro_workflow_deploy |
Deploy a workflow version to a tenant cell |
ntro_workflow_run |
Trigger a workflow run — returns a task ID |
Resources
| URI | Description |
|---|---|
ntro://whoami |
Current user and workspace info |
ntro://integrations |
All data platform configs |
ntro://integrations/{id} |
Single data platform detail |
ntro://integrations/{id}/schemas |
Schema discovery (Databricks tables) |
ntro://tenants |
All tenants |
ntro://tenants/{slug} |
Single tenant detail |
ntro://entities |
All entities across tenants |
ntro://workflows |
All workflow definitions |
ntro://workflows/{id} |
Workflow detail |
ntro://tasks/{id} |
Task status and step progress |
ntro://schedule |
All tasks sorted by urgency |
Prompts
| Prompt | Description |
|---|---|
onboard_spv |
Guided SPV setup: entity → COA → email → workflow → dry-run test |
run_nav |
Guided monthly NAV execution with progress monitoring |
platform_status |
Full platform overview — tenants, entities, workflows, active tasks |
Related packages
| Package | Description |
|---|---|
ntro |
Python SDK (dependency of this package) |
ntro-cli |
CLI tool — ntro tenant list, ntro workflow run, etc. |
Metadata
Release files for ntro-mcp 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| ntro_mcp-0.1.0.tar.gz | 10.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ntro_mcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.2 kB
Release files / ntro_mcp-0.1.0.tar.gz
| Download URL | ntro_mcp-0.1.0.tar.gz |
|---|---|
| Size | 10.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
aa9e11ce72014f76b99a6b9351515c804deeb3769e2a5fe0347fffa02e7e6730
|
|
BLAKE2b-256 checksum How to use checksums |
96fe98f9d94e17f5c7013ce00244565e7157ebb2f6d126787379c7f58335cbc6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / ntro_mcp-0.1.0-py3-none-any.whl
| Download URL | ntro_mcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 8.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
58b64b1e6b0e00e1dce7063ea95c13e6eaf6d1be7536202a3438b242174d5aff
|
|
BLAKE2b-256 checksum How to use checksums |
a6db397c0a65e1abea26503f19616610ba3d1feebe738b499e5a13ef1b8be007
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for ntro-mcp 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.