Skip to main content

Conversation memory and workspace management MCP server for Amazon Q CLI with ChromaDB real-time sync

Project description

AWS Q Memory MCP Server (q_mem_mcp_server)

A Model Context Protocol (MCP) server that provides conversation memory and workspace management for Amazon Q CLI.

๐ŸŽฏ Key Features

  • Automatic Conversation Saving: Real-time sync of Q CLI conversations to ChromaDB
  • Workspace Management: Organize conversations by topics/workspaces with natural language support
  • Workspace Restoration: Resume previous conversations with full workspace memory
  • Semantic Search: Search through conversation history using natural language

๐Ÿš€ Quick Start

1. MCP Configuration

Add to ~/.aws/amazonq/mcp.json:

For macOS:

{
  "mcpServers": {
    "q-mem": {
      "command": "uvx",
      "args": ["q_mem_mcp_server@latest"],
      "env": {
        "Q_CLI_DB_PATH": "~/Library/Application Support/amazon-q/data.sqlite3",
        "Q_MEM_VERBOSE": "true"
      },
      "disabled": false,
      "autoApprove": [
        "start_workspace",
        "resume_workspace", 
        "search_memory_by_workspace",
        "get_storage_stats",
        "list_workspaces"
      ]
    }
  }
}

For Windows: First, find your Q CLI database path:

where /r %USERPROFILE% data.sqlite3

Then use the found path in your configuration:

{
  "mcpServers": {
    "q-mem": {
      "command": "uvx",
      "args": ["q_mem_mcp_server@latest"],
      "env": {
        "Q_CLI_DB_PATH": "C:\\Users\\YourUsername\\AppData\\Local\\amazon-q\\data.sqlite3",
        "Q_MEM_VERBOSE": "true"
      },
      "disabled": false,
      "autoApprove": [
        "start_workspace",
        "resume_workspace", 
        "search_memory_by_workspace",
        "get_storage_stats",
        "list_workspaces"
      ]
    }
  }
}

Note: Replace the path with your actual Q CLI database location found by the command above.

2. Usage Examples

# Start Q CLI
q chat

# Start a new workspace
start_workspace(description="backendDev")
# OR natural language: "๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ ์›Œํฌ์ŠคํŽ˜์ด์Šค๋กœ ์‹œ์ž‘ํ•ด์ค˜"

# Chat normally (automatically saved)
# ... have conversations ...

# List workspaces
list_workspaces()
# OR natural language: "์›Œํฌ์ŠคํŽ˜์ด์Šค ๋ชฉ๋ก ๋ณด์—ฌ์ค˜"

# Resume workspace (loads full workspace)
resume_workspace(workspace_id="backendDev")
# OR natural language: "๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ ์›Œํฌ์ŠคํŽ˜์ด์Šค๋กœ ์žฌ๊ฐœํ•ด์ค˜"

๐Ÿ› ๏ธ Available Commands

Command Description
start_workspace(description) Start a new workspace
list_workspaces() List all workspaces
resume_workspace(workspace_id) Resume workspace with full workspace
search_memory_by_workspace(workspace_id, query) Search previous conversations
delete_workspace(workspace_id, confirm=true) Delete a workspace
get_storage_stats() Check storage status

Natural Language Support: You can also use natural language like "๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ ์›Œํฌ์ŠคํŽ˜์ด์Šค๋กœ ์‹œ์ž‘ํ•ด์ค˜" or "resume backend development workspace"

๐Ÿ”ง Technology Stack

  • ChromaDB: Vector database for conversation storage and search
  • SQLite WAL: Real-time sync with Q CLI database
  • Sentence Transformers: Semantic search embeddings
  • MCP Protocol: Communication with Amazon Q

๐Ÿ“ Data Storage

  • ChromaDB: ~/.Q_mem/chroma_db/
  • Sync State: ~/.Q_mem/sync_state.json
  • Logs: ~/.Q_mem/q_mem.log

๐Ÿ”„ Auto-Sync Features

Q CLI conversations are automatically saved to ChromaDB in real-time:

  • Real-time Detection: Checks for new conversations every 2 seconds
  • Partial Failure Handling: Saves successful conversations even if some fail
  • Auto Recovery: Automatically recovers from consecutive failures
  • State Restoration: Restores sync state after restart

๐ŸŒŸ Multi-Persona Workflow Example

Experience the power of seamless workspace switching between different expert personas:

