aws-q-workspace-mcp-server

jikang-jeong/aws-q-workspace-mcp-server

3.2

If you are the rightful owner of aws-q-workspace-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The AWS Q Workspace MCP Server is a specialized server designed to facilitate the integration and management of model context protocols within cloud environments.

AWS Q Workspace MCP Server

A Model Context Protocol (MCP) server that provides conversation workspace management for Amazon Q CLI using SQLite + FTS5 for fast, reliable storage and search.

Features

  • Automatic Conversation Saving: Real-time sync of Q CLI conversations to SQLite database
  • Workspace Management: Organize conversations by topics/workspaces with natural language support
  • Workspace Restoration: Resume previous conversations with full context
  • Full-Text Search: Search through conversation history using SQLite FTS5
  • Q CLI LLM Integration: Intelligent conversation summarization using Q CLI's built-in LLM

Quick Start

1. MCP Configuration

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

For macOS:

{
  "mcpServers": {
    "q-workspace-mcp-server": {
      "command": "uvx",
      "args": ["q-workspace-mcp-server@latest"],
      "env": {
        "Q_CLI_DB_PATH": "~/Library/Application Support/amazon-q/data.sqlite3",
        "Q_WORKSPACE_VERBOSE": "true"
      },
      "disabled": false 
    }
  }
}

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

where /r %USERPROFILE% data.sqlite3

Then use the found path in your configuration:

{
  "mcpServers": {
    "q-workspace-mcp-server": {
      "command": "uvx",
      "args": ["q-workspace-mcp-server@latest"],
      "env": {
        "Q_CLI_DB_PATH": "C:\\Users\\YourUsername\\AppData\\Local\\amazon-q\\data.sqlite3",
        "Q_WORKSPACE_VERBOSE": "true"
      },
      "disabled": false 
    }
  }
}

2. Usage Examples

# Start Q CLI
q chat

# Start a new workspace
start_workspace(description="backend_development")
# OR natural language: "Start backend development workspace"

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

# List workspaces
list_workspaces()

# Resume workspace (loads full context)
resume_workspace(workspace_id="backend_development")
# OR natural language: "Resume backend development workspace"

# Switch to another workspace
resume_workspace(workspace_id="frontend_development")
# OR natural language: "Resume frontend development workspace"

# Search conversations
search_memory_by_workspace(workspace_id="backend_development", query="API design")
# OR natural language: "What did I say about API design?"

Available Tools

ToolDescription
q_workspace_help()Show usage instructions
start_workspace(description)Start a new workspace with auto-sync
list_workspaces(limit=10)List all workspaces (default: 10, max: 50)
resume_workspace(workspace_id)Resume workspace with full context
search_memory_by_workspace(workspace_id, query)Search conversations using FTS5
delete_workspace(workspace_id, confirm=true)Delete a workspace and all conversations
cleanup_old_workspaces(days=30, confirm=true)Clean up workspaces older than specified days
get_storage_stats()Get storage statistics and usage information

Technology Stack

  • SQLite + FTS5: Fast full-text search without external dependencies
  • Real-time Sync: Monitors Q CLI database for new conversations
  • Q CLI LLM Integration: Uses Q CLI's built-in LLM for intelligent summarization
  • MCP Protocol: Standard communication with Amazon Q

Data Storage

  • Database: ~/.Q_workspace/conversations.db
  • Logs: ~/.Q_workspace/operations.log

Auto-Sync Features

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

  • Real-time Detection: Monitors Q CLI database for new conversations
  • Immediate Sync: Processes new conversations as they appear
  • Background Processing: Non-blocking synchronization
  • State Recovery: Maintains sync state across restarts

Workspace Management

Creating Workspaces

# Start a new workspace
start_workspace(description="Python_learning")
# OR natural language
"Start Python learning workspace"

Switching Between Workspaces

# List available workspaces (default: 10, max: 50)
list_workspaces()
list_workspaces(limit=20)

# Resume a specific workspace
resume_workspace(workspace_id="developer")
# OR natural language
"Resume developer workspace"

Searching Conversations

# Search within a workspace using FTS5
search_memory_by_workspace(workspace_id="Python_learning", query="list")

# OR natural language: "Did I mention lists in the current workspace?"

# Get all conversations from a workspace
search_memory_by_workspace(workspace_id="Python_learning", query="")

