mcp-runrun
MCP server that gives Claude access to Runrun.it tasks, projects, clients, users, boards, and more via the Runrun.it REST API v1.0, including listing, creating, updating, deleting, and time-tracking operations.
README
mcp-runrun
MCP server for Runrun.it — gives Claude access to tasks, projects, clients, users, boards and more via the Runrun.it REST API v1.0.
Requirements
- Python 3.11+
- Runrun.it App-Key and User-Token (Settings → Integrations → API)
Setup
# 1. Create & activate venv
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # Mac/Linux
# 2. Install
pip install -e .
Credentials
Copy .env.example to .env in the project root and fill in your keys:
RUNRUN_APP_KEY=your_app_key
RUNRUN_USER_TOKEN=your_user_token
.env is gitignored — credentials never leave your machine and never go
into Claude's config files.
Configure in Claude
Mac/Linux — register the wrapper script (it loads .env and starts the server):
claude mcp add --scope user runrun -- /path/to/mcp-runrun/run.sh
For the Claude Desktop app, add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"runrun": { "command": "/path/to/mcp-runrun/run.sh" }
}
}
Windows — register run.bat (same idea: loads .env, starts the server).
Add to %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"runrun": { "command": "C:\\mcp-runrun\\run.bat" }
}
}
Security
- Never commit
.env— it is gitignored on purpose. Don't paste real keys into README, issues, commits, or pull requests. - The User-Token acts as your Runrun.it user: anyone with it can read and change tasks on your behalf. Treat it like a password.
- If a token leaks, revoke and regenerate it immediately at Runrun.it → Settings → Integrations → API.
- Each person must use their own User-Token — don't share tokens between teammates (actions are logged as the token's owner).
Available Tools
Performance & filtering notes
Runrun.it task objects are huge (125 fields, ~5.5 KB each). To stay fast and avoid
flooding the model's context, list endpoints (list_tasks, list_projects,
list_users, list_clients) return a concise summary by default plus
pagination metadata (total, has_more, next_page). Pass
detail_level: "full" when you genuinely need every field.
Two distinct people are attached to each task:
- Creator →
user_idfilter ("tasks I created") - Responsible / assignee →
responsible_idfilter ("tasks assigned to me")
For "my cards / tasks I created", use list_my_tasks — it resolves the current
user automatically and filters in a single fast call.
Extracting card content & building spreadsheets
The core workflow ("filter cards → read each card's content → standardized spreadsheet") is served by two tools:
get_task_content— reads ONE card and returns a clean flat record: status, board/stage/project/client/type, creator, responsible, all assignees, dates, time (raw seconds +H:MM:SS), tags, custom fields with human labels resolved (e.g."Área": "Growth"), and the description converted from HTML to plain text (tables → tab-separated cells, lists → bullets, links preserved astext (url)).export_tasks— the workhorse. Same filters aslist_tasks, then extracts a standardized record for every matching card (descriptions fetched in parallel, paging past the 100-per-request API ceiling up tomax_tasks). Passflatten_custom_fields: trueto get onecf: <label>column per custom field plus a deterministiccolumnslist — drop straight into a spreadsheet. Returns pagination metadata (total,capped,capped_by,errors).
Custom fields that share a label across the org are kept distinct (the field id is appended). Rate-limited (429) requests are retried with backoff.
Tools
| Tool | Description |
|---|---|
list_tasks |
List tasks with filters (creator user_id, responsible_id, project, board, status). Summary + pagination |
set_task_fields |
Write custom field values on a task. Keys accept field ids or labels; option labels are resolved to ids automatically; null clears |
list_field_options |
List the selectable options (id + label) of a custom field |
list_my_tasks |
List the authenticated user's own tasks (created or responsible) in one call |
get_task_content |
Read one card → standardized record (description as text, tags, resolved custom fields) |
export_tasks |
Filter + extract every matching card into uniform, spreadsheet-ready rows |
list_boards / get_board |
Discover boards / board IDs for filtering |
get_task |
Get a task by ID |
create_task |
Create a new task. Optional board_id/board_stage_id move it to the right board immediately (the API always creates on the default board) |
update_task |
Update task fields |
delete_task |
Delete a task |
play_task |
Start timer on a task |
pause_task |
Pause timer on a task |
close_task |
Close/complete a task |
reopen_task |
Reopen a closed task |
list_task_comments |
List comments on a task |
add_task_comment |
Add a comment to a task |
list_task_attachments |
List attachments on a task |
list_projects |
List projects |
get_project |
Get a project by ID |
create_project |
Create a project |
update_project |
Update a project |
list_clients |
List clients |
get_client |
Get a client by ID |
create_client |
Create a client |
list_users |
List organization users |
get_user |
Get a user by ID |
get_current_user |
Get the authenticated user |
list_activities |
List activity history |
list_boards |
List boards |
get_board_stages |
Get stages of a board |
list_task_types |
List task types |
list_teams |
List teams |
Authentication
Get your credentials at Runrun.it → Settings → API:
- App-Key: the application key for your organization
- User-Token: the personal token for the acting user
Recommended Servers
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.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
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.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
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.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.