FocusRoom MCP Server

FocusRoom MCP Server

Enables external clients to manage tasks, memories, daily plans, and productivity reports via HTTP tools, including a natural-language productivity assistant.

Category
Visit Server

README

FocusRoom | Productivity Agent

A personal productivity workspace built with Python, Streamlit, Groq, SQLite, and MCP. It combines task management, daily planning, persistent memories, a multi-agent supervisor, and optional email reminders in one project.

Features

  • Streamlit productivity dashboard
  • Create, list, filter, and complete tasks
  • Task priorities, due dates, projects, and statuses
  • Persistent SQLite storage in productivity.db
  • Daily plans and productivity reports
  • Save and search personal memories
  • Groq-powered productivity assistant
  • Multi-agent supervisor for task, memory, and planning requests
  • MCP server with HTTP tools for external clients
  • Optional automatic email reminders

Requirements

  • Python 3.10 or newer
  • A Groq API key for the AI features
  • Gmail SMTP credentials or another SMTP provider for email reminders

Setup

1. Create a virtual environment

PowerShell:

python -m venv .venv
.\.venv\Scripts\Activate.ps1

If PowerShell blocks script execution for the current session:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned
.\.venv\Scripts\Activate.ps1

2. Install dependencies

python -m pip install -r requirements.txt

3. Configure environment variables

Copy .env.example to .env and fill in the values:

Copy-Item .env.example .env

Required for the Groq-backed agent:

GROQ_API_KEY=your_groq_api_key
GROQ_MODEL=openai/gpt-oss-120b

Optional MCP configuration:

MCP_HOST=127.0.0.1
MCP_PORT=8000
MCP_API_KEY=local_or_remote_api_key

For email reminders:

EMAIL_SENDER=your_email@gmail.com
EMAIL_RECIPIENT=recipient@example.com
EMAIL_PASSWORD=your_smtp_or_app_password
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587

Do not commit .env or API credentials. They are excluded by .gitignore.

Run the Streamlit app

streamlit run streamlit_app.py

The app provides these sections:

  • Overview - task metrics, active work, daily snapshot, and completion progress
  • Tasks - create and filter tasks, then mark tasks complete
  • Plan - view the current daily plan and productivity report
  • Memory - save and search persistent context
  • Assistant - send natural-language requests to the productivity supervisor

Run the MCP server

Start the Streamable HTTP MCP server with:

python -m orchestrator.mcp_server

By default, it runs on http://127.0.0.1:8000/mcp.

The server exposes tools for:

  • productivity_assistant
  • create_task
  • list_tasks
  • update_task
  • complete_task
  • delete_task
  • save_memory
  • search_memory
  • daily_plan
  • productivity_report

When binding the MCP server to a non-local host, set MCP_API_KEY. Remote requests must use a bearer token:

Authorization: Bearer <MCP_API_KEY>

Run reminders

The reminder worker checks upcoming tasks and sends configured email notifications:

python reminder_worker.py

The reminder schedule is configured in the worker and supports reminders at 24 hours, 1 hour, and 15 minutes before a task is due. Email reminders require valid SMTP settings in .env.

Run tests

Use the project virtual environment so pytest is available:

.\.venv\Scripts\python -m pytest -q

To run a specific test file:

.\.venv\Scripts\python -m pytest -q test_multi_agent.py

To check Python syntax without starting the app:

.\.venv\Scripts\python -m compileall streamlit_app.py orchestrator

Project structure

Productivity_Agent/
|-- streamlit_app.py              # Streamlit user interface
|-- requirements.txt              # Python dependencies
|-- .env.example                  # Environment variable template
|-- productivity.db               # Local SQLite database, generated locally
|-- reminder_service.py           # Reminder service implementation
|-- reminder_worker.py            # Continuous reminder worker
|-- orchestrator/
|   |-- agent.py                  # Core task, memory, plan, and report logic
|   |-- database.py               # SQLite persistence layer
|   |-- orchestrator.py           # Multi-agent supervisor
|   |-- mcp_server.py             # MCP HTTP server and tools
|   |-- memory_agent.py           # Memory agent adapter
|   |-- planning_agent.py         # Planning agent adapter
|   |-- task_agent.py             # Task agent adapter
|-- test_*.py                     # Project tests

Data and security notes

  • Tasks and memories are stored locally in SQLite.
  • .env contains secrets and must remain private.
  • For Gmail, use an app password where required instead of your primary account password.
  • The MCP API key is required when the server is exposed beyond localhost.
  • Back up productivity.db if the local task and memory history is important.

Troubleshooting

pytest is not recognized

Run pytest through the virtual environment:

.\.venv\Scripts\python -m pytest -q

The app starts but the assistant is unavailable

Check that .env exists and contains a valid GROQ_API_KEY, then restart Streamlit.

Streamlit reports missing ScriptRunContext

This warning appears when importing a Streamlit module directly with python -c. Start the application with streamlit run streamlit_app.py for normal operation.

Compilation works but tests fail during collection

A collection error means pytest could not finish importing the tests. Read the first reported exception and fix that dependency or constructor mismatch before evaluating the remaining tests.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured