Skip to main content

locan-tools

locan (CLI) and locan-mcp (MCP server) — local SEO tools for Google Business Profiles, on top of the Locan API.

Both are thin HTTP clients: no Google Places or LLM keys live on your machine. Point them at the hosted API or at your own self-hosted Locan instance.

Install

uvx --from locan-tools locan find-business "dentist kaunas"   # run without installing
pipx install locan-tools                               # isolated install
pip install locan-tools                                # into the current environment

Requires Python 3.11 or newer.

Commands

locan find-business "dentist kaunas"
locan gbp-audit --business-name "Smile Dental" --city Kaunas
locan gbp-categories --place-id PLACE_ID --keyword "dentist kaunas" --keyword "teeth whitening"
locan rank-grid --place-id PLACE_ID --keyword "dentist" --grid-size 5 --spacing-km 1
locan ai-visibility --business-name "Smile Dental" --city Kaunas --category dentist
locan review-reply --business-name "Smile Dental" --review-text "Friendly staff, no waiting." --rating 5
locan review-link PLACE_ID
locan schema-jsonld PLACE_ID
Command What it does
find-business Looks a business up on Google and prints candidate placeIds — start here.
gbp-audit Scores a public Google Business Profile and adds AI suggestions. Identify the business with --place-id, --business-name + --city, or --gbp-url.
gbp-categories Compares your categories with the competitors ranking for your keywords. Repeat --keyword for up to 10 keywords.
rank-grid Google Maps rankings for one keyword across a grid of nearby locations. --grid-size 3 or 5, --spacing-km 0.5, 1 or 2.
ai-visibility How often AI assistants name the business for local buyer queries.
review-reply Three public replies to a Google review, plus handling tips. --rating 1 to 5.
review-link The direct Google review link for a place id. Runs locally, no API call.
schema-jsonld LocalBusiness JSON-LD built from the business's Google profile.

Every command prints JSON to stdout. Add --pretty before the command name for a compact table instead:

locan --pretty find-business "dentist kaunas"

API errors are printed to stderr as error: <message> (<code>) and exit with status 1.

Self-hosting

LOCAN_API_URL selects the API. It defaults to https://api.locan.ai/api; point it at your own instance to skip the hosted limits:

export LOCAN_API_URL=http://localhost:8080/api
locan find-business "dentist kaunas"

MCP server

locan-mcp exposes the same eight tools (find_business, gbp_audit, gbp_categories, rank_grid, ai_visibility, review_reply, review_link, schema_jsonld) to MCP clients over stdio.

Claude Code:

claude mcp add locan -- uvx --from locan-tools locan-mcp

Claude Desktop / Cursor:

{
  "mcpServers": {
    "locan": {
      "command": "uvx",
      "args": ["--from", "locan-tools", "locan-mcp"],
      "env": { "LOCAN_API_URL": "https://api.locan.ai/api" }
    }
  }
}

Streamable HTTP instead of stdio:

locan-mcp --http --port 8765

Cost and limits

The tools call Google Places and AI models through the Locan API, so they are not free to run. rank-grid is the most expensive: one Places request per grid cell, 25 for a 5×5 grid. Daily limits apply on the hosted API; self-host for unlimited runs.

License

AGPL-3.0-only. The full text is in LICENSE next to pyproject.toml (and at the repository root of the public repo).

Metadata

Release files for locan-tools 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for locan-tools 0.1.0
File Size Uploaded Provenance Actions
locan_tools-0.1.0.tar.gz 28.8 kB Without provenance Details for locan_tools-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for locan-tools 0.1.0
File Interpreter ABI Platform Actions
locan_tools-0.1.0-py3-none-any.whl Python 3 none any Details for locan_tools-0.1.0-py3-none-any.whl

Total release size: 53.2 kB

Release files / locan_tools-0.1.0.tar.gz

Download URL locan_tools-0.1.0.tar.gz
Size 28.8 kB
Tags Source
SHA-256 checksum
How to use checksums
576865e858f375a2600ac81d653b0c55d47397ecbead7eeadffcc49bcdcfdd75
BLAKE2b-256 checksum
How to use checksums
194155a3921457e8401bb0b595c60c262411b6336246572f6202d0aba1227793
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.12

Release files / locan_tools-0.1.0-py3-none-any.whl

Download URL locan_tools-0.1.0-py3-none-any.whl
Size 24.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2b19f4495659a41ef2dafec1b443ebb0231c11478293a26f49cf29c8610b1304
BLAKE2b-256 checksum
How to use checksums
4c769be24a0cde0cdb131e39082d2cb90fcb1a82f8e32d0959ca1e8fdc855ced
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.12

Security for locan-tools 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page