Maintenance

# Check storage usage and statistics
get_storage_stats()

# Clean up old workspaces (default: 30 days)
cleanup_old_workspaces(confirm=true)
cleanup_old_workspaces(days=60, confirm=true)

# Delete specific workspace
delete_workspace(workspace_id="backend_development", confirm=true)

 
# Show usage instructions
q_workspace_help()

Natural Language Support

The server supports natural language commands in both English and Korean:

# English
"start backend_development workspace"
"resume Python_learning workspace"
"show me all workspaces"

# Korean
"λ°±μ—”λ“œκ°œλ°œ μ›Œν¬μŠ€νŽ˜μ΄μŠ€λ‘œ μ‹œμž‘ν•΄μ€˜"
"Python_ν•™μŠ΅ μ›Œν¬μŠ€νŽ˜μ΄μŠ€λ‘œ μž¬κ°œν•΄μ€˜"
"μ›Œν¬μŠ€νŽ˜μ΄μŠ€ λͺ©λ‘ λ³΄μ—¬μ€˜"

Usage Tips

  1. Workspace Organization: Use descriptive names for workspaces to easily identify them later
  2. Search Strategy: Use specific keywords rather than general terms for better FTS5 search results
  3. Regular Maintenance: Periodically clean up old workspaces to maintain performance
  4. Context Restoration: Use resume_workspace to restore full conversation context
  5. Natural Language: Use natural language commands for easier interaction

Advantages of SQLite + FTS5

  • ⚑ Instant startup - No embedding model loading required
  • πŸ” Fast search - Native FTS5 full-text search capabilities
  • πŸ’Ύ Reliable storage - Battle-tested SQLite database
  • πŸ”„ Real-time sync - Immediate Q CLI integration
  • πŸ“Š Simple queries - Standard SQL operations
  • πŸš€ No dependencies - Self-contained solution

License

MIT License

Links


Q Workspace MCP Server (ν•œκ΅­μ–΄)

Amazon Q CLIλ₯Ό μœ„ν•œ λŒ€ν™” μ›Œν¬μŠ€νŽ˜μ΄μŠ€ 관리 κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” Model Context Protocol (MCP) μ„œλ²„μž…λ‹ˆλ‹€. SQLite + FTS5λ₯Ό μ‚¬μš©ν•˜μ—¬ λΉ λ₯΄κ³  μ•ˆμ •μ μΈ μ €μž₯ 및 검색을 μ œκ³΅ν•©λ‹ˆλ‹€.

μ£Όμš” κΈ°λŠ₯

  • μžλ™ λŒ€ν™” μ €μž₯: Q CLI λŒ€ν™”λ₯Ό SQLite λ°μ΄ν„°λ² μ΄μŠ€μ— μ‹€μ‹œκ°„ 동기화
  • μ›Œν¬μŠ€νŽ˜μ΄μŠ€ 관리: 주제/μ›Œν¬μŠ€νŽ˜μ΄μŠ€λ³„λ‘œ λŒ€ν™” 정리 (μžμ—°μ–΄ 지원)
  • μ›Œν¬μŠ€νŽ˜μ΄μŠ€ 볡원: 이전 λŒ€ν™”μ˜ 전체 μ»¨ν…μŠ€νŠΈμ™€ ν•¨κ»˜ 재개
  • μ „λ¬Έ 검색: SQLite FTS5λ₯Ό μ‚¬μš©ν•œ λŒ€ν™” 기둝 검색
  • Q CLI LLM 톡합: Q CLI의 λ‚΄μž₯ LLM을 μ‚¬μš©ν•œ μ§€λŠ₯적 λŒ€ν™” μš”μ•½

λΉ λ₯Έ μ‹œμž‘

1. MCP μ„€μ •

~/.aws/amazonq/mcp.json에 μΆ”κ°€:

macOS의 경우:

{
  "mcpServers": {
    "q-workspace": {
      "command": "uvx",
      "args": ["q-workspace-mcp-server@latest"],
      "env": {
        "Q_CLI_DB_PATH": "~/Library/Application Support/amazon-q/data.sqlite3",
        "Q_WORKSPACE_VERBOSE": "true"
      },
      "disabled": false 
    }
  }
}

