一个模型上下文协议(MCP)服务器,提供与ArcGIS Online的无缝集成,使AI助手能够搜索和查询地理空间要素图层。
此MCP服务器作为AI语言模型与ArcGIS Online之间的桥梁,允许进行智能地理空间数据发现和分析。它通过ArcGIS Online进行身份验证,并提供了强大的工具,用于以优化AI消费的格式查找和检索要素图层数据。
search_layers在ArcGIS Online中搜索与关键词匹配的要素图层,并返回各个图层的REST服务URL。
参数:
keyword (字符串):用于查找匹配图层的搜索词(例如,“消防栓”,“道路”,“公园”)返回值: 匹配图层名称及其REST服务URL的格式化列表。
示例:
消防栓: https://services.arcgis.com/.../FeatureServer/0
供水系统: https://services.arcgis.com/.../FeatureServer/1
工作流程提示:首先使用此工具发现要素图层,然后将返回的URL链接到其他工具。
summarize_field为ArcGIS要素图层中的特定字段提供全面统计信息。
参数:
service_url (字符串):要素图层的REST服务URL(从search_layers获得)field_name (字符串):要分析的字段名称(从get_feature_table获得)返回值: 适合字段类型的统计信息包括:
示例:
字段: 状态
类型: esriFieldTypeString
总特征数: 150
空值数: 5 (3.3%)
唯一值数: 3
前10个值:
'活动': 120 (82.8%)
'维护': 20 (13.8%)
'不活动': 5 (3.4%)
工作流程提示:完成的工作流:search_layers → get_feature_table(查看字段)→ summarize_field(分析)。
search_content在ArcGIS Online中搜索任何类型的内容项,并返回其项目ID。
参数:
keyword (字符串):用于查找匹配内容的搜索词(例如,“交通”,“人口”,“仪表板”)item_type (可选字符串):过滤特定内容类型(例如,“Web地图”,“仪表板”,“要素服务”)返回值: 匹配项标题及其项目ID和内容类型的格式化列表。
示例:
交通分析仪表板: abc123def456 | 类型: 仪表板
人口Web地图: xyz789uvw012 | 类型: Web地图
运输网络: def456ghi789 | 类型: 要素服务
get_feature_table使用REST服务URL从指定的要素图层中检索属性表的样本(前20行)。
参数:
service_url (字符串):目标要素图层的REST服务URL(从search_layers获得)返回值: 属性数据的前20行,以CSV格式返回,不包含几何信息,以便高效处理。注意:这是样本,不是完整的表格。
示例:
OBJECTID,名称,类型,状态,安装日期
1,消防栓_001,消防栓,活动,2020-01-15
2,消防栓_002,消防栓,维护,22019-08-22
工作流程提示:在search_layers之后使用,预览数据结构并识别字段名称以供进一步分析。
克隆仓库
安装依赖项:
pip install -e .
创建一个.env文件,其中包含您的ArcGIS Online凭据:
ARCGIS_USERNAME=您的用户名
ARCGIS_PASSWORD=您的密码
python main.py
服务器启动后,将通过stdio传输监听MCP连接。
该服务器使用FastMCP框架构建,并利用ArcGIS Python API实现与ArcGIS Online服务的无缝集成。它在启动时处理身份验证,并维持持久连接以实现高效的查询。
search_content按关键词和类型(Web地图、仪表板等)查找项目search_layers代替,以查找特定图层进行数据提取search_layers按关键词定位特定要素图层get_feature_table与REST URL查看字段名称和样本数据(20行)summarize_field获取特定字段的详细统计信息