# === Backend Development Workspace ===
q chat
> start_workspace(description="backendDev")
# OR natural language: "Start backend development workspace"
โœ… Workspace 'backendDev' started

> "You are now a backend developer persona. Help me design a microservices architecture"
๐ŸŽฏ Backend Developer: I'll help you design a robust microservices architecture...

> "Store my PyPI API key: pypi-AgEI..."
โœ… PyPI API key stored for future deployments

> "Design a user authentication service with JWT"
๐ŸŽฏ Backend Developer: Here's a comprehensive JWT authentication service design...
# ... detailed backend discussion continues ...

# === Database Design Workspace ===
q chat  
> start_workspace(description="dba")
# OR natural language: "Start database administrator workspace"
โœ… Workspace 'dba' started

> "You are now a database administrator persona. Help me optimize the user service database"
๐ŸŽฏ Database Administrator: I'll help you optimize your database design...

> "What's the best indexing strategy for user lookups?"
๐ŸŽฏ Database Administrator: For optimal user lookup performance, consider these indexing strategies...
# ... detailed database discussion continues ...

# === Seamless Workspace Switching ===
q chat
> list_workspaces()
# OR natural language: "Show me all workspaces"
๐Ÿ“‹ Your workspaces:
1. backendDev (15 conversations) - Backend development and API design
2. dba (8 conversations) - Database optimization and indexing

> resume_workspace(workspace_id="backendDev")
# OR natural language: "Resume backend development workspace"
๐Ÿ”„ Workspace 'backendDev' resumed with full workspace
๐ŸŽฏ Backend Developer: Welcome back! We were discussing JWT authentication service...

> "Remember my PyPI key? I need to deploy the auth service we designed"
๐ŸŽฏ Backend Developer: Yes! Using your stored PyPI key: pypi-AgEI...
โœ… Deploying q_auth_service v1.0.0 to PyPI...

> "Now switch to DBA workspace to check if our database design supports this deployment"
> resume_workspace(workspace_id="dba")
# OR natural language: "Switch to database administrator workspace"
๐Ÿ”„ Workspace 'dba' resumed with full workspace  
๐ŸŽฏ Database Administrator: Checking the indexing strategy we discussed for the auth service...

> "The backend team deployed the JWT service. Does our index design handle the expected load?"
๐ŸŽฏ Database Administrator: Based on our previous optimization discussion, the composite index on (user_id, created_at) will handle the JWT validation queries efficiently...

# === Cross-Workspace Knowledge Integration ===
> search_memory_by_workspace(workspace_id="backendDev", query="JWT token expiration")
# OR natural language: "Search for JWT token expiration in backend workspace"
๐Ÿ” Found in backendDev workspace:
- "JWT tokens should expire in 15 minutes for security"
- "Refresh tokens valid for 7 days"
- "Store refresh tokens in Redis for fast lookup"

> resume_workspace(workspace_id="dba")
# OR natural language: "Switch back to database workspace"
๐ŸŽฏ Database Administrator: I remember we need to optimize for JWT refresh token storage...

> "Based on the backend workspace, we need Redis optimization for 7-day refresh tokens"
๐ŸŽฏ Database Administrator: Perfect! Let me design a Redis clustering strategy for high-availability refresh token storage...

๐Ÿš€ Key Benefits

  1. Persistent Expertise: Each workspace maintains specialized knowledge and workspace
  2. Seamless Switching: Jump between expert personas without losing conversation flow
  3. Cross-Workspace Intelligence: Search and reference knowledge across different expert workspaces
  4. Secure Credential Storage: API keys and sensitive data persist across workspaces
  5. Natural Workflow: Mirrors real-world collaboration between different specialists

๐ŸŽฏ Real-World Applications

  • DevOps Teams: Switch between developer, DBA, and infrastructure personas
  • Full-Stack Projects: Frontend, backend, and database expert workspaces
  • Learning Paths: Separate workspaces for different technologies or concepts
  • Client Projects: Dedicated workspaces per client with persistent workspace
  • Code Reviews: Different perspectives from various expert personas

๐Ÿ’ก Usage Tips

  1. Workspace Organization: Separate conversations by topics, roles, or projects
  2. Semantic Search: Use natural language rather than exact keywords
  3. Workspace Utilization: Use resume_workspace for complete conversation restoration
  4. Regular Cleanup: Delete unnecessary workspaces to maintain performance
  5. Cross-Workspace References: Use search_memory_by_workspace to find relevant information across personas
  6. Natural Language: Use natural language commands like "๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ ์›Œํฌ์ŠคํŽ˜์ด์Šค๋กœ ์‹œ์ž‘ํ•ด์ค˜"