Windows의 경우: λ¨Όμ € Q CLI λ°μ΄ν„°λ² μ΄μŠ€ 경둜λ₯Ό μ°ΎμœΌμ„Έμš”:

where /r %USERPROFILE% data.sqlite3

찾은 경둜λ₯Ό 섀정에 μ‚¬μš©ν•˜μ„Έμš”:

{
  "mcpServers": {
    "q-workspace": {
      "command": "uvx",
      "args": ["q_workspace_mcp_server@latest"],
      "env": {
        "Q_CLI_DB_PATH": "C:\\Users\\μ‚¬μš©μžλͺ…\\AppData\\Local\\amazon-q\\data.sqlite3",
        "Q_WORKSPACE_VERBOSE": "true"
      },
      "disabled": false 
    }
  }
}

2. μ‚¬μš© μ˜ˆμ‹œ

# Q CLI μ‹œμž‘
q chat

# μƒˆ μ›Œν¬μŠ€νŽ˜μ΄μŠ€ μ‹œμž‘
start_workspace(description="λ°±μ—”λ“œκ°œλ°œ")
# λ˜λŠ” μžμ—°μ–΄: "λ°±μ—”λ“œκ°œλ°œ μ›Œν¬μŠ€νŽ˜μ΄μŠ€λ‘œ μ‹œμž‘ν•΄μ€˜"

# 일반적으둜 λŒ€ν™” (μžλ™ μ €μž₯됨)
# ... λŒ€ν™” μ§„ν–‰ ...

# μ›Œν¬μŠ€νŽ˜μ΄μŠ€ λͺ©λ‘ 보기
list_workspaces()

# μ›Œν¬μŠ€νŽ˜μ΄μŠ€ 재개 (전체 μ»¨ν…μŠ€νŠΈ λ‘œλ“œ)
resume_workspace(workspace_id="λ°±μ—”λ“œκ°œλ°œ")
# λ˜λŠ” μžμ—°μ–΄: "λ°±μ—”λ“œκ°œλ°œ μ›Œν¬μŠ€νŽ˜μ΄μŠ€λ‘œ μž¬κ°œν•΄μ€˜"

# λ‹€λ₯Έ μ›Œν¬μŠ€νŽ˜μ΄μŠ€λ‘œ μ „ν™˜
resume_workspace(workspace_id="ν”„λ‘ νŠΈκ°œλ°œ")
# λ˜λŠ” μžμ—°μ–΄: "ν”„λ‘ νŠΈκ°œλ°œ μ›Œν¬μŠ€νŽ˜μ΄μŠ€λ‘œ μž¬κ°œν•΄μ€˜"

# λŒ€ν™” 검색
search_memory_by_workspace(workspace_id="λ°±μ—”λ“œκ°œλ°œ", query="API 섀계")
# λ˜λŠ” μžμ—°μ–΄: "API 섀계에 λŒ€ν•΄μ„œ 뭐라고 λ§ν–ˆμ—ˆλŠ”κ°€?"

μ‚¬μš© κ°€λŠ₯ν•œ 도ꡬ

도ꡬ섀λͺ…
q_workspace_help()μ‚¬μš©λ²• μ•ˆλ‚΄ ν‘œμ‹œ
start_workspace(description)μžλ™ 동기화와 ν•¨κ»˜ μƒˆ μ›Œν¬μŠ€νŽ˜μ΄μŠ€ μ‹œμž‘
list_workspaces(limit=10)λͺ¨λ“  μ›Œν¬μŠ€νŽ˜μ΄μŠ€ λͺ©λ‘ (κΈ°λ³Έ: 10개, μ΅œλŒ€: 50개)
resume_workspace(workspace_id)전체 μ»¨ν…μŠ€νŠΈμ™€ ν•¨κ»˜ μ›Œν¬μŠ€νŽ˜μ΄μŠ€ 재개
search_memory_by_workspace(workspace_id, query)FTS5λ₯Ό μ‚¬μš©ν•œ λŒ€ν™” 검색
delete_workspace(workspace_id, confirm=true)μ›Œν¬μŠ€νŽ˜μ΄μŠ€μ™€ λͺ¨λ“  λŒ€ν™” μ‚­μ œ
cleanup_old_workspaces(days=30, confirm=true)μ§€μ •λœ μΌμˆ˜λ³΄λ‹€ 였래된 μ›Œν¬μŠ€νŽ˜μ΄μŠ€ 정리
get_storage_stats()μ €μž₯μ†Œ 톡계 및 μ‚¬μš©λŸ‰ 정보 쑰회

