Turf-MCP is a Python library that exposes Turf.js geospatial analysis capabilities through the Model Context Protocol (MCP). It provides comprehensive tools for spatial geometry operations using GeoJSON format:
Measurement: Calculate distances, lengths, bearings, areas, centroids, bounding boxes, midpoints, and paths between geographic features
Spatial Aggregation & Clustering: Aggregate point attributes into polygons, perform DBSCAN and K-means clustering for point density analysis
Boolean Operations: Test spatial relationships (containment, crossing, disjointness, equality, overlap, parallelism) and point-in-polygon tests
Coordinate Manipulation: Clean redundant coordinates, flip coordinate order, rewind polygon rings, round and truncate precision
Feature Conversion: Combine, explode, flatten, and convert between line and polygon geometries; polygonize line collections
Grid Generation: Create hexagonal, square, triangular, and point grids within bounding boxes
Spatial Interpolation: Perform inverse distance weighting (IDW), generate isobands, isolines, and create TIN surfaces
Spatial Joins: Find points within polygons and tag points with polygon attributes
Geometric Transformations: Clip, simplify, buffer, create circles and hulls (convex/concave), perform boolean operations (union, intersection, difference), dissolve polygons, tessellate, generate Voronoi diagrams, and apply transformations (rotate, translate, scale)
Miscellaneous: Detect kinks, create arcs and sectors, split/slice/segment lines, mask features, find nearest points, calculate shortest paths, generate Bezier splines
Random Data Generation: Generate random positions, points, lines, and polygons
Unit Conversion: Convert between area/length units, angles (degrees/radians), and coordinate systems (WGS84/Mercator)
Classification: Find nearest points to target locations
All operations use GeoJSON format with WGS84 coordinates [longitude, latitude].

