Install & Compatibility
Where this runs
tested against v0.1.9 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
50MB installed
● package 50MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
SCIM2Server
✓ from scim2_server import SCIM2Server
✗ from scim2_server import SCIM2Server
This quickstart sets up a basic FastAPI application embedding the `scim2-server` router. It initializes an in-memory SCIM2 server, adds a sample user and group, and then runs the FastAPI app using Uvicorn. Access SCIM endpoints at `/scim/v2`.
import uvicorn
from fastapi import FastAPI
from scim2_server import SCIM2Server, SCIM2User, SCIM2Group
# Initialize SCIM2 server with in-memory storage
scim_server = SCIM2Server()
# Optional: Add some initial data
scim_server.users.create(SCIM2User(id='user1', userName='john.doe', emails=[{'value': 'john.doe@example.com', 'primary': True}]))
scim_server.groups.create(SCIM2Group(id='group1', displayName='Developers'))
# Create a FastAPI app and include the SCIM2 router
app = FastAPI(title="SCIM2 Prototype API")
app.include_router(scim_server.router, prefix="/scim/v2")
@app.get("/")
async def root():
return {"message": "SCIM2 server is running! Access /scim/v2"}
# To run this: save as main.py and execute 'uvicorn main:app --reload'
# The example below demonstrates running programmatically for convenience,
# but 'uvicorn main:app' is the typical way.
if __name__ == '__main__':
# Note: For production, typically run with `uvicorn main:app` from terminal.
# This programmatic run is for quick demonstration.
print("\n--- Running SCIM2 Server Prototype ---")
print("Access SCIM endpoints at: http://127.0.0.1:8000/scim/v2")
print("Try: http://127.0.0.1:8000/scim/v2/Users")
uvicorn.run(app, host="127.0.0.1", port=8000)
Debug
Known issues
gotchaThis library is explicitly a 'prototype' and 'in-memory reference implementation'. It is not designed for production use without significant modification for persistence, scalability, and security.fixUnderstand its limitations. Consider it a starting point for a custom SCIM server implementation, not a ready-to-deploy solution. You will need to replace its in-memory storage with a proper database.
affects: All versions < 1.0
gotchaThe package name for installation is `scim2-server` (with a hyphen), but the Python module name for imports is `scim2_server` (with an underscore).fixAlways use `from scim2_server import ...` in your Python code, never `from scim2-server import ...`.
affects: All versions
gotchaRunning the SCIM2 server requires FastAPI and an ASGI server like Uvicorn. While FastAPI is a direct dependency, Uvicorn (though listed) requires explicit installation and knowledge of how to start a FastAPI app.fixEnsure `uvicorn` is installed (`pip install uvicorn`) and you use the correct command to run your FastAPI application, typically `uvicorn main:app --reload` (replace `main:app` with your module and app instance).
affects: All versions
Upgrade
Version history
0.1.9latest on PyPI · released Mar 27, 2026
Audit
Dependencies
fastapirequiredCore web framework for the server implementation.
uvicornoptionalASGI server for running the FastAPI application.
pydanticrequiredUsed for data validation and serialization of SCIM2 models.