interloper-mcp
A Model Context Protocol server exposing the interloper platform to AI agents: catalog definitions, the collection, lineage, run/backfill monitoring, analytics and, for tokens holding the editor role, the writes (edits, creates, triggers, retries, cancels).
A client authenticates with a bearer token of one of two kinds: an
OAuth access token, which a client such as claude.ai obtains on its own
from the authorization server the interloper API runs (discovery, dynamic
registration, the user's consent in the app), or a personal access token
(PAT) the user creates in the app's settings. Either acts as its user in
every organisation they belong to, with their live role in each; revocation
and membership removal apply immediately. The server publishes its
protected-resource metadata at /.well-known/oauth-protected-resource/mcp,
naming the authorization server, so an OAuth client needs only the endpoint
URL. See Connecting MCP clients.
Every tool takes an organisation argument, the id of the organisation the
call acts in. It may be left out when the user belongs to exactly one;
otherwise the call returns an error listing the user's organisations, which
list_organisations also lists, with the role in each. A super-admin acts
as admin in any organisation they name.
Running
Streamable HTTP (default; binds INTERLOPER_MCP_HOST:INTERLOPER_MCP_PORT,
endpoint /mcp):
interloper-mcp
Clients authenticate every request with Authorization: Bearer <token>.
stdio (single-user, authenticates once at startup; the token is required, so local development uses a PAT created in the dev instance):
INTERLOPER_MCP_TOKEN=ilp_... interloper-mcp --transport stdio
Connecting clients
claude.ai, Claude Code and any client that supports OAuth: add the MCP endpoint as a remote server and approve the consent page the client opens.
claude mcp add --transport http interloper https://app.example.com/mcp
With a personal access token instead, MCP Inspector:
npx @modelcontextprotocol/inspector
# Transport: Streamable HTTP, URL: http://localhost:3001/mcp
# Header: Authorization: Bearer ilp_...
Claude Code:
claude mcp add --transport http interloper http://localhost:3001/mcp \
--header "Authorization: Bearer ilp_..."
Settings
| Env var | Default | Purpose |
|---|---|---|
INTERLOPER_MCP_HOST |
0.0.0.0 |
HTTP bind host |
INTERLOPER_MCP_PORT |
3001 |
HTTP bind port |
INTERLOPER_MCP_EXTERNAL_URL |
(unset) | Public URL of the MCP endpoint, the OAuth resource clients sign in to; unset means /mcp on INTERLOPER_SERVER_EXTERNAL_URL. The API reads it too |
INTERLOPER_MCP_TOKEN |
(unset) | stdio only: PAT to authenticate as (required) |
Database and catalog configuration is the standard interloper set
(INTERLOPER_POSTGRES_*, INTERLOPER_CATALOG, ...).
Deployment
The mcp dockerfile target ships as interloper-mcp:<version> alongside the
other role images (Makefile ROLES + the publish workflow). The Helm chart
deploys it with mcp.enabled=true: the workload shares the release's
Postgres/catalog configuration, gives every pod INTERLOPER_MCP_EXTERNAL_URL
when mcp.externalUrl is set, and the chart's HTTPRoute forwards /mcp and
/.well-known/oauth-protected-resource on the app hostnames to it. What
remains for the operator is supplying the environment values and, if it should
not share the app's identity, a database identity of its own.
Metadata
Release files for interloper-mcp 0.122.1
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 | Actions |
|---|---|---|---|---|
| interloper_mcp-0.122.1.tar.gz | 9.3 kB | Without provenance | Details for interloper_mcp-0.122.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| interloper_mcp-0.122.1-py3-none-any.whl | Python 3 | none | any | Details for interloper_mcp-0.122.1-py3-none-any.whl |
Total release size: 20.5 kB
Release files / interloper_mcp-0.122.1.tar.gz
| Download URL | interloper_mcp-0.122.1.tar.gz |
|---|---|
| Size | 9.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
58492ca8562f0b153d36009012018b5bfcc7b65a156835e48d09e4efbfa890f5
|
|
BLAKE2b-256 checksum How to use checksums |
275add55a8440bc0f8796e040c612be24a1f967fcc622835511400b5bb97d884
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","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":true}
|
Release files / interloper_mcp-0.122.1-py3-none-any.whl
| Download URL | interloper_mcp-0.122.1-py3-none-any.whl |
|---|---|
| Size | 11.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a9f09b12b5453489c25f63bf1dee5c2cfb2aa1258d9bc6ea661ed4c55abdf63d
|
|
BLAKE2b-256 checksum How to use checksums |
1328053d3ac61ec3c4a9993ea1dd436315be8d95bcdec121c89d37820f2716bb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","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":true}
|
Security for interloper-mcp 0.122.1
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.