Skip to main content

LinkAuth credential broker connector for the Model Context Standard.

Project description

mcs-auth-linkauth

Authentication for agents that can't open a browser. LinkAuth credential broker connector for the Model Context Standard (MCS).

CLI tools, Telegram bots, background workers, Docker containers -- your agent shows a URL and a code, the user authenticates on any device, and the agent picks up the credentials automatically. No localhost callback. No web server. No browser on the agent's machine.

Think of it as the Device Flow experience, but for any credential type -- OAuth tokens, API keys, passwords, or custom secrets.

Installation

pip install mcs-auth-linkauth

Quick start

from mcs.auth.linkauth import LinkAuthProvider

provider = LinkAuthProvider(
    broker_url="https://auth.example.com",
    template="google_mail",
    display_name="Gmail Access",
)

try:
    token = provider.get_token("gmail")
except AuthChallenge as e:
    # Show this to the user via LLM, Telegram, CLI, ...
    print(f"Open {e.url} and enter code {e.code}")

How it works

Agent                     LinkAuth Broker              User
  |                            |                        |
  |-- create session --------->|                        |
  |   (public_key, template)   |                        |
  |<-- url + code ------------|                        |
  |                            |                        |
  |-- raise AuthChallenge ---->|                        |
  |   "Open URL, enter ABCD"  |                        |
  |                            |<-- user opens URL -----|
  |                            |    enters code         |
  |                            |    provides credentials|
  |                            |    (encrypted w/ pubkey)|
  |                            |                        |
  |-- poll ------------------->|                        |
  |<-- encrypted credentials --|                        |
  |-- decrypt (private key) -->|                        |
  |                            |                        |
  | token ready!               |                        |

Zero-knowledge: For form-based credentials (API keys, passwords), the broker encrypts with the agent's public key in the browser. The broker never sees the plaintext. For OAuth flows, the broker briefly handles tokens server-side before encrypting -- a documented trade-off.

Use with Auth0 Token Vault

The killer combo -- LinkAuth's device-flow UX with Auth0's multi-provider Token Vault:

from mcs.auth.auth0 import Auth0Provider
from mcs.auth.linkauth import LinkAuthConnector

provider = Auth0Provider(
    domain="my-tenant.auth0.com",
    client_id="...",
    client_secret="...",
    _auth=LinkAuthConnector(
        broker_url="https://auth.example.com",
        oauth_provider="auth0",
        oauth_scopes=["openid", "email", "offline_access"],
        oauth_extra_params={"audience": "...", "connection": "google-oauth2"},
        display_name="Gmail Access",
    ),
)

# Agent shows URL + code, user authenticates, Token Vault does the rest
token = provider.get_token("gmail")

Supported credential types

Template What the user sees
api_key Single password field
basic_auth Username + password form
openai, anthropic Branded API key form
google_mail, github, ... OAuth consent flow
Custom Define your own fields or OAuth provider

Links

License

Apache-2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcs_auth_linkauth-0.4.0.tar.gz (19.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcs_auth_linkauth-0.4.0-py3-none-any.whl (12.9 kB view details)

Uploaded Python 3

File details

Details for the file mcs_auth_linkauth-0.4.0.tar.gz.

File metadata

  • Download URL: mcs_auth_linkauth-0.4.0.tar.gz
  • Upload date:
  • Size: 19.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.5

File hashes

Hashes for mcs_auth_linkauth-0.4.0.tar.gz
Algorithm Hash digest
SHA256 57abe77d3affb5d0da06ee01866539a2714a9a510a09e6e239e41e43c7ace4a4
MD5 8cd455aa309f31d97d0fa3cd90909e79
BLAKE2b-256 10a73c8ba17f5025a5ae0d4e81e0d9136a085f87b5d099c8bb6ad802031e4933

See more details on using hashes here.

File details

Details for the file mcs_auth_linkauth-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for mcs_auth_linkauth-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a513f260777e906c6a66529cda57e729b2d08fcd34935a9aae65e45a536fa66d
MD5 6284852e4586de6e5a8e8b7fbaa318b1
BLAKE2b-256 bf917998f29cde02cadc66ec30eddf54ad8cf3cdaab6a4e6400de936d24ffdcd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page