기술 μŠ€νƒ

  • SQLite + FTS5: μ™ΈλΆ€ μ˜μ‘΄μ„± μ—†λŠ” λΉ λ₯Έ μ „λ¬Έ 검색
  • μ‹€μ‹œκ°„ 동기화: Q CLI λ°μ΄ν„°λ² μ΄μŠ€μ˜ μƒˆ λŒ€ν™” λͺ¨λ‹ˆν„°λ§
  • Q CLI LLM 톡합: Q CLI의 λ‚΄μž₯ LLM을 μ‚¬μš©ν•œ μ§€λŠ₯적 μš”μ•½
  • MCP ν”„λ‘œν† μ½œ: Amazon Qμ™€μ˜ ν‘œμ€€ 톡신

데이터 μ €μž₯

  • λ°μ΄ν„°λ² μ΄μŠ€: ~/.Q_workspace/conversations.db
  • 둜그: ~/.Q_workspace/operations.log

μžλ™ 동기화 κΈ°λŠ₯

Q CLI λŒ€ν™”κ°€ SQLite에 μ‹€μ‹œκ°„μœΌλ‘œ μžλ™ μ €μž₯λ©λ‹ˆλ‹€:

  • μ‹€μ‹œκ°„ 감지: Q CLI λ°μ΄ν„°λ² μ΄μŠ€μ˜ μƒˆ λŒ€ν™” λͺ¨λ‹ˆν„°λ§
  • μ¦‰μ‹œ 동기화: μƒˆ λŒ€ν™”κ°€ λ‚˜νƒ€λ‚˜λ©΄ μ¦‰μ‹œ 처리
  • λ°±κ·ΈλΌμš΄λ“œ 처리: λ…ΌλΈ”λ‘œν‚Ή 동기화
  • μƒνƒœ 볡ꡬ: μž¬μ‹œμž‘ 후에도 동기화 μƒνƒœ μœ μ§€

μ›Œν¬μŠ€νŽ˜μ΄μŠ€ 관리

μ›Œν¬μŠ€νŽ˜μ΄μŠ€ 생성

# μƒˆ μ›Œν¬μŠ€νŽ˜μ΄μŠ€ μ‹œμž‘
start_workspace(description="Python_ν•™μŠ΅")
# λ˜λŠ” μžμ—°μ–΄
"Python_ν•™μŠ΅ μ›Œν¬μŠ€νŽ˜μ΄μŠ€λ‘œ μ‹œμž‘ν•΄μ€˜"

μ›Œν¬μŠ€νŽ˜μ΄μŠ€ κ°„ μ „ν™˜

# μ‚¬μš© κ°€λŠ₯ν•œ μ›Œν¬μŠ€νŽ˜μ΄μŠ€ λͺ©λ‘ (κΈ°λ³Έ: 10개, μ΅œλŒ€: 50개)
list_workspaces()
list_workspaces(limit=20)

# νŠΉμ • μ›Œν¬μŠ€νŽ˜μ΄μŠ€ 재개
resume_workspace(workspace_id="개발자")
# λ˜λŠ” μžμ—°μ–΄
"개발자 μ›Œν¬μŠ€νŽ˜μ΄μŠ€λ‘œ μž¬κ°œν•΄"

λŒ€ν™” 검색

# FTS5λ₯Ό μ‚¬μš©ν•œ μ›Œν¬μŠ€νŽ˜μ΄μŠ€ λ‚΄ 검색
search_memory_by_workspace(workspace_id="Python_ν•™μŠ΅", query="리슀트")

# λ˜λŠ” μžμ—°μ–΄: "ν˜„μž¬ μ›Œν¬μŠ€νŽ˜μ΄μŠ€μ—μ„œ λ‚΄κ°€ 리슀트λ₯Ό λ§ν•œμ μ΄ μžˆμ—ˆλŠ”κ°€?"

# μ›Œν¬μŠ€νŽ˜μ΄μŠ€μ˜ λͺ¨λ“  λŒ€ν™” 쑰회
search_memory_by_workspace(workspace_id="Python_ν•™μŠ΅", query="")