Memory Management

# Clean up old workspaces
cleanup_old_workspaces(days=30, confirm=true)
# or natural language: "remove old workspaces"

# Delete specific workspace
delete_workspace(workspace_id="workspace_name", confirm=true)
# or natural language: "delete workspace workspace_name"

๐Ÿ“„ License

MIT License

๐Ÿ”— Links


AWS Q Memory MCP Server (q_mem_mcp_server) - KOR

Amazon Q CLI๋ฅผ ์œ„ํ•œ ๋Œ€ํ™” ๋ฉ”๋ชจ๋ฆฌ ๋ฐ ์›Œํฌ์ŠคํŽ˜์ด์Šค ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” Model Context Protocol (MCP) ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.

๐ŸŽฏ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ์ž๋™ ๋Œ€ํ™” ์ €์žฅ: Q CLI ๋Œ€ํ™”๋ฅผ ChromaDB์— ์‹ค์‹œ๊ฐ„ ๋™๊ธฐํ™”
  • ์›Œํฌ์ŠคํŽ˜์ด์Šค ๊ด€๋ฆฌ: ์ฃผ์ œ/์›Œํฌ์ŠคํŽ˜์ด์Šค๋ณ„๋กœ ๋Œ€ํ™” ์ •๋ฆฌ
  • ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋ณต์›: ์ด์ „ ๋Œ€ํ™”์˜ ์ „์ฒด ์›Œํฌ์ŠคํŽ˜์ด์Šค์™€ ํ•จ๊ป˜ ์žฌ๊ฐœ
  • ์˜๋ฏธ ๊ฒ€์ƒ‰: ์ž์—ฐ์–ด๋ฅผ ์‚ฌ์šฉํ•œ ๋Œ€ํ™” ๊ธฐ๋ก ๊ฒ€์ƒ‰

๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘

1. MCP ์„ค์ •

~/.aws/amazonq/mcp.json์— ์ถ”๊ฐ€:

macOS์˜ ๊ฒฝ์šฐ:

{
  "mcpServers": {
    "q-mem": {
      "command": "uvx",
      "args": ["q_mem_mcp_server@latest"],
      "env": {
        "Q_CLI_DB_PATH": "~/Library/Application Support/amazon-q/data.sqlite3",
        "Q_MEM_VERBOSE": "true"
      },
      "disabled": false,
      "autoApprove": [
        "start_workspace",
        "resume_workspace", 
        "search_memory_by_workspace",
        "get_storage_stats",
        "list_workspaces"
      ]
    }
  }
}

Windows์˜ ๊ฒฝ์šฐ: ๋จผ์ € Q CLI ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฒฝ๋กœ๋ฅผ ์ฐพ์œผ์„ธ์š”:

where /r %USERPROFILE% data.sqlite3

์ฐพ์€ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •์— ์‚ฌ์šฉํ•˜์„ธ์š”:

{
  "mcpServers": {
    "q-mem": {
      "command": "uvx",
      "args": ["q_mem_mcp_server@latest"],
      "env": {
        "Q_CLI_DB_PATH": "C:\\Users\\์‚ฌ์šฉ์ž๋ช…\\AppData\\Local\\amazon-q\\data.sqlite3",
        "Q_MEM_VERBOSE": "true"
      },
      "disabled": false,
      "autoApprove": [
        "start_workspace",
        "resume_workspace", 
        "search_memory_by_workspace",
        "get_storage_stats",
        "list_workspaces"
      ]
    }
  }
}

์ฐธ๊ณ : ์œ„ ๋ช…๋ น์–ด๋กœ ์ฐพ์€ ์‹ค์ œ Q CLI ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์œ„์น˜๋กœ ๊ฒฝ๋กœ๋ฅผ ๋ฐ”๊ฟ”์ฃผ์„ธ์š”.

2. ์‚ฌ์šฉ ์˜ˆ์‹œ

# Q CLI ์‹œ์ž‘
q chat

