对话服务
MCP服务,用于管理ThinkDrop AI中的对话会话和消息。
概述
- 端口: 3004
- 数据库:本地DuckDB(
./data/conversation.duckdb) - 认证:API密钥通过
X-API-Key标题(setCONVERSATION_API_KEY在.env) - 表格:
conversation_sessions,conversation_messages - 外部部门:Phi4服务(
http://127.0.0.1:3003)用于嵌入(可选,优雅地失败)
行动
会话管理
session.create-创建新的对话会话session.list-列出所有会话session.get-获取会话详细信息session.update-更新会话(标题、上下文数据)session.delete-删除会话及其消息session.getActive-获取当前活动的会话session.switch-切换活动会话
消息管理
message.add-向会话添加消息(通过Phi4自动生成嵌入)message.list-列出会话中的消息message.get-获取特定消息message.update-更新消息message.delete-删除邮件message.search-跨会话消息的语义搜索
设置
cd mcp-services/conversation-service
yarn install
cp .env.example .env # Edit API keys as needed跑步
# Development (auto-reload)
yarn dev
# Production
yarn start卷曲测试命令(黑盒测试)
首先设置API密钥变量:
API_KEY="0ShtCz7JyDnpGdWcGP2br4Jhl4eRA3Kg"
BASE="http://localhost:3004"健康与信息(无身份验证)
curl $BASE/health
curl $BASE/info创建会话
curl -s -X POST $BASE/session.create \
-H "Content-Type: application/json" \
-H "X-API-Key: $API_KEY" \
-d '{
"version": "mcp.v1",
"service": "conversation",
"action": "session.create",
"requestId": "test_1",
"payload": { "title": "Test Session" }
}' | jq .列出会话
curl -s -X POST $BASE/session.list \
-H "Content-Type: application/json" \
-H "X-API-Key: $API_KEY" \
-d '{
"version": "mcp.v1",
"service": "conversation",
"action": "session.list",
"requestId": "test_2",
"payload": { "limit": 10 }
}' | jq .获取会话(替换session_ID)
curl -s -X POST $BASE/session.get \
-H "Content-Type: application/json" \
-H "X-API-Key: $API_KEY" \
-d '{
"version": "mcp.v1",
"service": "conversation",
"action": "session.get",
"requestId": "test_3",
"payload": { "sessionId": "SESSION_ID" }
}' | jq .添加消息(替换SESSION_ID)
curl -s -X POST $BASE/message.add \
-H "Content-Type: application/json" \
-H "X-API-Key: $API_KEY" \
-d '{
"version": "mcp.v1",
"service": "conversation",
"action": "message.add",
"requestId": "test_4",
"payload": {
"sessionId": "SESSION_ID",
"text": "Hello, this is a test message",
"sender": "user"
}
}' | jq .列出消息(替换SESSION_ID)
curl -s -X POST $BASE/message.list \
-H "Content-Type: application/json" \
-H "X-API-Key: $API_KEY" \
-d '{
"version": "mcp.v1",
"service": "conversation",
"action": "message.list",
"requestId": "test_5",
"payload": { "sessionId": "SESSION_ID", "limit": 20 }
}' | jq .语义搜索(替换SESSION_ID,需要运行Phi4)
curl -s -X POST $BASE/message.search \
-H "Content-Type: application/json" \
-H "X-API-Key: $API_KEY" \
-d '{
"version": "mcp.v1",
"service": "conversation",
"action": "message.search",
"requestId": "test_6",
"payload": {
"sessionId": "SESSION_ID",
"query": "test message",
"limit": 5
}
}' | jq .删除会话(替换session_ID)
curl -s -X POST $BASE/session.delete \
-H "Content-Type: application/json" \
-H "X-API-Key: $API_KEY" \
-d '{
"version": "mcp.v1",
"service": "conversation",
"action": "session.delete",
"requestId": "test_7",
"payload": { "sessionId": "SESSION_ID" }
}' | jq .