Turf-MCP
基于 Turf.js 构建的地理空间分析 MCP 服务。
简介
Turf-MCP 是一个 Python 库,提供基于 Turf.js 的地理空间分析功能,通过 Model Context Protocol (MCP) 暴露为工具和资源。它支持空间几何图形的测量、空间关系判断、坐标转换与偏移等核心功能。
开始
mcp server 配置
stdio 模式
Windows
macOS/Linux
远程模式
对应的mcp server配置
功能特性
1. 测量功能 (measurement)
距离和长度计算:
along- 在 GeoJSON LineString 上计算指定距离处的点distance- 计算两个 GeoJSON 点特征之间的球面距离length- 计算 GeoJSON 线或多线几何图形的长度rhumbDistance- 计算两点之间的恒向线距离(等角航线距离)pointToLineDistance- 计算点到线的最短球面距离
方位角计算:
bearing- 计算两点之间的地理方位角(从北方向顺时针测量)rhumbBearing- 计算两点之间的恒向线方位角
中心点和位置计算:
center- 计算 GeoJSON 特征集合的绝对中心点centerOfMass- 计算 GeoJSON 对象的质心centroid- 计算 GeoJSON 对象的几何中心midpoint- 计算两个 GeoJSON 点特征之间的中点pointOnFeature- 在 GeoJSON 特征上找到最近的点
边界和包络计算:
bbox- 计算 GeoJSON 对象的边界框bboxPolygon- 将边界框数组转换为 GeoJSON 多边形特征envelope- 计算 GeoJSON 对象的包络多边形(边界框多边形)square- 计算包含边界框的最小正方形边界框
面积计算:
area- 计算 GeoJSON 多边形的大地测量面积
路径和目标点计算:
destination- 从起点沿着指定方位角移动指定距离来计算目标点rhumbDestination- 沿恒向线计算目标点greatCircle- 计算两点之间的大圆路径(球面上最短路径)polygonTangents- 计算从给定点到多边形的两个切线点
2. 空间聚合和聚类 (aggregation)
collect- 将点属性聚合到多边形中,用于统计和汇总分析clustersDbscan- 使用 DBSCAN 算法进行点聚类,识别密集区域clustersKmeans- 使用 K-means 算法进行点聚类,将点划分为指定数量的簇
3. 布尔运算 (booleans)
booleanClockwise- 检查环是否为顺时针方向booleanContains- 检查第一个几何图形是否包含第二个几何图形booleanCrosses- 检查两个几何图形是否相交booleanDisjoint- 检查两个几何图形是否不相交booleanEqual- 检查两个几何图形是否相等booleanOverlap- 检查两个几何图形是否重叠booleanParallel- 检查两条线段是否平行booleanPointInPolygon- 检查点是否在多边形内部booleanPointOnLine- 检查点是否在线上booleanWithin- 检查第一个几何图形是否在第二个几何图形内部
4. 分类功能 (classification)
nearestPoint- 查找距离目标点最近的点特征
5. 坐标转换和清理 (coordinate_mutation)
clean_coords- 清理 GeoJSON 数据中的冗余坐标点flip- 交换坐标的经度和纬度位置rewind- 修正多边形的环方向,确保外环逆时针、内环顺时针round_number- 对数字进行四舍五入,控制小数位数truncate- 截断 GeoJSON 几何图形的坐标精度
6. 数据采样和处理 (data)
sample- 从特征集合中随机采样指定数量的特征
7. 特征转换 (feature_conversion)
combine- 将特征集合合并为复合几何图形explode- 将几何图形分解为单独的点特征flatten- 将复合几何图形展平为简单几何图形line_to_polygon- 将线转换为多边形polygonize- 将线几何图形转换为多边形polygon_to_line- 将多边形转换为线几何图形
8. 网格生成 (grid)
hexGrid- 在边界框内生成六边形网格,用于空间分析和可视化pointGrid- 在边界框内生成点网格,用于空间采样和插值squareGrid- 在边界框内生成正方形网格,用于空间分析和区域划分triangleGrid- 在边界框内生成三角形网格,用于空间分析和表面建模
9. 几何对象创建辅助 (helper)
featureCollection- 将多个地理特征组合成一个特征集合feature- 创建单个地理特征对象geometryCollection- 创建几何图形集合特征lineString- 创建线特征对象multiLineString- 创建多线特征对象multiPoint- 创建多点特征对象multiPolygon- 创建多多边形特征对象point- 创建点特征对象polygon- 创建多边形特征对象
10. 空间插值和表面分析 (interpolation)
interpolate- 使用反距离权重法进行空间插值isobands- 从点网格生成等值带,用于创建连续值的区域表示isolines- 从点网格生成等值线,用于创建连续值的线状表示planepoint- 计算点在三角形平面上的z值tin- 从点集创建不规则三角网,用于表面建模和地形分析
11. 空间连接和属性关联 (joins)
pointsWithinPolygon- 查找多边形内部的点tag- 为点特征添加多边形属性
12. 杂项地理操作 (misc)
kinks- 查找几何图形中的自相交点line_arc- 创建圆弧线段line_chunk- 将线分割为指定长度的线段line_intersect- 计算两条线的交点line_overlap- 查找两条线的重叠部分line_segment- 将几何图形分解为线段line_slice- 在线段上截取指定起点和终点之间的部分line_slice_along- 沿线段长度截取指定距离范围的部分line_split- 用分割器将线段分割为多段mask- 使用掩膜多边形裁剪几何图形nearest_point_on_line- 找到线上距离给定点最近的位置sector- 创建扇形多边形区域shortest_path- 计算两点之间的最短路径unkink_polygon- 消除多边形中的自相交部分
13. 随机地理数据生成 (random)
randomPosition- 生成随机的地理坐标位置randomPoint- 生成随机点特征集合randomLineString- 生成随机线特征集合randomPolygon- 生成随机多边形特征集合
14. 几何变换和操作 (transformation)
bboxClip- 将 GeoJSON 特征裁剪到指定的边界框内bezierSpline- 将直线转换为平滑的贝塞尔曲线buffer- 创建缓冲区circle- 根据中心点和半径创建圆形区域clone- 创建 GeoJSON 对象的完整副本concave- 计算点集的凹包convex- 计算点集的凸包difference- 计算两个多边形的差异dissolve- 合并相邻的多边形intersect- 计算多边形的交集lineOffset- 计算线的偏移simplify- 简化 GeoJSON 几何tesselate- 将多边形分割为三角形transformRotate- 旋转 GeoJSON 对象transformTranslate- 平移 GeoJSON 对象transformScale- 缩放 GeoJSON 对象union- 合并两个多边形voronoi- 生成 Voronoi 多边形
15. 单位转换 (unit_conversion)
bearingToAzimuth- 将方位角转换为方位角(0-360度范围)convertArea- 转换面积单位convertLength- 转换长度单位degreesToRadians- 将角度转换为弧度lengthToRadians- 将长度转换为弧度距离lengthToDegrees- 将长度转换为角度距离radiansToLength- 将弧度距离转换为长度radiansToDegrees- 将弧度转换为角度toMercator- 将地理坐标转换为墨卡托投影坐标toWgs84- 将墨卡托投影坐标转换为地理坐标
环境依赖
Python 3.10+
node 14.x
许可证
MIT License
贡献
欢迎提交 Issue 和 Pull Request!
参考文档
支持
问题: GitHub Issues