runn-mcp-server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@runn-mcp-serverlist all projects"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
runn.io MCP Server
Standalone MCP server for the Runn API with simple reporting helpers.
Requirements
Python 3.10+
Runn API key (
RUNN_API_KEY)
Related MCP server: atest-mcp-server
Install
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txtWindows (PowerShell)
py -m venv .venv
.\\.venv\\Scripts\\Activate.ps1
py -m pip install --upgrade pip
pip install -r requirements.txtWindows (Command Prompt)
py -m venv .venv
.\\.venv\\Scripts\\activate.bat
py -m pip install --upgrade pip
pip install -r requirements.txtmacOS (zsh/bash: Homebrew + venv)
brew install python@3.11
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txtRun (MCP server)
stdio (Claude Desktop)
RUNN_API_KEY=LIVE_... python3 mcp_runn_server.py --transport stdiostdio (Windows PowerShell)
$env:RUNN_API_KEY="LIVE_..."
py mcp_runn_server.py --transport stdiostdio (macOS / zsh)
RUNN_API_KEY=LIVE_... python3 mcp_runn_server.py --transport stdiostreamable-http (default)
RUNN_API_KEY=LIVE_... python3 mcp_runn_server.py --transport streamable-httpstreamable-http (Windows PowerShell)
$env:RUNN_API_KEY="LIVE_..."
py mcp_runn_server.py --transport streamable-httpstreamable-http (macOS / zsh)
RUNN_API_KEY=LIVE_... python3 mcp_runn_server.py --transport streamable-httpRun with Docker
Build the image:
docker build -t runn-mcp-server .Windows PowerShell
docker build -t runn-mcp-server .Run the container (HTTP transport):
docker run --rm -e RUNN_API_KEY=LIVE_... -p 8000:8000 runn-mcp-serverWindows PowerShell
docker run --rm -e RUNN_API_KEY=LIVE_... -p 8000:8000 runn-mcp-servermacOS (Docker Desktop)
docker run --rm -e RUNN_API_KEY=LIVE_... -p 8000:8000 runn-mcp-serverGHCR image
The GitHub Actions workflow publishes to:
ghcr.io/gemini2026/runn-mcp-serverPull and run:
docker pull ghcr.io/gemini2026/runn-mcp-server:main
docker run --rm -e RUNN_API_KEY=LIVE_... -p 8000:8000 ghcr.io/gemini2026/runn-mcp-server:mainWindows PowerShell
docker pull ghcr.io/gemini2026/runn-mcp-server:main
docker run --rm -e RUNN_API_KEY=LIVE_... -p 8000:8000 ghcr.io/gemini2026/runn-mcp-server:mainmacOS (Docker Desktop)
docker pull ghcr.io/gemini2026/runn-mcp-server:main
docker run --rm -e RUNN_API_KEY=LIVE_... -p 8000:8000 ghcr.io/gemini2026/runn-mcp-server:mainClaude Desktop config snippet
{
"mcpServers": {
"runn": {
"command": "/path/to/python3",
"args": [
"/path/to/mcp_runn_server.py",
"--transport",
"stdio"
],
"env": {
"RUNN_API_KEY": "<YOUR_API_KEY>"
}
}
}
}Windows paths example
{
"mcpServers": {
"runn": {
"command": "C:\\\\Python311\\\\python.exe",
"args": [
"C:\\\\path\\\\to\\\\mcp_runn_server.py",
"--transport",
"stdio"
],
"env": {
"RUNN_API_KEY": "<YOUR_API_KEY>"
}
}
}
}MCP tools
list_projects— returns{id, name}pairs.list_people— returns{id, name, email}by default (setfull=truefor raw objects).billable_hours— aggregates billable hours grouped by project/person/month.list_clients— list clients (raw API objects).list_assignments— list assignments (raw API objects).list_assignments_by_person— assignments for a person, optional date range.list_assignments_by_project— assignments for a project, optional date range.list_assignments_by_role— assignments for a role, optional date range.list_assignments_by_team— assignments for a team’s people, optional date range.list_actuals— list actuals (raw API objects).list_actuals_by_date_range— actuals in a date range, optional person/project filters.list_actuals_by_person— actuals for a person, optional date range.list_actuals_by_project— actuals for a project, optional date range.list_actuals_by_role— actuals for a role, optional date range.list_actuals_by_team— actuals for a team’s people, optional date range.list_roles— list roles (raw API objects).list_roles_by_person— roles that include a person.list_skills— list skills (raw API objects).list_skills_by_person— skills for a person with levels + names.list_teams— list teams (raw API objects).list_people_by_team— people in a team (optionally include archived).list_people_by_skill— people who have a skill (optional min level).list_people_by_tag— people with a tag (by id or name).list_people_by_manager— people managed by a manager id.list_rate_cards— list rate cards (raw API objects).list_rate_cards_by_project— rate cards that include a project.runn_request— call any Runn API endpoint (GET/POST/PATCH/PUT/DELETE).
Pagination for list endpoints:
{
"method": "GET",
"path": "/projects",
"paginate": true
}Filter-specific tools (e.g., list_assignments_by_person) fetch list endpoints and apply filters client-side.
Usage examples
HTTP transport (streamable-http)
Start the server:
RUNN_API_KEY=LIVE_... python3 mcp_runn_server.py --transport streamable-httpInvoke a specific tool via HTTP:
curl -s http://localhost:8000/api \ -H "Content-Type: application/json" \ -d '{ "tool": "list_actuals_by_person", "args": { "person_id": 123, "start": "2025-01-01", "end": "2025-01-31" } }' | jqGo straight to the raw Runn API:
curl -s http://localhost:8000/api \ -H "Content-Type: application/json" \ -d '{ "tool": "runn_request", "args": { "method": "GET", "path": "/projects" } }' | jq
stdio transport (Claude/Desktop or script)
printf '{"tool":"list_projects"}' | RUNN_API_KEY=LIVE_... python3 mcp_runn_server.py --transport stdioClaude will read the JSON response from stdout, just like any MCP client.
Docker usage
docker run --rm -e RUNN_API_KEY=LIVE_... -p 8000:8000 runn-mcp-serverConnect via the HTTP examples above or switch to stdio by appending --transport stdio on the Docker command.
Reports (optional)
runn_reports.py can export billable hours grouped by project/person/month.
RUNN_API_KEY=LIVE_... python3 runn_reports.py --start 2025-01-01 --end 2025-12-31 --output billable.csvPDF output requires ReportLab:
python -m pip install reportlabCI/CD
CI runs on every push and pull request to
main.CD publishes a GitHub Release when you push a tag like
v0.1.0.
Example release:
git tag v0.1.0
git push origin v0.1.0This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/gemini2026/runn-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server