μœ μ§€λ³΄μˆ˜

# μ €μž₯μ†Œ μ‚¬μš©λŸ‰ 및 톡계 확인
get_storage_stats()

# 였래된 μ›Œν¬μŠ€νŽ˜μ΄μŠ€ 정리 (κΈ°λ³Έ: 30일)
cleanup_old_workspaces(confirm=true)
cleanup_old_workspaces(days=60, confirm=true)

# νŠΉμ • μ›Œν¬μŠ€νŽ˜μ΄μŠ€ μ‚­μ œ
delete_workspace(workspace_id="λ°±μ—”λ“œκ°œλ°œ", confirm=true)


# μ‚¬μš©λ²• μ•ˆλ‚΄ ν‘œμ‹œ
q_workspace_help()

μžμ—°μ–΄ 지원

μ„œλ²„λŠ” μ˜μ–΄μ™€ ν•œκ΅­μ–΄ μžμ—°μ–΄ λͺ…령을 λͺ¨λ‘ μ§€μ›ν•©λ‹ˆλ‹€:

# μ˜μ–΄
"start backend_development workspace"
"resume Python_learning workspace"
"show me all workspaces"

# ν•œκ΅­μ–΄
"λ°±μ—”λ“œκ°œλ°œ μ›Œν¬μŠ€νŽ˜μ΄μŠ€λ‘œ μ‹œμž‘ν•΄μ€˜"
"Python_ν•™μŠ΅ μ›Œν¬μŠ€νŽ˜μ΄μŠ€λ‘œ μž¬κ°œν•΄μ€˜"
"μ›Œν¬μŠ€νŽ˜μ΄μŠ€ λͺ©λ‘ λ³΄μ—¬μ€˜"

μ‚¬μš© 팁

  1. μ›Œν¬μŠ€νŽ˜μ΄μŠ€ 정리: λ‚˜μ€‘μ— μ‰½κ²Œ 식별할 수 μžˆλ„λ‘ μ›Œν¬μŠ€νŽ˜μ΄μŠ€μ— μ„€λͺ…적인 이름 μ‚¬μš©
  2. 검색 μ „λž΅: 더 λ‚˜μ€ FTS5 검색 κ²°κ³Όλ₯Ό μœ„ν•΄ 일반적인 μš©μ–΄λ³΄λ‹€ ꡬ체적인 ν‚€μ›Œλ“œ μ‚¬μš©
  3. μ •κΈ° μœ μ§€λ³΄μˆ˜: μ„±λŠ₯ μœ μ§€λ₯Ό μœ„ν•΄ 주기적으둜 였래된 μ›Œν¬μŠ€νŽ˜μ΄μŠ€ 정리
  4. μ»¨ν…μŠ€νŠΈ 볡원: 전체 λŒ€ν™” μ»¨ν…μŠ€νŠΈ 볡원을 μœ„ν•΄ resume_workspace μ‚¬μš©
  5. μžμ—°μ–΄: 더 μ‰¬μš΄ μƒν˜Έμž‘μš©μ„ μœ„ν•΄ μžμ—°μ–΄ λͺ…λ Ή μ‚¬μš©

SQLite + FTS5의 μž₯점

  • ⚑ μ¦‰μ‹œ μ‹œμž‘ - μž„λ² λ”© λͺ¨λΈ λ‘œλ”© λΆˆν•„μš”
  • πŸ” λΉ λ₯Έ 검색 - λ„€μ΄ν‹°λΈŒ FTS5 μ „λ¬Έ 검색 κΈ°λŠ₯
  • πŸ’Ύ μ•ˆμ •μ μΈ μ €μž₯ - κ²€μ¦λœ SQLite λ°μ΄ν„°λ² μ΄μŠ€
  • πŸ”„ μ‹€μ‹œκ°„ 동기화 - μ¦‰μ‹œ Q CLI 톡합
  • πŸ“Š κ°„λ‹¨ν•œ 쿼리 - ν‘œμ€€ SQL μž‘μ—…
  • πŸš€ μ˜μ‘΄μ„± μ—†μŒ - 자체 μ™„κ²°ν˜• μ†”λ£¨μ…˜

λΌμ΄μ„ μŠ€

MIT License

링크