# ์ƒˆ ์›Œํฌ์ŠคํŽ˜์ด์Šค ์‹œ์ž‘
start_workspace(description="๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ")
# ๋˜๋Š” ์ž์—ฐ์–ด: "๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ ์›Œํฌ์ŠคํŽ˜์ด์Šค ์‹œ์ž‘ํ•ด์ค˜"

# ์ผ๋ฐ˜์ ์œผ๋กœ ๋Œ€ํ™” (์ž๋™ ์ €์žฅ๋จ)
# ... ๋Œ€ํ™” ์ง„ํ–‰ ...

# ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋ชฉ๋ก ๋ณด๊ธฐ
list_workspaces()
# ๋˜๋Š” ์ž์—ฐ์–ด: "์›Œํฌ์ŠคํŽ˜์ด์Šค ๋ชฉ๋ก ๋ณด์—ฌ์ค˜"

# ์›Œํฌ์ŠคํŽ˜์ด์Šค ์žฌ๊ฐœ (์ „์ฒด ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋กœ๋“œ)
resume_workspace(workspace_id="๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ")
# ๋˜๋Š” ์ž์—ฐ์–ด: "๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ ์›Œํฌ์ŠคํŽ˜์ด์Šค๋กœ ์žฌ๊ฐœํ•ด์ค˜"

๐Ÿ› ๏ธ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ช…๋ น์–ด

๋ช…๋ น์–ด ์„ค๋ช…
start_workspace(description) ์ƒˆ ์›Œํฌ์ŠคํŽ˜์ด์Šค ์‹œ์ž‘
list_workspaces() ๋ชจ๋“  ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋ชฉ๋ก ๋ณด๊ธฐ
resume_workspace(workspace_id) ์ „์ฒด ์›Œํฌ์ŠคํŽ˜์ด์Šค์™€ ํ•จ๊ป˜ ์›Œํฌ์ŠคํŽ˜์ด์Šค ์žฌ๊ฐœ
search_memory_by_workspace(workspace_id, query) ์ด์ „ ๋Œ€ํ™” ๊ฒ€์ƒ‰
delete_workspace(workspace_id, confirm=true) ์›Œํฌ์ŠคํŽ˜์ด์Šค ์‚ญ์ œ
get_storage_stats() ์ €์žฅ์†Œ ์ƒํƒœ ํ™•์ธ

๐Ÿ”ง ๊ธฐ์ˆ  ์Šคํƒ

  • ChromaDB: ๋Œ€ํ™” ์ €์žฅ ๋ฐ ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
  • SQLite WAL: Q CLI ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์‹ค์‹œ๊ฐ„ ๋™๊ธฐํ™”
  • Sentence Transformers: ์˜๋ฏธ ๊ฒ€์ƒ‰ ์ž„๋ฒ ๋”ฉ
  • MCP Protocol: Amazon Q์™€์˜ ํ†ต์‹ 

๐Ÿ“ ๋ฐ์ดํ„ฐ ์ €์žฅ

  • ChromaDB: ~/.Q_mem/chroma_db/
  • ๋™๊ธฐํ™” ์ƒํƒœ: ~/.Q_mem/sync_state.json
  • ๋กœ๊ทธ: ~/.Q_mem/q_mem.log

๐Ÿ”„ ์ž๋™ ๋™๊ธฐํ™” ๊ธฐ๋Šฅ

Q CLI ๋Œ€ํ™”๊ฐ€ ChromaDB์— ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ž๋™ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค:

  • ์‹ค์‹œ๊ฐ„ ๊ฐ์ง€: 2์ดˆ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๋Œ€ํ™” ํ™•์ธ
  • ๋ถ€๋ถ„ ์‹คํŒจ ์ฒ˜๋ฆฌ: ์ผ๋ถ€ ์‹คํŒจํ•ด๋„ ์„ฑ๊ณตํ•œ ๋Œ€ํ™”๋Š” ์ €์žฅ
  • ์ž๋™ ๋ณต๊ตฌ: ์—ฐ์† ์‹คํŒจ ์‹œ ์ž๋™ ๋ณต๊ตฌ
  • ์ƒํƒœ ๋ณต์›: ์žฌ์‹œ์ž‘ ํ›„ ๋™๊ธฐํ™” ์ƒํƒœ ๋ณต์›

๐ŸŒŸ ๋ฉ€ํ‹ฐ ํŽ˜๋ฅด์†Œ๋‚˜ ์›Œํฌํ”Œ๋กœ์šฐ ์˜ˆ์‹œ

