MCP Task Queue — EC2 + SSE
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
MCP Task Queue — EC2 + SSE
Pure Python MCP setup so Cursor on your laptop works on tasks stored in a Postgres DB on EC2. Cursor talks MCP over SSE/HTTPS to the EC2 MCP server; it never touches Postgres directly.
Architecture
Jira Issue
↓
n8n Workflow (triggered by Jira)
↓ HTTP POST /ingest
EC2: Ingest API (FastAPI) — validates, normalizes, writes to Postgres
↓
EC2: Postgres — tasks table (pending, in_progress, completed, failed)
↑
EC2: MCP Server (SSE) — tools operate on tasks, exposes /mcp/sse
↑ SSE/HTTPS
Laptop: Cursor — configured to connect to EC2 MCP serverRelated MCP server: opencode-mcp
Project layout
app/
__init__.py
config.py # DATABASE_URL, INGEST_TOKEN
database.py # async Postgres task CRUD
ingest_api.py # FastAPI routes: /health, POST /ingest
mcp_server.py # FastMCP with tools (list_tasks, get_task, ...)
mcp_sse.py # SSE transport wiring
ingest_app.py # Entry: uvicorn ingest_app:app
mcp_sse_app.py # Entry: uvicorn mcp_sse_app:app
init_db.py # Create tasks table
env.example # Template for .envInstall
python -m venv .venv
source .venv/bin/activate # Windows: .\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
cp env.example .env
# Edit .env: DATABASE_URL, INGEST_TOKENDatabase migrations
Create the tasks table once:
python init_db.pySchema: id, source, title, instructions, acceptance_criteria (JSONB), file_hints (JSONB), meta (JSONB), status, timestamps (created_at, started_at, completed_at, failed_at, updated_at), completion_note, failure_reason, previous_status.
Run the services
Ingest API (n8n webhook)
uvicorn ingest_app:app --host 0.0.0.0 --port 8787GET /health— health checkPOST /ingest— requires headerX-Ingest-Token: <INGEST_TOKEN>
MCP SSE server (Cursor endpoint)
uvicorn mcp_sse_app:app --host 0.0.0.0 --port 8080GET /health— health checkGET /mcp/sse— MCP SSE endpoint (Cursor connects here)POST /mcp/messages/— MCP message endpoint (used by client after SSE)
Configure Cursor (client)
Configure Cursor on your laptop to talk to the EC2 MCP server over SSE. Copy mcp.json.example to .cursor/mcp.json or add to global MCP settings:
{
"mcpServers": {
"ec2-tasks": {
"url": "https://<YOUR_DOMAIN_OR_IP>/mcp/sse",
"env": {}
}
}
}Replace <YOUR_DOMAIN_OR_IP> with your EC2 hostname or IP. If using a non-standard port, include it: https://example.com:8080/mcp/sse. For local dev: http://localhost:8080/mcp/sse.
Important: Cursor connects to the EC2 MCP server over SSE/HTTPS. EC2 talks to Postgres; Cursor never touches the database.
Rules & work prompt
Edit rules.md in the project root to add rules and instructions the MCP server will include in work prompts. This content is combined with each task and passed to the agent.
MCP prompt
task_work_prompt(task_id)— Returns the full prompt (rules + task) to pass to the agent.Tool
get_work_prompt(task_id)— Same content as JSON for programmatic use.
MCP tools
Tool | Description |
| List tasks (inbox by default; filter by status) |
| Get full task by id |
| Build full prompt (rules + task) for a task id |
| Manually create a task (for testing) |
| Set status to |
| Set status to |
| Set status to |
n8n HTTP Request (Jira → ingest)
Method: POST
URL:
https://<YOUR_EC2>/ingest(or via ngrok / load balancer)Headers:
Content-Type: application/json,X-Ingest-Token: <INGEST_TOKEN>Body: JSON with at least
id,instructions; optionalsource,title,acceptance_criteria,file_hints,meta
EC2 deployment notes
Environment: Set
DATABASE_URLandINGEST_TOKEN(e.g. via.envor systemd env).Processes:
Ingest:
uvicorn ingest_app:app --host 0.0.0.0 --port 8787MCP SSE:
uvicorn mcp_sse_app:app --host 0.0.0.0 --port 8080
Reverse proxy (Nginx):
Proxy
/ingestand/healthto ingest on 8787.Proxy
/mcp/sseand/mcp/messages/to MCP on 8080.Use HTTPS and keep MCP paths under the same origin.
ngrok:
Expose both ports or put a reverse proxy in front and expose one.
Example:
ngrok http 8080for MCP,ngrok http 8787for ingest (separate tunnels).
Ingest behavior
New task → insert as
pending.Existing, status
pendingorin_progress→ return duplicate error (no overwrite).Existing, status
completedorfailed→ upsert as newpendingversion, preserveprevious_status.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Hosted PostgreSQL MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Real-time chat for AI agents. Claude Code, Cursor, Cline and Codex join channels over MCP.
A task list shared by you and your coding agents (Claude Code, Cursor, Codex and any MCP client). Agents plan each task into steps, report live progress to a board, and block on questions you answer from your phone.
Headless task management for bots, apps and AI agents. Remote MCP server, OAuth or access token.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server for managing tasks in Cursor IDE, enabling AI agents to create, update, and comment on tasks via MCP tools, with a kanban dashboard and WebSocket events.1-
- AlicenseNot gradedqualityAmaintenanceConnects MCP clients to OpenCode's headless API so users can delegate coding tasks, ask questions, monitor background work, respond to prompts and permissions, and review changes across projects.23,789 npmMIT
- AlicenseNot gradedqualityAmaintenanceConnects MCP clients such as Claude, Cursor, and VS Code to OpenCode's headless API so users can delegate coding tasks, ask questions, run work in the background, and resolve permission or input requests across projects. It also supports monitoring job progress, reviewing resulting changes, and inspecting conversation history.23,789 npmMIT
- AlicenseNot gradedqualityAmaintenanceConnects MCP clients such as Claude, Cursor, and VS Code to an OpenCode server's headless API so coding work can be delegated, answered, and monitored. It supports asking questions, launching foreground or background jobs, supplying required input and permissions, and reviewing resulting changes across projects.23,789 npmMIT