Inoyu Apache Unomi MCP Server
About
A Model Context Protocol server enabling Claude to maintain user context through Apache Unomi profile management.
Details
- Author
- sergehuber
- Repository
- inoyu-dev/inoyu-mcp-unomi-server
- GitHub stars
- 4
- Downloads
- 189
- License
- Apache License 2.0
- Categories
- Developer Tools, Other, Marketing
- Tags
- #data
Jump to
1. User Recognition:
- Identify users across conversations using email or profile ID
- Maintain consistent user context between sessions
- Automatically create and manage user profiles
2. Context Management:
- Store and retrieve user preferences
- Manage user consent preferences
- Track consent status and history
3. Consent Management:
- Update user consent status using Apache Unomi's Consent API
- Retrieve specific consent information
- List and filter consents by status and scope
- Automatic consent expiration handling (GDPR compliant)
- Support for GDPR and privacy compliance
4. Integration Features:
- Seamless Claude Desktop integration
- Automatic session management
- Scope-based context isolation
Setting up with Highlight
Follow these steps to add this server as a custom Highlight plugin:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Inoyu Apache Unomi MCP ServerCommand (node, npx, python, etc.)npxArguments-
Argument 1
@inoyu/mcp-unomi-server
Environment-
UNOMI_KEY
your-unomi-key -
UNOMI_EMAIL
your-email@example.com -
UNOMI_VERSION
3 -
UNOMI_BASE_URL
http://your-unomi-server:8181 -
UNOMI_PASSWORD
your-password -
UNOMI_USERNAME
your-username -
UNOMI_SOURCE_ID
claude-desktop -
UNOMI_TENANT_ID
your-tenant-id -
UNOMI_PROFILE_ID
your-profile-id -
UNOMI_PUBLIC_KEY
your-public-key -
UNOMI_PRIVATE_KEY
your-private-key
Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
-
Argument 1
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
V2 (Legacy):
- Uses system administrator authentication (karaf/karaf by default)
- All operations use the same authentication method
- Requires UNOMI_USERNAME, UNOMI_PASSWORD, and UNOMI_KEY
V3 (Multi-tenant):
- Uses tenant-based authentication with API keys
- Different authentication for different endpoint types:
- Public endpoints (/context.json): Uses X-Unomi-Api-Key header with public key
- Private endpoints (profiles, scopes): Uses tenant authentication (tenantId:privateKey)
- System operations: Falls back to system administrator authentication
- Requires UNOMI_TENANT_ID, UNOMI_PUBLIC_KEY, and UNOMI_PRIVATE_KEY
The server requires the following environment variables:
UNOMI_BASE_URL=http://your-unomi-server:8181
UNOMI_USERNAME=your-username
UNOMI_PASSWORD=your-password
UNOMI_PROFILE_ID=your-profile-id
UNOMI_SOURCE_ID=your-source-id
UNOMI_KEY=your-unomi-key
UNOMI_EMAIL=your-email
1. Configure protected events in etc/org.apache.unomi.cluster.cfg:
1. Reset State:
bash
1. Create or edit your Claude Desktop configuration:
- MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
- Windows: %APPDATA%/Claude/claude_desktop_config.json
2. Add the server configuration using NPX:
{
"mcpServers": {
"unomi-server": {
"command": "npx",
"args": ["@inoyu/mcp-unomi-server"],
"env": {
"UNOMI_BASE_URL": "http://your-unomi-server:8181",
"UNOMI_USERNAME": "your-username",
"UNOMI_PASSWORD": "your-password",
"UNOMI_PROFILE_ID": "your-profile-id",
"UNOMI_KEY": "your-unomi-key",
"UNOMI_EMAIL": "your-email@example.com",
"UNOMI_SOURCE_ID": "claude-desktop"
}
}
}
}
> Note: Using NPX ensures you're always running the latest published version of the server.
Alternatively, if you want to use a specific version:
{
"mcpServers": {
"unomi-server": {
"command": "npx",
"args": ["@inoyu/mcp-unomi-server@0.1.0"],
"env": {
// ... environment variables ...
}
}
}
}
For development or local installations:
{
"mcpServers": {
"unomi-server": {
"command": "node",
"args": ["/path/to/local/mcp-unomi-server/build/index.js"],
"env": {
// ... environment variables ...
}
}
}
}
get_my_profile
Get your profile using environment variables. Uses UNOMI_PROFILE_ID from environment or email lookup. Automatically generates a session ID based on the current date. Optional parameters: requireSegments (boolean), requireScores (boolean).
update_my_profile
Update properties of your profile. Uses UNOMI_PROFILE_ID from environment or email lookup. Takes a properties object with key-value pairs to update, supporting string, number, boolean, and null values.
get_profile
Retrieve a specific profile by ID. Takes profileId as required parameter and returns full profile data from Unomi.
search_profiles
Search for profiles. Takes a query string and optional limit/offset parameters. Searches across firstName, lastName, and email fields.
create_scope
Create a new Unomi scope. Takes scope identifier and optional name/description. Required for event tracking and profile updates.
get_tenant_info
Get information about the current tenant (V3 only). Returns tenant details, version information, and key status. No parameters required.
update_consent
Update a user's consent status using the modifyConsent event. Required parameters: consentId (string), status (GRANTED, DENIED, or REVOKED). Optional parameters: typeIdentifier (string), scope (string), metadata (object).
get_consent
Get specific consent information for a profile. Takes consentId as required parameter and returns consent details including status, timestamp, and metadata.
list_consents
List all consents for a profile with optional filtering. Optional parameters: profileId (string), status (GRANTED, DENIED, or REVOKED), scope (string). Returns filtered list of consents with metadata.
- get_my_profile - Get your profile using environment variables
- Uses UNOMI_PROFILE_ID from environment or email lookup
- Automatically generates a session ID based on the current date
- Optional parameters:
- requireSegments: Include segment information
- requireScores: Include scoring information
- update_my_profile - Update properties of your profile
- Uses UNOMI_PROFILE_ID from environment or email lookup
- Takes a properties object with key-value pairs to update
- Supports string, number, boolean, and null values
- Example:
{
"properties": {
"firstName": "John",
"age": 30,
"isSubscribed": true,
"oldProperty": null
}
}
-
get_profile - Retrieve a specific profile by ID- Takes profileId as required parameter
- Returns full profile data from Unomi
-
search_profiles - Search for profiles- Takes query string and optional limit/offset parameters
- Searches across firstName, lastName, and email fields
-
create_scope - Create a new Unomi scope- Takes scope identifier and optional name/description
- Required for event tracking and profile updates
- Example:
{
"scope": "my-app",
"name": "My Application",
"description": "Scope for my application events"
}
-
get_tenant_info - Get information about the current tenant (V3 only)- Returns tenant details, version information, and key status
- Only available when using Unomi V3
- No parameters required
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"inoyu apache unomi mcp server": {
"env": {
"UNOMI_KEY": "your-unomi-key",
"UNOMI_EMAIL": "your-email@example.com",
"UNOMI_VERSION": "3",
"UNOMI_BASE_URL": "http://your-unomi-server:8181",
"UNOMI_PASSWORD": "your-password",
"UNOMI_USERNAME": "your-username",
"UNOMI_SOURCE_ID": "claude-desktop",
"UNOMI_TENANT_ID": "your-tenant-id",
"UNOMI_PROFILE_ID": "your-profile-id",
"UNOMI_PUBLIC_KEY": "your-public-key",
"UNOMI_PRIVATE_KEY": "your-private-key"
},
"args": [
"@inoyu/mcp-unomi-server"
],
"command": "npx"
}
}
}
Linux
{
"env": {
"UNOMI_KEY": "your-unomi-key",
"UNOMI_EMAIL": "your-email@example.com",
"UNOMI_VERSION": "3",
"UNOMI_BASE_URL": "http://your-unomi-server:8181",
"UNOMI_PASSWORD": "your-password",
"UNOMI_USERNAME": "your-username",
"UNOMI_SOURCE_ID": "claude-desktop",
"UNOMI_TENANT_ID": "your-tenant-id",
"UNOMI_PROFILE_ID": "your-profile-id",
"UNOMI_PUBLIC_KEY": "your-public-key",
"UNOMI_PRIVATE_KEY": "your-private-key"
},
"args": [
"@inoyu/mcp-unomi-server"
],
"command": "npx"
}
Macos
{
"env": {
"UNOMI_KEY": "your-unomi-key",
"UNOMI_EMAIL": "your-email@example.com",
"UNOMI_VERSION": "3",
"UNOMI_BASE_URL": "http://your-unomi-server:8181",
"UNOMI_PASSWORD": "your-password",
"UNOMI_USERNAME": "your-username",
"UNOMI_SOURCE_ID": "claude-desktop",
"UNOMI_TENANT_ID": "your-tenant-id",
"UNOMI_PROFILE_ID": "your-profile-id",
"UNOMI_PUBLIC_KEY": "your-public-key",
"UNOMI_PRIVATE_KEY": "your-private-key"
},
"args": [
"@inoyu/mcp-unomi-server"
],
"command": "npx"
}
Windows
{
"env": {
"UNOMI_KEY": "your-unomi-key",
"UNOMI_EMAIL": "your-email@example.com",
"UNOMI_VERSION": "3",
"UNOMI_BASE_URL": "http://your-unomi-server:8181",
"UNOMI_PASSWORD": "your-password",
"UNOMI_USERNAME": "your-username",
"UNOMI_SOURCE_ID": "claude-desktop",
"UNOMI_TENANT_ID": "your-tenant-id",
"UNOMI_PROFILE_ID": "your-profile-id",
"UNOMI_PUBLIC_KEY": "your-public-key",
"UNOMI_PRIVATE_KEY": "your-private-key"
},
"args": [
"/c",
"npx",
"@inoyu/mcp-unomi-server"
],
"command": "cmd"
}
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





