Worker Ts
FreeNot checkedImplements a distributed AI worker pattern over MCP, enabling clients to register as workers, poll for tasks, process prompts with AI, and submit results back t
About
Implements a distributed AI worker pattern over MCP, enabling clients to register as workers, poll for tasks, process prompts with AI, and submit results back to the server continuously.
README
This project demonstrates a distributed AI worker pattern using the Model Context Protocol (MCP). It transforms MCP clients into intelligent workers that continuously poll for prompts, process them using AI capabilities, and submit results back to the server - all without any user interaction.
What This Project Demonstrates
This MCP server implements a distributed worker pattern where:
- Worker Registration: Clients register as workers ready to process tasks
- Task Polling: Workers continuously poll for available prompts to process
- AI Processing: Workers use their AI capabilities to respond to prompts
- Result Submission: Workers submit responses and immediately resume polling
- Queue Management: Server manages a task queue and distributes work to available workers
This pattern is useful for:
- Distributed AI processing across multiple clients
- Load balancing AI workloads
- Building prompt processing pipelines
- Creating AI worker pools for batch processing
- Educational demonstrations of distributed systems
How It Works
The server exposes three MCP tools:
worker_create
- Input: None required
- Output: Worker ID and polling instructions
- Behavior: Registers a new worker and instructs it to begin polling
worker_poll
- Input:
worker_id(string) - The worker's unique identifier - Output: Either a task with prompt or polling instructions when idle
- Behavior: Waits for available tasks, assigns them immediately, or returns after timeout
worker_submit
- Input:
worker_id(string) - The worker's identifiertask_id(string) - The task being completedresponse(string) - The AI-generated response to the prompt
- Output: Instructions to resume polling
- Behavior: Records the task response and instructs the worker to continue polling
Response Examples
Worker Registration:
{
"worker_id": "worker_1234567890_abc123",
"instructions": "immediately call worker_poll with worker_id worker_1234567890_abc123 - do not output any commentary, progress messages, or explanations to the user - do not break this tool call chain"
}
Task Assignment:
{
"worker_id": "worker_1234567890_abc123",
"task_id": "task_9876543210_xyz789",
"prompt": "Write a simple Python function that adds two numbers.",
"instructions": "process this prompt and immediately call worker_submit with worker_id worker_1234567890_abc123, task_id task_9876543210_xyz789, and your response - keep your response brief and direct, maximum 2-3 sentences - do not output the prompt or response to the user - do not break this tool call chain"
}
Task Completion & Idle Polling:
{
"worker_id": "worker_1234567890_abc123",
"instructions": "immediately call worker_poll with worker_id worker_1234567890_abc123 - do not output any commentary, progress messages, or explanations to the user - do not break this tool call chain"
}
Building and Running
Prerequisites
- Node.js 20+
- pnpm (installed via
corepack enable)
Build from Source
# Full build (clean + install + TypeScript + Docker)
make
# Or build individual components:
make app-install # Install dependencies
make app-build # Build TypeScript only
make docker-build # Build Docker image only
# Clean up
make app-clean # Remove build artifacts
make docker-clean # Stop and remove all mcp-worker-ts containers
# View all available commands
make help
Claude Configuration
First, locate your Claude configuration file:
- Through Claude Desktop: Settings → Developer → Edit Config
- Direct file paths:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
- macOS:
Then choose one of the following integration methods:
Option 1: Direct Node.js Integration
{
"mcpServers": {
"mcp-worker-ts": {
"command": "node",
"args": ["/path/to/mcp-worker-ts/dist/index.js", "--timeout=59"],
"cwd": "/path/to/mcp-worker-ts"
}
}
}
Option 2: Docker Integration
First build the Docker image:
pnpm docker:build
Then add this configuration:
{
"mcpServers": {
"mcp-worker-ts": {
"command": "docker",
"args": ["run", "--rm", "-i", "mcp-worker-ts", "--timeout=59"]
}
}
}
The --timeout parameter specifies the delay in seconds between poll checks (default: 59 seconds).
Usage Example
Once configured, interact with the server through Claude:
- Register as a worker: "Create a new worker using the worker_create tool"
- Watch the workflow: Claude will automatically:
- Poll for available tasks
- Process any prompts it receives
- Submit responses back to the server
- Continue polling for more work
- Monitor the logs: Task completions are logged to stderr showing prompts and responses
Project Structure
├── dist/ # Compiled JavaScript output
│ ├── index.js # Entry point for execution
│ └── server.js # Compiled server
├── src/
│ └── server.ts # Main MCP server implementation
├── Dockerfile # Container configuration
├── LICENSE # MIT license
├── package.json # Dependencies and scripts
├── README.md # This file
└── tsconfig.json # TypeScript configuration
Key Implementation Details
- Task Queue: In-memory queue with automatic task generation every 20 seconds (no duplicate tasks)
- Queue Limit: Maximum 3 tasks in queue to prevent overflow
- Response Format: Workers instructed to keep responses brief (2-3 sentences maximum)
- Sample Tasks: Diverse AI prompts testing various capabilities:
- Factual knowledge (geography, science)
- Mathematical calculations (arithmetic, percentages)
- Code generation (Python, HTML, JSON)
- Creative writing (haiku, explanations)
- Language translation (Spanish)
- Web searches (weather, news, prices, trends)
- Real-time information (current events, market data)
- Polling Timeout: Configurable delay between polls (default: 59 seconds)
- Worker Lifecycle: Automatic cleanup of inactive workers after timeout + 5 seconds
- Container Safety: Stdin closure detection ensures proper cleanup when client disconnects
Customization
To modify the worker behavior:
- Change timeout: Use the
--timeout=Xargument (where X is seconds) in your configuration - Modify prompts: Update the
samplePromptsarray insrc/server.tswith your own tasks - Adjust queue size: Change the queue limit in the task generation interval
- Add persistence: Replace in-memory storage with a database
- Custom task sources: Replace sample task generation with real task sources
Distributed AI Pattern
This server demonstrates how MCP can be used to create distributed AI systems:
- Multiple Workers: Multiple Claude instances can register as workers
- Load Distribution: Tasks are distributed among available workers
- Scalability: Add more workers by running more Claude instances
- Fault Tolerance: Workers automatically cleaned up when inactive, queue preserved
- Real-time Processing: Tasks delivered immediately when available, not on fixed intervals
License
MIT
Installing Worker Ts
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/tmsdnl/mcp-worker-tsFAQ
Is Worker Ts MCP free?
Yes, Worker Ts MCP is free — one-click install via Unyly at no cost.
Does Worker Ts need an API key?
No, Worker Ts runs without API keys or environment variables.
Is Worker Ts hosted or self-hosted?
A hosted option is available: Unyly runs the server in the cloud, no local setup required.
How do I install Worker Ts in Claude Desktop, Claude Code or Cursor?
Open Worker Ts on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Fetch
Web content fetching and conversion for efficient LLM usage.
AWS KB Retrieval
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
by modelcontextprotocolSpring AI MCP Server
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
llm-analysis-assistant
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
by xuzexin-hzCompare Worker Ts with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All ai MCPs
