render_map_tool: intent-based map styling (intent parameter + hints from search results)
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- typescript
- Domain
- api
Research direction
Start by locating render_map_tool and category_search_tool, then read how baseMapConfig, baseStyle, and the mapboxRender payload are built. The issue leaves the intent values and POI filtering behavior open, so first compare the demo’s intent list and investigate whether filtering stays fast during pan and zoom. Done means intent precedence and suggested intents are consistent, with the agreed POI behavior working.
Written by the indexing model from the issue text.
Description
This has come up twice now (most recently from Svetlana, for the connector and to keep it aligned with the OpenAI plugin): make the map's look match what the person is asking about.
Today render_map_tool can already restyle the Standard base map through baseMapConfig (lightPreset, theme, POI label visibility and density, 3D) and baseStyle. In practice models only use it when someone asks outright ("make it night"). If we just told the model to style by intent, every host would turn "find me bars" into a different set of config values, so Claude and ChatGPT wouldn't look the same.
Proposal
1. An intent parameter on render_map_tool. A short enum the model picks from, and the map app turns into Standard config. The model decides what the request is about; our code decides what that looks like, so it's the same on every host. It's one small enum, not a styling guide in the tool description.
Starting point (values to tune, and to line up with the demo if it already has a list):
| intent | Base map config |
|---|---|
nightlife |
lightPreset: night, fewer POI labels |
driving |
road labels on, pedestrian roads off, fewer POI labels (traffic on once #278 lands) |
transit |
transit labels on, theme: faded, fewer POI labels |
outdoors |
pedestrian roads and 3D trees on, fewer POI labels |
food, shopping |
fewer POI labels so our pins stand out |
2. Tool results carry a suggested intent. category_search_tool already knows when the search was for bars or cafes, so its mapboxRender payload can include a suggested intent, and the map applies it with no extra work from the model.
3. Filtering base map content. Standard's config can't filter POIs by category, only show/hide all of them or set density (1 to 5). But the poi featureset has a hide feature state, and its features carry class and group. So the map app can:
- hide the base map's own label for each place we've pinned, so it doesn't sit under our pin twice
- optionally hide POIs whose
classdoesn't match the search, for a "just show me coffee" map (needs re-applying as the map moves, so worth a spike first)
Precedence
Explicit baseMapConfig > intent argument > intent suggested by a payload > defaults (including the night-when-it's-dark idea in #288).
Open questions
- What does the demo do today, and should we copy its intent list?
- Is POI filtering by
classfast enough on pan and zoom to be worth it, or do we stop at hiding our own pinned places?
Related: #288 (night lighting when it's dark), #277 / #278 (traffic), #249 (base map restyling).
- Dominant language
- TypeScript
- Stars
- 363
- Forks
- 45
- Avg merge
- 22h 36m
- Merged PRs (30d)
- 20
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from mapbox/mcp-server
-
Difficulty 5/5 Over a week Newbie friendliness 15/100
mapbox/mcp-server#302 ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 15/100
mapbox/mcp-server#301 ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 15/100
mapbox/mcp-server#300 ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 35/100
mapbox/mcp-server#289 · 2 comments ·
Maintainers usually reply within 1 day
-
render_map_tool: smaller map ideas (isochrone slider, 3D tilt, night lighting, traffic refresh)Openenhancement
Difficulty 4/5 3-5 days Newbie friendliness 42/100
mapbox/mcp-server#288 ·
Maintainers usually reply within 1 day
All issues in mapbox/mcp-server
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
outline/outline#14348 · 1 comment ·
Maintainers usually reply within 1 day
-
bug needs-triage
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
[Bug]: Agent import retains quotes in .env API keys followed by inline commentsPossibly taken @yxr-2025 claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
elie222/rakazo#2322 · 1 comment ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
awslabs/visual-asset-management-system#804 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
dsh-market/dsh-market#1027 · 1 comment ·
Maintainers usually reply within 1 day