์„œ๋กœ ๋‹ค๋ฅธ ์ „๋ฌธ๊ฐ€ ํŽ˜๋ฅด์†Œ๋‚˜ ๊ฐ„์˜ ๋งค๋„๋Ÿฌ์šด ์ปจํ…์ŠคํŠธ ์ „ํ™˜์˜ ํž˜์„ ๊ฒฝํ—˜ํ•ด๋ณด์„ธ์š”:

# === ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ์›Œํฌ์ŠคํŽ˜์ด์Šค ===
q chat
> start_workspace(description="๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ")
# ๋˜๋Š” ์ž์—ฐ์–ด: "๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ ์›Œํฌ์ŠคํŽ˜์ด์Šค๋กœ ์‹œ์ž‘ํ•ด์ค˜"
โœ… '๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ' ์›Œํฌ์ŠคํŽ˜์ด์Šค๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค

> "๋„ˆ๋Š” ์ด์ œ๋ถ€ํ„ฐ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ํŽ˜๋ฅด์†Œ๋‚˜์•ผ. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„๋ฅผ ๋„์™€์ค˜"
๐ŸŽฏ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž: ๊ฒฌ๊ณ ํ•œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„๋ฅผ ๋„์™€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค...

> "PyPI API ํ‚ค ์ €์žฅํ•ด์ค˜: pypi-AgEI..."
โœ… ํ–ฅํ›„ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด PyPI API ํ‚ค๊ฐ€ ์ €์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค

> "JWT๋ฅผ ์‚ฌ์šฉํ•œ ์‚ฌ์šฉ์ž ์ธ์ฆ ์„œ๋น„์Šค ์„ค๊ณ„ํ•ด์ค˜"
๐ŸŽฏ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž: ํฌ๊ด„์ ์ธ JWT ์ธ์ฆ ์„œ๋น„์Šค ์„ค๊ณ„๋ฅผ ์ œ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค...
# ... ์ƒ์„ธํ•œ ๋ฐฑ์—”๋“œ ๋…ผ์˜ ๊ณ„์† ...

# === ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„ ์›Œํฌ์ŠคํŽ˜์ด์Šค ===
q chat  
> start_workspace(description="DBA")
# ๋˜๋Š” ์ž์—ฐ์–ด: "๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž ์›Œํฌ์ŠคํŽ˜์ด์Šค๋กœ ์‹œ์ž‘ํ•ด์ค˜"
โœ… 'DBA' ์›Œํฌ์ŠคํŽ˜์ด์Šค๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค

> "๋„ˆ๋Š” ์ด์ œ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž ํŽ˜๋ฅด์†Œ๋‚˜์•ผ. ์‚ฌ์šฉ์ž ์„œ๋น„์Šค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ตœ์ ํ™”๋ฅผ ๋„์™€์ค˜"
๐ŸŽฏ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„ ์ตœ์ ํ™”๋ฅผ ๋„์™€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค...

> "์‚ฌ์šฉ์ž ์กฐํšŒ๋ฅผ ์œ„ํ•œ ์ตœ์ ์˜ ์ธ๋ฑ์‹ฑ ์ „๋žต์€ ๋ญ์•ผ?"
๐ŸŽฏ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž: ์ตœ์ ์˜ ์‚ฌ์šฉ์ž ์กฐํšŒ ์„ฑ๋Šฅ์„ ์œ„ํ•ด ๋‹ค์Œ ์ธ๋ฑ์‹ฑ ์ „๋žต์„ ๊ณ ๋ คํ•˜์„ธ์š”...
# ... ์ƒ์„ธํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋…ผ์˜ ๊ณ„์† ...

# === ๋งค๋„๋Ÿฌ์šด ์›Œํฌ์ŠคํŽ˜์ด์Šค ์ „ํ™˜ ===
q chat
> list_workspaces()
# ๋˜๋Š” ์ž์—ฐ์–ด: "๋ชจ๋“  ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋ณด์—ฌ์ค˜"
๐Ÿ“‹ ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋ชฉ๋ก:
1. ๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ (15๊ฐœ ๋Œ€ํ™”) - ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ๋ฐ API ์„ค๊ณ„
2. DBA (8๊ฐœ ๋Œ€ํ™”) - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ตœ์ ํ™” ๋ฐ ์ธ๋ฑ์‹ฑ

