jikang-jeong/aws-q-workspace-mcp-server
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
Tool | Description |
---|---|
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
- Workspace Organization: Use descriptive names for workspaces to easily identify them later
- Search Strategy: Use specific keywords rather than general terms for better FTS5 search results
- Regular Maintenance: Periodically clean up old workspaces to maintain performance
- Context Restoration: Use
resume_workspace
to restore full conversation context - 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
- PyPI: https://pypi.org/project/q_workspace_mcp_server/
- GitHub: https://github.com/jikang-jeong/aws-q-workspace-mcp-server
- Issues: https://github.com/jikang-jeong/aws-q-workspace-mcp-server/issues
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_νμ΅ μν¬μ€νμ΄μ€λ‘ μ¬κ°ν΄μ€"
"μν¬μ€νμ΄μ€ λͺ©λ‘ 보μ¬μ€"
μ¬μ© ν
- μν¬μ€νμ΄μ€ μ 리: λμ€μ μ½κ² μλ³ν μ μλλ‘ μν¬μ€νμ΄μ€μ μ€λͺ μ μΈ μ΄λ¦ μ¬μ©
- κ²μ μ λ΅: λ λμ FTS5 κ²μ κ²°κ³Όλ₯Ό μν΄ μΌλ°μ μΈ μ©μ΄λ³΄λ€ ꡬ체μ μΈ ν€μλ μ¬μ©
- μ κΈ° μ μ§λ³΄μ: μ±λ₯ μ μ§λ₯Ό μν΄ μ£ΌκΈ°μ μΌλ‘ μ€λλ μν¬μ€νμ΄μ€ μ 리
- 컨ν
μ€νΈ 볡μ: μ 체 λν 컨ν
μ€νΈ 볡μμ μν΄
resume_workspace
μ¬μ© - μμ°μ΄: λ μ¬μ΄ μνΈμμ©μ μν΄ μμ°μ΄ λͺ λ Ή μ¬μ©
SQLite + FTS5μ μ₯μ
- β‘ μ¦μ μμ - μλ² λ© λͺ¨λΈ λ‘λ© λΆνμ
- π λΉ λ₯Έ κ²μ - λ€μ΄ν°λΈ FTS5 μ λ¬Έ κ²μ κΈ°λ₯
- πΎ μμ μ μΈ μ μ₯ - κ²μ¦λ SQLite λ°μ΄ν°λ² μ΄μ€
- π μ€μκ° λκΈ°ν - μ¦μ Q CLI ν΅ν©
- π κ°λ¨ν 쿼리 - νμ€ SQL μμ
- π μμ‘΄μ± μμ - μ체 μκ²°ν μ루μ
λΌμ΄μ μ€
MIT License