About Strongdm Id
Strongdm Id is an MCP server in the Other category.
Install
git clone https://github.com/apridachin/strongdm-idThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about Strongdm Id
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
5 checks have not been run yet.
README
StrongDM ID Python SDK
Python SDK for StrongDM ID - Identity infrastructure for AI agents with OAuth/OIDC and DPoP support.
Features
- Agent Authentication: OAuth 2.0 with DPoP (RFC 9449) sender-constrained tokens
- Enrollment Flows: Self-enrollment and sponsored enrollment
- Token Management: Acquire, refresh, exchange, and revoke tokens
- Token Exchange: Delegation support (RFC 8693)
- Share Grants: Create and manage access shares
- MCP Server Integration: Authenticate MCP servers with StrongDM ID
Installation
pip install strongdm-id
Or install from source:
git clone https://github.com/your-org/strongdm-id.git
cd strongdm-id
pip install -e .
Quick Start
1. Get Credentials (First Time Only)
If you don't have credentials yet, enroll a new agent:
python examples/enroll_agent.py
This will:
- Request enrollment with your email
- Wait for verification code from email
- Save credentials to
.envand~/.strongdm/credentials/
Or enroll programmatically:
from strongdm_id import enroll_self, confirm_enrollment, load_config
config = load_config(issuer_url="https://id.strongdm.ai")
result = enroll_self(
email="user@example.com",
client_name="My Agent", # Optional
config=config
)
# Check email for verification code
confirm_enrollment(
enrollment_id=result["enrollment_id"],
verification_code="123456",
poll_token=result["poll_token"],
config=config
)
2. Acquire Token
from strongdm_id import load_config, acquire_token
# Load from .env or environment variables
config = load_config()
# Or pass credentials directly
config = load_config(
client_id="your_client_id",
client_secret="your_client_secret"
)
token_data = acquire_token(config=config, scopes=["openid", "profile"])
print(f"Access token: {token_data['access_token']}")
MCP Server with Authentication
from mcp_server import create_mcp_server, start_server
from mcp_server.middleware import require_auth
config = {
"issuer_url": "https://id.strongdm.ai",
"expected_audience": "my-mcp-server"
}
server = create_mcp_server(config=config)
@require_auth(required_scopes=["read:resources"])
def handle_list_resources(request, auth_context):
return {"user": auth_context["sub"], "resources": [...]}
start_server(server)
Configuration
Configure via environment variables or pass directly to functions:
export STRONGDM_ISSUER_URL=https://id.strongdm.ai
export STRONGDM_CLIENT_ID=your_client_id
export STRONGDM_CLIENT_SECRET=your_client_secret
See .env.example for all configuration options.
Documentation
Development
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Format code
black .
# Type checking
mypy strongdm_id
License
MIT License
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.