File tree Expand file tree Collapse file tree 3 files changed +50
-2
lines changed
Expand file tree Collapse file tree 3 files changed +50
-2
lines changed Original file line number Diff line number Diff line change 11from . import sdk
22from . import tiles
3+ from . import search
34
45all = [
56 sdk ,
67 tiles ,
8+ search ,
79]
Original file line number Diff line number Diff line change 1010import planet
1111from typing import Union
1212
13-
1413# tools we don't want enabled at all.
1514# they simply don't work well in an AI context.
1615_DEFAULT_IGNORE = {
1918 "data_get_search" ,
2019 "data_get_stats" ,
2120 "data_list_searches" ,
21+ "data_search" ,
2222 "data_update_search" ,
2323 "data_wait_asset" ,
2424 "destinations_patch_destination" ,
3535TOOL_SIG_OVERRIDE = {
3636 "features_add_items" ,
3737 "data_get_item_coverage" ,
38- "data_search" ,
3938 "mosaics_download_quad" ,
4039 "mosaics_download_quads" ,
4140 "mosaics_get_quad" ,
Original file line number Diff line number Diff line change 1+ from datetime import datetime
2+
3+ from fastmcp import FastMCP
4+ from planet import Planet
5+ from planet_mcp import models
6+ from planet_mcp .servers import descriptions
7+
8+ # technically not using the sdk to make the tool but we can add it to that
9+
10+ mcp = FastMCP ("search" )
11+
12+
13+ @mcp .tool (
14+ name = "data_search" ,
15+ description = descriptions .overrides ["data_search" ],
16+ tags = {"data" },
17+ enabled = True ,
18+ )
19+ async def data_search (
20+ item_types : list [str ],
21+ start_date : str ,
22+ end_date : str ,
23+ geometry : models .Geometry ,
24+ ):
25+
26+ planet = Planet ()
27+ start_dt = datetime .fromisoformat (start_date .replace ("Z" , "+00:00" ))
28+ end_dt = datetime .fromisoformat (end_date .replace ("Z" , "+00:00" ))
29+ datefilter = {
30+ "type" : "DateRangeFilter" ,
31+ "field_name" : "acquired" ,
32+ "config" : {"gte" : start_dt .isoformat (), "lte" : end_dt .isoformat ()},
33+ }
34+ cloud_filter = {
35+ "type" : "RangeFilter" ,
36+ "field_name" : "cloud_cover" ,
37+ "config" : {"lte" : 0.2 },
38+ }
39+ filter = {
40+ "type" : "AndFilter" ,
41+ "config" : [datefilter , cloud_filter ],
42+ }
43+ return planet .data .search (
44+ item_types = item_types ,
45+ geometry = dict (geometry ),
46+ search_filter = filter ,
47+ )
You can’t perform that action at this time.
0 commit comments