> resume_workspace(workspace_id="๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ")
# ๋˜๋Š” ์ž์—ฐ์–ด: "๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ ์›Œํฌ์ŠคํŽ˜์ด์Šค๋กœ ์žฌ๊ฐœํ•ด์ค˜"
๐Ÿ”„ '๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ' ์›Œํฌ์ŠคํŽ˜์ด์Šค๊ฐ€ ์ „์ฒด ์›Œํฌ์ŠคํŽ˜์ด์Šค์™€ ํ•จ๊ป˜ ์žฌ๊ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
๐ŸŽฏ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž: ๋‹ค์‹œ ์˜ค์…จ๊ตฐ์š”! JWT ์ธ์ฆ ์„œ๋น„์Šค์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  ์žˆ์—ˆ์ฃ ...

> "๋‚ด PyPI ํ‚ค ๊ธฐ์–ตํ•˜์ง€? ์šฐ๋ฆฌ๊ฐ€ ์„ค๊ณ„ํ•œ ์ธ์ฆ ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•ด์•ผ ํ•ด"
๐ŸŽฏ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž: ๋„ค! ์ €์žฅ๋œ PyPI ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค: pypi-AgEI...
โœ… q_auth_service v1.0.0์„ PyPI์— ๋ฐฐํฌ ์ค‘...

> "์ด์ œ DBA ์›Œํฌ์ŠคํŽ˜์ด์Šค๋กœ ์ „ํ™˜ํ•ด์„œ ์šฐ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„๊ฐ€ ์ด ๋ฐฐํฌ๋ฅผ ์ง€์›ํ•˜๋Š”์ง€ ํ™•์ธํ•ด์ค˜"
> resume_workspace(workspace_id="DBA")
# ๋˜๋Š” ์ž์—ฐ์–ด: "๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž ์›Œํฌ์ŠคํŽ˜์ด์Šค๋กœ ์ „ํ™˜ํ•ด์ค˜"
๐Ÿ”„ 'DBA' ์›Œํฌ์ŠคํŽ˜์ด์Šค๊ฐ€ ์ „์ฒด ์›Œํฌ์ŠคํŽ˜์ด์Šค์™€ ํ•จ๊ป˜ ์žฌ๊ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
๐ŸŽฏ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž: ์ธ์ฆ ์„œ๋น„์Šค๋ฅผ ์œ„ํ•ด ๋…ผ์˜ํ–ˆ๋˜ ์ธ๋ฑ์‹ฑ ์ „๋žต์„ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค...

> "๋ฐฑ์—”๋“œ ํŒ€์ด JWT ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ–ˆ์–ด. ์šฐ๋ฆฌ ์ธ๋ฑ์Šค ์„ค๊ณ„๊ฐ€ ์˜ˆ์ƒ ๋ถ€ํ•˜๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์„๊นŒ?"
๐ŸŽฏ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž: ์ด์ „ ์ตœ์ ํ™” ๋…ผ์˜๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ, (user_id, created_at) ๋ณตํ•ฉ ์ธ๋ฑ์Šค๊ฐ€ JWT ๊ฒ€์ฆ ์ฟผ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค...

# === ์›Œํฌ์ŠคํŽ˜์ด์Šค ๊ฐ„ ์ง€์‹ ํ†ตํ•ฉ ===
> search_memory_by_workspace(workspace_id="๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ", query="JWT ํ† ํฐ ๋งŒ๋ฃŒ")
# ๋˜๋Š” ์ž์—ฐ์–ด: "๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ ์›Œํฌ์ŠคํŽ˜์ด์Šค์—์„œ JWT ํ† ํฐ ๋งŒ๋ฃŒ ๊ฒ€์ƒ‰ํ•ด์ค˜"
๐Ÿ” '๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ' ์›Œํฌ์ŠคํŽ˜์ด์Šค์—์„œ ๋ฐœ๊ฒฌ:
- "๋ณด์•ˆ์„ ์œ„ํ•ด JWT ํ† ํฐ์€ 15๋ถ„ ํ›„ ๋งŒ๋ฃŒ๋˜์–ด์•ผ ํ•จ"
- "๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์€ 7์ผ๊ฐ„ ์œ ํšจ"
- "๋น ๋ฅธ ์กฐํšŒ๋ฅผ ์œ„ํ•ด ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ Redis์— ์ €์žฅ"

