npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

turfpal-mcp

v1.0.7

Published

Turfpal MCP server for Claude Desktop, Cursor, and other MCP clients

Readme

turfpal-mcp

Connect Turfpal to Claude Desktop, Cursor, and other MCP-compatible AI tools.

Turfpal is a turf management platform for greenkeepers, groundskeepers, and sports turf professionals. This MCP server gives AI assistants full access to your Turfpal organization data.

Quick Start

1. Create an API key

Go to Turfpal Settings > API Keys and create a key with mcp:access scope (plus any read/write scopes you need).

2. Add to Claude Desktop

Add this to your claude_desktop_config.json:

Windows: %APPDATA%\Claude\claude_desktop_config.json Mac: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "turfpal": {
      "command": "npx",
      "args": ["-y", "turfpal-mcp"],
      "env": {
        "TURFPAL_API_KEY": "tp_live_your_key_here"
      }
    }
  }
}

3. Restart Claude Desktop

Quit completely (system tray) and reopen. Turfpal will appear as a connected MCP server.

What you can do

Ask Claude things like:

  • "List my tasks for today"
  • "Create a mowing task for Steffen at all greens, 2pm-3pm"
  • "What equipment do we have?"
  • "Show me low stock items"
  • "Create an observation for disease on fairway 7"
  • "Who's on the team?"

Tools (42)

Discovery

| Tool | Description | |------|-------------| | list_activity_templates | List org-specific + system activity templates. Call this before create_task so the new task inherits icon, color, category, duration, priority, checklists, custom-field defaults, and PPE/cert requirements from the template. | | list_zone_types | List the distinct zone types in the org (e.g. green, fairway, tee, rough) with a count for each. Use the returned zoneType value with create_task for "all greens" / "all fairways" style targeting. |

Query & Search

| Tool | Description | |------|-------------| | list_tasks | List tasks with date, status, priority, category, member, and site filters | | get_task | Full task details by ID | | search_tasks | Search tasks by title | | list_equipment | List equipment with type, category, and status filters | | get_equipment | Equipment details with recent fuel, maintenance, and usage logs | | search_equipment | Search equipment by make, model, tag, or serial number | | list_members | List members with role and status filters | | search_members | Search members by name or email | | list_products | List inventory products with type and search filters | | get_product | Product details with stock levels across all warehouses | | search_products | Search products by name, SKU, or barcode | | list_stock | Stock levels with low-stock alerts | | list_observations | List observations with status, severity, and date filters | | get_observation | Full observation details by ID | | list_sites | Sites with nested areas and zones | | search_sites | Search locations, areas, and zones by name. Returns _type: 'location' for top-level matches — pass the id as locationId (not siteId) on create_task. |

Create & Manage

| Tool | Description | |------|-------------| | create_task | Create a task. Pre-flight: list_activity_templates → pick an activityTemplateIdsearch_sites for locationIdlist_zone_types if the user references "all greens" → set zoneType (mutually exclusive with zoneId). Times are interpreted in the org timezone unless an explicit Z or +HH:MM offset is provided. When the linked template has weatherDependent=true, the response includes a weatherWarnings field with the forecast check result. | | update_task | Update task status, priority, assignments, schedule, location, or weather targeting. Same timezone + zoneType rules as create_task. | | assign_task | Assign members to a task | | delete_task | Delete a task | | create_equipment | Add new equipment | | update_equipment | Update equipment details | | delete_equipment | Remove equipment | | create_site | Add a new site/location | | update_site | Update site details | | delete_site | Remove a site | | create_product | Add an inventory product | | update_product | Update product details | | delete_product | Remove a product | | create_observation | Log a field observation | | delete_observation | Remove an observation | | invite_member | Add a team member | | update_member | Update member role/status | | delete_member | Remove a member | | log_fuel | Log equipment fuel usage | | log_maintenance | Log equipment maintenance | | trigger_workflow | Start a workflow instance | | generate_report | Generate a report | | create_emission_record | Log CO2 emissions | | semantic_search | AI-powered search across all organization data |

Resources (29)

Read-only data accessible by AI assistants:

  • Organization info, stats, children, teams
  • Tasks (list + detail)
  • Equipment (list + detail + fuel/maintenance/usage logs)
  • Members, Sites, Observations
  • Inventory (warehouses, products, stock)
  • Workflows (templates + instances)
  • Reports (templates + instances)
  • Emissions (records, factors, targets, summary)
  • Playbook sections

Environment Variables

| Variable | Required | Default | Description | |---|---|---|---| | TURFPAL_API_KEY | Yes | - | Your Turfpal API key (tp_live_ or tp_test_ prefix) | | TURFPAL_API_URL | No | https://turfpal-app-production.up.railway.app | Custom server URL |

How it works

This package is a lightweight stdio-to-HTTP bridge. Claude Desktop communicates via stdin/stdout, and this bridge forwards JSON-RPC messages to Turfpal's MCP endpoint. No dependencies required beyond Node.js 18+.

License

Proprietary. Copyright (c) Turfpal. All rights reserved.

This package is available exclusively to paying Turfpal subscribers. Redistribution and modification are not permitted.