一个模型上下文协议服务器,使Claude能够通过Apache Unomi配置文件管理来维护用户上下文。
⚠️ 早期实现通知
这是一个用于演示目的的早期实现:
- 尚未验证生产使用
- 可能会更改
- 尚未(正式)支持
- 仅用于学习和实验
此实现提供:
其他Unomi功能(事件、分段、会话属性等)尚未实现。欢迎社区反馈未来开发优先级。
观看MCP服务器如何使Claude维护上下文并管理用户配置文件:
要与Claude Desktop一起使用,请添加服务器配置和环境变量:
在MacOS上:~/Library/Application Support/Claude/claude_desktop_config.json
在Windows上:%APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"unomi-server": {
"command": "npx",
"args": ["@inoyu/mcp-unomi-server"],
"env": {
"UNOMI_BASE_URL": "http://your-unomi-server:8181",
"UNOMI_VERSION": "3", // 使用“2”表示Unomi V2,使用“3”表示Unomi V3(默认)
"UNOMI_USERNAME": "your-username", // 对于V2是必需的,对于V3是备用的
"UNOMI_PASSWORD": "your-password", // 对于V2是必需的,对于V3是备用的
"UNOMI_PROFILE_ID": "your-profile-id",
"UNOMI_KEY": "your-unomi-key", // 仅对V2是必需的
"UNOMI_EMAIL": "your-email@example.com",
"UNOMI_SOURCE_ID": "claude-desktop",
"UNOMI_TENANT_ID": "your-tenant-id", // 对于V3是必需的
"UNOMI_PUBLIC_KEY": "your-public-key", // 对于V3是必需的
"UNOMI_PRIVATE_KEY": "your-private-key" // 对于V3是必需的
}
}
}
}
配置中的env部分允许您设置服务器所需的环境变量。用您的实际Unomi服务器详细信息替换这些值。
更新配置后,请确保重新启动Claude Desktop。然后,您可以点击聊天窗口右下角的工具图标,以确保它已找到由该服务器提供的所有工具。
get_my_profile - 使用环境变量获取您的配置文件
update_my_profile - 更新您的配置文件属性
{
"properties": {
"firstName": "John",
"age": 30,
"isSubscribed": true,
"oldProperty": null
}
}
get_profile - 通过ID检索特定配置文件
search_profiles - 搜索配置文件
create_scope - 创建新的Unomi范围
{
"scope": "my-app",
"name": "My Application",
"description": "用于我的应用程序事件的范围"
}
get_tenant_info - 获取当前租户的信息(仅限V3)
update_consent - 使用modifyConsent事件更新用户的同意状态
{
"consentId": "marketing-consent",
"status": "GRANTED",
"typeIdentifier": "marketing",
"scope": "claude-desktop",
"metadata": {
"source": "claude-desktop",
"timestamp": "2024-01-15T10:30:00Z"
}
}
get_consent - 获取特定配置文件的同意信息
{
"consentId": "marketing-consent"
}
list_consents - 列出配置文件的所有同意,可选过滤
{
"status": "GRANTED",
"scope": "claude-desktop"
}
服务器为您自动管理范围:
默认范围:
claude-desktop自定义范围:
create_scope工具创建自动范围创建:
注意:虽然范围在需要时会自动创建,但您仍然可以使用
create_scope工具手动创建具有自定义名称和描述的范围。
此MCP服务器支持Apache Unomi V2和V3,并自动检测版本和适当的认证方法。
服务器根据UNOMI_VERSION环境变量自动检测Unomi版本:
UNOMI_VERSION=2 - 使用V2认证(系统管理员)UNOMI_VERSION=3 - 使用V3认证(基于租户)- 默认V2(旧版):
karaf/karaf)UNOMI_USERNAME、UNOMI_PASSWORD和UNOMI_KEYV3(多租户):
/context.json):使用带有公钥的X-Unomi-Api-Key头tenantId:privateKey)UNOMI_TENANT_ID、UNOMI_PUBLIC_KEY和UNOMI_PRIVATE_KEY更新环境变量:
# 移除V2特有的变量
# UNOMI_KEY(不再需要)
# 添加V3特有的变量
UNOMI_VERSION=3
UNOMI_TENANT_ID=your-tenant-id
UNOMI_PUBLIC_KEY=your-public-key
UNOMI_PRIVATE_KEY=your-private-key
V3的优势:
此MCP服务器使Claude能够通过Apache Unomi的配置文件管理系统来维护关于用户的上下文。以下是您可以实现的目标:
用户识别:
上下文管理:
同意管理:
集成特性:
服务器需要以下环境变量:
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
服务器使用两步过程解析配置文件ID:
电子邮件查找(如果设置了UNOMI_EMAIL):
回退配置文件ID:
UNOMI_EMAILUNOMI_PROFILE_ID响应将通过source字段指示所使用的方法:
"email_lookup":通过电子邮件找到配置文件"environment":使用回退配置文件ID在etc/org.apache.unomi.cluster.cfg中配置受保护的事件:
# 用于受保护的事件,如属性更新
org.apache.unomi.cluster.authorization.key=your-unomi-key
# 允许Claude Desktop访问Unomi
# 替换your-claude-desktop-ip为您的实际IP
org.apache.unomi.ip.ranges=127.0.0.1,::1,your-claude-desktop-ip
确保您的Unomi服务器在etc/org.apache.unomi.cors.cfg中正确配置了CORS:
# 如需添加您的Claude Desktop来源
org.apache.unomi.cors.allowed.origins=http://localhost:*
重启Unomi服务器以应用更改
重要:服务器配置中的Unomi密钥必须与Claude Desktop中的UNOMI_KEY环境变量完全匹配。
安装依赖项:
npm install
构建服务器:
npm run build
开发时自动重建:
npm run watch
由于MCP服务器通过stdio通信,调试可能会很困难。我们推荐使用MCP Inspector,这是一个包脚本:
npm run inspector
Inspector将提供一个URL,以便您可以在浏览器中访问调试工具。
您还可以实时跟踪Claude Desktop的日志,查看MCP请求和响应:
# 实时跟踪日志
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
使用get_my_profile时,会话ID会自动生成,格式如下:
[profileId]-YYYYMMDD
例如,如果您的配置文件ID是"user123",今天是2024年3月15日,那么会话ID将是:
user123-20240315
受保护事件失败
找不到配置文件
UNOMI_EMAIL是否正确设置UNOMI_PROFILE_ID是否有效会话问题
profileId-YYYYMMDD连接问题
UNOMI_BASE_URL正确Claude Desktop日志:
# MacOS
~/Library/Logs/Claude/mcp*.log
# Windows
%APPDATA%\Claude\mcp*.log
Unomi服务器日志:
# 通常位于
$UNOMI_HOME/logs/karaf.log
重置状态:
# 停止Claude Desktop
# 清除日志
rm ~/Library/Logs/Claude/mcp*.log
# 重启Claude Desktop
验证配置:
# 检查Unomi连接
curl -u username:password http://your-unomi-server:8181/cxs/cluster
# 测试范围是否存在
curl -u username:password http://your-unomi-server:8181/cxs/scopes/claude-desktop
创建或编辑您的Claude Desktop配置:
~/Library/Application Support/Claude/claude_desktop_config.json使用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"
}
}
}
}
注意:使用NPX确保您始终运行最新发布的服务器版本。
如果您想使用特定版本:
{
"mcpServers": {
"unomi-server": {
"command": "npx",
"args": ["@inoyu/mcp-unomi-server@0.1.0"],
"env": {
// ... 环境变量 ...
}
}
}
}
对于开发或本地安装:
{
"mcpServers": {
"unomi-server": {