> resume_workspace(workspace_id="DBA")
# ๋˜๋Š” ์ž์—ฐ์–ด: "๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์›Œํฌ์ŠคํŽ˜์ด์Šค๋กœ ๋‹ค์‹œ ์ „ํ™˜ํ•ด์ค˜"
๐ŸŽฏ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž: JWT ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ์ €์žฅ์„ ์œ„ํ•œ ์ตœ์ ํ™”๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค...

> "๋ฐฑ์—”๋“œ ์›Œํฌ์ŠคํŽ˜์ด์Šค ๊ธฐ๋ฐ˜์œผ๋กœ, 7์ผ๊ฐ„ ์œ ํšจํ•œ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ์œ„ํ•œ Redis ์ตœ์ ํ™”๊ฐ€ ํ•„์š”ํ•ด"
๐ŸŽฏ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž: ์™„๋ฒฝํ•ฉ๋‹ˆ๋‹ค! ๊ณ ๊ฐ€์šฉ์„ฑ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ์ €์žฅ์„ ์œ„ํ•œ Redis ํด๋Ÿฌ์Šคํ„ฐ๋ง ์ „๋žต์„ ์„ค๊ณ„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค...

๐Ÿš€ ์ฃผ์š” ์žฅ์ 

  1. ์ง€์†์ ์ธ ์ „๋ฌธ์„ฑ: ๊ฐ ์›Œํฌ์ŠคํŽ˜์ด์Šค๊ฐ€ ์ „๋ฌธ ์ง€์‹๊ณผ ์›Œํฌ์ŠคํŽ˜์ด์Šค๋ฅผ ์œ ์ง€
  2. ๋งค๋„๋Ÿฌ์šด ์ „ํ™˜: ๋Œ€ํ™” ํ๋ฆ„์„ ์žƒ์ง€ ์•Š๊ณ  ์ „๋ฌธ๊ฐ€ ํŽ˜๋ฅด์†Œ๋‚˜ ๊ฐ„ ์ด๋™
  3. ์›Œํฌ์ŠคํŽ˜์ด์Šค ๊ฐ„ ์ง€๋Šฅ: ์„œ๋กœ ๋‹ค๋ฅธ ์ „๋ฌธ๊ฐ€ ์›Œํฌ์ŠคํŽ˜์ด์Šค ๊ฐ„ ์ง€์‹ ๊ฒ€์ƒ‰ ๋ฐ ์ฐธ์กฐ
  4. ๋ณด์•ˆ ์ž๊ฒฉ์ฆ๋ช… ์ €์žฅ: API ํ‚ค์™€ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์›Œํฌ์ŠคํŽ˜์ด์Šค ๊ฐ„ ์ง€์†
  5. ์ž์—ฐ์Šค๋Ÿฌ์šด ์›Œํฌํ”Œ๋กœ์šฐ: ์‹ค์ œ ๋‹ค์–‘ํ•œ ์ „๋ฌธ๊ฐ€ ๊ฐ„ ํ˜‘์—…์„ ๋ฐ˜์˜

๐ŸŽฏ ์‹ค์ œ ํ™œ์šฉ ์‚ฌ๋ก€

  • DevOps ํŒ€: ๊ฐœ๋ฐœ์ž, DBA, ์ธํ”„๋ผ ํŽ˜๋ฅด์†Œ๋‚˜ ๊ฐ„ ์ „ํ™˜
  • ํ’€์Šคํƒ ํ”„๋กœ์ ํŠธ: ํ”„๋ก ํŠธ์—”๋“œ, ๋ฐฑ์—”๋“œ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ „๋ฌธ๊ฐ€ ์›Œํฌ์ŠคํŽ˜์ด์Šค
  • ํ•™์Šต ๊ฒฝ๋กœ: ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ์ด๋‚˜ ๊ฐœ๋…๋ณ„ ๋ณ„๋„ ์›Œํฌ์ŠคํŽ˜์ด์Šค
  • ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์ ํŠธ: ํด๋ผ์ด์–ธํŠธ๋ณ„ ์ „์šฉ ์›Œํฌ์ŠคํŽ˜์ด์Šค์™€ ์ง€์†์ ์ธ ์›Œํฌ์ŠคํŽ˜์ด์Šค
  • ์ฝ”๋“œ ๋ฆฌ๋ทฐ: ๋‹ค์–‘ํ•œ ์ „๋ฌธ๊ฐ€ ํŽ˜๋ฅด์†Œ๋‚˜์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๊ด€์ 

