generate_pin_map
Create a point map to visualize the location and distribution of points of interest (POIs) on a map. Use keywords to search for POIs and display their geographic data.
Instructions
Generate a point map to display the location and distribution of point data on the map, such as the location distribution of attractions, hospitals, supermarkets, etc.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | The map title should not exceed 16 characters. The content should be consistent with the information the map wants to convey and should be accurate, rich, creative, and attractive. | |
| data | Yes | A list of keywords for the names of points of interest (POIs) in Chinese. These POIs usually contain a group of places with similar locations, so the names should be more descriptive, must adding attributives to indicate that they are different places in the same area, such as "北京市" is better than "北京", "杭州西湖" is better than "西湖"; in addition, if you can determine that a location may appear in multiple areas, you can be more specific, such as "杭州西湖的苏堤春晓" is better than "苏堤春晓". The tool will use these keywords to search for specific POIs and query their detailed data, such as latitude and longitude, location photos, etc. For example, ["西安钟楼", "西安大唐不夜城", "西安大雁塔"]. | |
| markerPopup | No | Marker type, one is simple mode, which is just an icon and does not require `markerPopup` configuration; the other is image mode, which displays location photos and requires `markerPopup` configuration. Among them, `width`/`height`/`borderRadius` can be combined to realize rectangular photos and square photos. In addition, when `borderRadius` is half of the width and height, it can also be a circular photo. | |
| width | No | Set the width of map, default is 1600. | |
| height | No | Set the height of map, default is 1000. |
Implementation Reference
- src/utils/callTool.ts:70-80 (handler)Handler logic that identifies generate_pin_map as a map chart and executes generateMap to produce the output.const isMapChartTool = [ "generate_district_map", "generate_path_map", "generate_pin_map", ].includes(tool); if (isMapChartTool) { // For map charts, we use the generateMap function, and return the mcp result. const { metadata, ...result } = await generateMap(tool, args); return result; }
- src/utils/generate.ts:55-82 (helper)Helper function that sends the generate_pin_map tool call and input to the external visualization service API.*/ export async function generateMap( tool: string, input: unknown, ): Promise<ResponseResult> { const url = getVisRequestServer(); const response = await axios.post( url, { serviceId: getServiceIdentifier(), tool, input, source: "mcp-server-chart", }, { headers: { "Content-Type": "application/json", }, }, ); const { success, errorMessage, resultObj } = response.data; if (!success) { throw new Error(errorMessage); } return resultObj; }
- src/charts/pin-map.ts:10-29 (schema)Zod schema defining the input parameters for the generate_pin_map tool.const schema = { title: MapTitleSchema, data: POIsSchema, markerPopup: z .object({ type: z.string().default("image").describe('Must be "image".'), width: z.number().default(40).describe("Width of the photo."), height: z.number().default(40).describe("Height of the photo."), borderRadius: z .number() .default(8) .describe("Border radius of the photo."), }) .optional() .describe( "Marker type, one is simple mode, which is just an icon and does not require `markerPopup` configuration; the other is image mode, which displays location photos and requires `markerPopup` configuration. Among them, `width`/`height`/`borderRadius` can be combined to realize rectangular photos and square photos. In addition, when `borderRadius` is half of the width and height, it can also be a circular photo.", ), width: MapWidthSchema, height: MapHeightSchema, };
- src/charts/pin-map.ts:32-41 (registration)Tool registration metadata including name, description, and reference to inputSchema.const tool = { name: "generate_pin_map", description: "Generate a point map to display the location and distribution of point data on the map, such as the location distribution of attractions, hospitals, supermarkets, etc.", inputSchema: zodToJsonSchema(schema), annotations: { title: "Generate Pin Map", readOnlyHint: true, }, };
- src/server.ts:66-68 (registration)MCP server listTools handler that registers all chart tools (including generate_pin_map) for discovery.server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: getEnabledTools().map((chart) => chart.tool), }));