Skip to main content

mushroom-magic-campus-auth

Magic Campus authentication provider for MushroomAgent server auth.

It validates an incoming token by calling Magic Campus:

GET /api/v1/accounts/getUserInfo
Authorization: Bearer <AccessToken>

Expected response:

{
  "code": 200,
  "msg": "ok",
  "data": {
    "userId": 123,
    "nickname": "Alice",
    "avatarUrl": "https://example.test/avatar.png",
    "phone": "13800000000",
    "email": "alice@example.test"
  }
}

Install For Local Development

From this directory:

pip install -e .

Or install it into the same Python environment that runs mushroom-agent.

After publishing to PyPI:

pip install mushroom-magic-campus-auth

MushroomAgent Config

Add this provider to ~/.mushroom_agent/config.yaml:

server:
  auth:
    providers:
      - type: import
        path: mushroom_magic_campus_auth:create_provider
        config:
          base_url: "https://magic-campus.example.com"
          timeout_seconds: 3

      # Optional fallback to existing MushroomAgent accesskeys.
      - type: accesskey

If you do not include type: accesskey, only Magic Campus tokens will be accepted.

Token Sources

MushroomAgent extracts token candidates from:

  • Authorization: Bearer <token>
  • query parameters: accesskey, token, auth_token
  • cookie: mushroom_server_auth

This means the provider works for:

  • HTTP API
  • WebUI login
  • /ws/v1/chat
  • /ws/v1/node

Config Options

config:
  base_url: "https://magic-campus.example.com"       # required
  user_info_path: "/api/v1/accounts/getUserInfo"     # optional
  timeout_seconds: 3                                 # optional
  expected_code: 200                                 # optional
  issue_cookie: false                                # optional
  headers:                                           # optional extra headers
    X-App-Id: "mushroom-agent"

issue_cookie: true asks MushroomAgent to set the accepted token as the auth cookie after WebUI login.

Try With curl

curl -X POST "http://127.0.0.1:7860/i/chat/api/messages" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <MagicCampusAccessToken>" \
  -d '{"text":"hello"}'

Development

pip install -e ".[dev]"
pytest

Build And Publish To PyPI

Install build tools:

pip install -e ".[dev]"

Build source and wheel distributions:

python -m build

Validate package metadata:

twine check dist/*

Upload to TestPyPI first:

twine upload --repository testpypi dist/*

Upload to PyPI:

twine upload dist/*

Use a PyPI API token when prompted for the password. The username is usually __token__.

Metadata

Release files for mushroom-magic-campus-auth 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mushroom-magic-campus-auth 0.1.0
File Size Uploaded
mushroom_magic_campus_auth-0.1.0.tar.gz 4.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mushroom-magic-campus-auth 0.1.0
File Interpreter ABI Platform
mushroom_magic_campus_auth-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 10.1 kB

Release files / mushroom_magic_campus_auth-0.1.0.tar.gz

Download URL mushroom_magic_campus_auth-0.1.0.tar.gz
Size 4.9 kB
Tags Source
SHA-256 checksum
How to use checksums
732a866b3a7b31883c8ac2e2ba79ac3f07db7b9db8da626f1d58d25116485c37
BLAKE2b-256 checksum
How to use checksums
ff0dfdb2e50e0fd2ff8ad7f5e199f8da1c48d16f63be10bd56f3c9ca45d77947
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.12

Release files / mushroom_magic_campus_auth-0.1.0-py3-none-any.whl

Download URL mushroom_magic_campus_auth-0.1.0-py3-none-any.whl
Size 5.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1a0e5d7f1eb017f0a2fed9b8656c8bd6747cab04ca7047c61945b450b16a9d37
BLAKE2b-256 checksum
How to use checksums
7e7c0501b36e9e52f94e40905ea3dd2ea561cc360bf5e920a1f9cc0222b47b24
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.12

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page