๐Ÿ’ก ์‚ฌ์šฉ ํŒ

  1. ์›Œํฌ์ŠคํŽ˜์ด์Šค ์ •๋ฆฌ: ์ฃผ์ œ, ์—ญํ• , ํ”„๋กœ์ ํŠธ๋ณ„๋กœ ๋Œ€ํ™” ๋ถ„๋ฆฌ
  2. ์˜๋ฏธ ๊ฒ€์ƒ‰: ์ •ํ™•ํ•œ ํ‚ค์›Œ๋“œ๋ณด๋‹ค ์ž์—ฐ์–ด ์‚ฌ์šฉ
  3. ์›Œํฌ์ŠคํŽ˜์ด์Šค ํ™œ์šฉ: ์™„์ „ํ•œ ๋Œ€ํ™” ๋ณต์›์„ ์œ„ํ•ด resume_workspace ์‚ฌ์šฉ
  4. ์ •๊ธฐ ์ •๋ฆฌ: ์„ฑ๋Šฅ ์œ ์ง€๋ฅผ ์œ„ํ•ด ๋ถˆํ•„์š”ํ•œ ์›Œํฌ์ŠคํŽ˜์ด์Šค ์‚ญ์ œ
  5. ์›Œํฌ์ŠคํŽ˜์ด์Šค ๊ฐ„ ์ฐธ์กฐ: search_memory_by_workspace๋ฅผ ์‚ฌ์šฉํ•ด ํŽ˜๋ฅด์†Œ๋‚˜ ๊ฐ„ ๊ด€๋ จ ์ •๋ณด ์ฐพ๊ธฐ
  6. ์ž์—ฐ์–ด ์ง€์›: "๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ ์›Œํฌ์ŠคํŽ˜์ด์Šค๋กœ ์‹œ์ž‘ํ•ด์ค˜" ๊ฐ™์€ ์ž์—ฐ์–ด ๋ช…๋ น ์‚ฌ์šฉ

๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ

# ์˜ค๋ž˜๋œ ์›Œํฌ์ŠคํŽ˜์ด์Šค ์ •๋ฆฌ
cleanup_old_workspaces(days=30, confirm=true)
# ๋˜๋Š” ์ž์—ฐ์–ด: "์˜ค๋ž˜๋œ ์›Œํฌ์ŠคํŽ˜์ด์Šค ์‚ญ์ œํ•ด์ค˜"

# ํŠน์ • ์›Œํฌ์ŠคํŽ˜์ด์Šค ์‚ญ์ œ
delete_workspace(workspace_id="์›Œํฌ์ŠคํŽ˜์ด์Šค์ด๋ฆ„", confirm=true)
# ๋˜๋Š” ์ž์—ฐ์–ด: "์›Œํฌ์ŠคํŽ˜์ด์Šค์ด๋ฆ„ ์›Œํฌ์ŠคํŽ˜์ด์Šค ์‚ญ์ œํ•ด์ค˜"

๐Ÿ“„ ๋ผ์ด์„ ์Šค

MIT License

๐Ÿ”— ๋งํฌ

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

q_mem_mcp_server-1.1.0.tar.gz (29.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

q_mem_mcp_server-1.1.0-py3-none-any.whl (31.7 kB view details)

Uploaded Python 3

File details

Details for the file q_mem_mcp_server-1.1.0.tar.gz.

File metadata

  • Download URL: q_mem_mcp_server-1.1.0.tar.gz
  • Upload date:
  • Size: 29.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for q_mem_mcp_server-1.1.0.tar.gz
Algorithm Hash digest
SHA256 9e29ad285e8d395d5361dacc4f9e71954525942e0c347f15ff347bb9bb5a16f3
MD5 f9a1ae093302b35b99ce5ad373bbf7ea
BLAKE2b-256 50b8c58e4aebfa788d12fcc6a0d3aeea87012474e4bdc7371897369ca530e6ab

See more details on using hashes here.

File details

Details for the file q_mem_mcp_server-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for q_mem_mcp_server-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7fd2f6a5b88e39cfebe9b22b2c7b4ea0df8f5413a5ab01fecb24601451c4c639
MD5 853f63c200ab430ba5d85aaefc352d6f
BLAKE2b-256 54f0c5a49a7fef2c1f6a58300e128c75acdbb1429f7697f4c2f9cbb6d48f5300

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page