CLI-Anything · ArcGIS Pro
The closed-source counterpart to CLI-Anything's QGIS harness. ArcGIS Pro is Esri's commercial GIS desktop app, so it can't be auto-generated from source — this wraps its official ArcPy / ArcGIS Pro SDK instead, in two complementary modes:
✅ Listed in the official CLI-Anything registry (PR #318, merged) and on the Glama MCP registry.
Mode | What it drives | How |
Headless CLI |
|
|
Live bridge + MCP | the open ArcGIS Pro session (you watch it work) | in-process .NET add-in + MCP server |
✨ Features
🗺️ Professional cartography — export layouts and Map Series / map books (ArcGIS Pro's edge over QGIS).
🧰 The whole ArcToolbox — run any geoprocessing tool (buffer, clip, intersect, dissolve, …) via one command.
🔌 Drive the live session — an agent operates the open project over MCP; results appear in the map as you watch.
🤖 Agent-native I/O — every command speaks JSON:
{ "ok": …, "data" | "error": … }.🧠 Self-healing install — the CLI re-dispatches into ArcGIS Pro's Python automatically, so it works no matter where it's installed.
✅ Tested —
test_core(no backend) +test_full_e2e(needs ArcGIS Pro).
Related MCP server: ARCclaude
🎬 Demo
A complete workflow driven live by an agent — data → clip → analysis → finished map — inside ArcGIS Pro through the MCP bridge:
🚀 Quickstart
Install into ArcGIS Pro's bundled Python (arcgispro-py3), which provides ArcPy:
"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\python.exe" -m pip install ^
git+https://github.com/Jasper0122/CLI-Anything-Arcgis-Pro.gitcli-anything-arcgis-pro --json infoInstalled into a different Python? (e.g. via the CLI-Hub, which uses its own interpreter.) That's fine — the command self-dispatches into ArcGIS Pro's
arcgispro-py3interpreter when ArcPy isn't present. It locates Pro via common install paths, theSOFTWARE\ESRI\ArcGISProregistry key, or theCLI_ANYTHING_ARCGIS_PYTHONenvironment variable.
Requires a licensed ArcGIS Pro install (provides ArcPy). Verified on ArcGIS Pro 3.4 / ArcPy 3.4.3 / .NET 8.
For the live bridge, build & install the add-in and register the MCP server — see live-bridge/README.md.
🧰 Commands
Headless CLI (every command takes --json before the subcommand):
Command | What it does |
| ArcPy version, license level, extension availability. |
| Maps, layouts, layers, data sources of an |
| ★ Professional export: layouts + Map Series / map books. |
| Author the map: add layers, apply graduated-color / unique-value renderers. |
| Inspect & edit feature classes and tables. |
| Run any geoprocessing tool (the whole ArcToolbox). |
| Export every layout in a project. |
:: print-quality A0 map at 300 DPI
cli-anything-arcgis-pro --json layout export C:\proj\city.aprx --layout "Poster" --out C:\out\poster.pdf --dpi 300
:: buffer roads by 100 m
cli-anything-arcgis-pro --json gp analysis.Buffer -a C:\d.gdb\roads -a C:\d.gdb\roads_buf --kw buffer_distance_or_field="100 Meters"
:: close the loop: add the result to a map and symbolize it — no GUI clicks
cli-anything-arcgis-pro --json map add-data C:\proj\city.aprx C:\d.gdb\tracts
cli-anything-arcgis-pro --json map symbology graduated C:\proj\city.aprx tracts --field MEDINCOME --classes 5 --ramp ViridisSee SKILL.md for the full agent guide, and demos/ for runnable end-to-end demos.
🔌 MCP tools
With the live bridge registered, an agent can drive the open project:
MCP tool | Action on the live project |
| Read the open project: maps, layouts, active view. |
| Zoom the active map to a layer (optionally a selection). |
| Query a layer's attributes → structured rows. |
| Run any geoprocessing tool; outputs are added to the live map. |
| Export a layout to PDF. |
🧭 Architecture
Agent ──MCP──► mcp_server.py ──HTTP─► in-Pro add-in ──QueuedTask─► LIVE project
(you watch)ArcPy can't attach to a running ArcGIS Pro from an external process (Esri limitation). The live bridge sidesteps this by running an in-process add-in that exposes the open project over a local socket, wrapped as MCP tools — while the headless CLI stays perfect for batch/automation with no GUI.
Full code-implementation flow:

Source: docs/implementation-flow.canvas (JSON Canvas / Obsidian).
📁 Repository layout
cli_anything_arcgis_pro/ headless ArcPy CLI (pip package)
tests/ test_core.py (no backend) + test_full_e2e.py (needs Pro)
demos/ runnable demos (headless, live bridge, full region workflow)
live-bridge/
mcp_server.py stdlib-only MCP server → in-Pro bridge
ProSimpleMapExport/ ArcGIS Pro .NET add-in (bridge server + export button)
docs/ hero image, architecture diagram (.png + .canvas)
SKILL.md canonical agent skill definition🤝 Contributing
This is a standalone harness for CLI-Anything (listed in its registry, merged in #318). Issues and PRs welcome — run the tests with ArcGIS Pro's Python:
"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\python.exe" -m pytest tests/Where to help: see the Roadmap — it maps every planned command to its ArcPy / Pro SDK API and marks tasks that need no ArcGIS license (🐍, e.g. the MCP server, tests, docs) and good first issues (🟢). The biggest open frontier is cartographic authoring (symbology, layout, layer management) — the part that makes ArcGIS Pro beat QGIS.
📄 License
Source-available, not OSI open-source. Licensed under the PolyForm Noncommercial License 1.0.0:
🟢 Free for noncommercial use — personal projects, study, research, evaluation, and nonprofit / educational / government organizations.
💼 Commercial use requires a paid license — see
LICENSE-COMMERCIAL.md.
This is an independent downstream project; upstream CLI-Anything is separately licensed under Apache-2.0.
🙏 Acknowledgements
Built as a contribution to HKUDS/CLI-Anything — "Making ALL Software Agent-Native." ArcGIS, ArcGIS Pro and ArcPy are trademarks of Esri; this project is an independent integration and is not affiliated with Esri.
Available Tools
6 toolsarcgis_export_layoutA
把活着的 ArcGIS Pro 工程里的某个布局导出为 PDF。导出在用户正开着的 Pro 实例内执行(用户能看到),返回输出路径与文件大小。
| Name | Required | Description | Default |
|---|---|---|---|
| out | Yes | 输出 PDF 的绝对路径,例如 C:\temp\map.pdf | |
| layout | No | 布局名(可选;缺省用活动布局,否则用第一个布局)。 | |
| dpi | No | 分辨率 DPI(默认 300)。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors: the export runs in the user's open Pro instance, is visible to the user, and returns output path and file size. No annotations exist, so the description carries the burden and does so well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with purpose, and contains no superfluous information. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the execution context (live Pro instance, user visibility) and return values, which compensates for the lack of output schema. It is complete for a simple export tool, though prerequisites could be mentioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter described. The description does not add new parameter-level details beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports a layout from a live ArcGIS Pro project to PDF, distinguishing it from sibling tools that perform other tasks like pinging, querying, or running geoprocessing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for exporting layouts when a Pro instance is open, but does not explicitly state when to use it versus alternatives or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arcgis_pingA
读取当前打开的 ArcGIS Pro 工程状态:工程名、所有地图、所有布局、以及当前活动的地图/布局。发其它命令前先用它了解打开的是什么工程。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It implies a safe read operation but does not clarify edge cases (e.g., no project open, network requirements) or side effects. Minimal transparency beyond stated purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, well-structured sentence in Chinese that front-loads the purpose and expected outputs. No waste, every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 0-parameter tool with no output schema, the description covers purpose, return types, and usage context. Lacks details on error conditions or output format, but sufficient for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (no parameters), baseline is 3. Description adds no parameter info but correctly reflects the lack of parameters. No extra semantics needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'read' and resource 'ArcGIS Pro project status', listing specific return fields (project name, maps, layouts, active map/layout). It distinguishes from sibling tools which are action-oriented (export, query, run, symbology, zoom).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises to use this tool before other commands to understand the open project. It could be improved by noting when not to use it or mentioning it is safe/read-only, but the guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arcgis_queryA
查询活工程里某要素图层的属性,返回结构化的行(不含几何)。可按 where 过滤、限制行数。
| Name | Required | Description | Default |
|---|---|---|---|
| layer | Yes | 要素图层名。 | |
| where | No | 可选 SQL where 条件。 | |
| map | No | 可选地图名(缺省用活动/第一个地图)。 | |
| limit | No | 最多返回多少行(默认 50,0=不限)。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states the tool returns structured rows without geometry and can filter/limit, but does not disclose side effects, permission requirements, error handling, or read-only nature. Adds some context beyond schema but lacks comprehensive behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with clear front-loading of purpose, followed by key features (filtering, limiting). No redundant words; every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, description partially explains return structure (structured rows, no geometry) but lacks details on row format, field selection, error handling, or pagination. Adequate for a simple query tool but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with adequate descriptions. The tool description adds minor value by mentioning geometry exclusion, but mostly rephrases schema info. Baseline 3 applies as schema already provides sufficient parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb (query), resource (feature layer attributes), and outcome (structured rows without geometry). It distinguishes from sibling tools like arcgis_run_gp and arcgis_export_layout by focusing on attribute queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description mentions filtering with 'where' and limiting rows, implying when to use options. However, it does not explicitly state when to use this tool versus siblings, though sibling tools are distinct enough to avoid confusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arcgis_run_gpA
在活工程上运行任意 ArcGIS 地理处理工具(整个 ArcToolbox:分析/管理/转换/栅格…)。输出图层会自动加到当前地图(用户能看到)。tool 用点号写法如 'analysis.Buffer'、'management.Clip';params 是按工具签名顺序排列的位置参数字符串数组。例:tool='analysis.Buffer',params=['roads','roads_buf','100 Meters']。
| Name | Required | Description | Default |
|---|---|---|---|
| tool | Yes | 工具名,点号写法,如 analysis.Buffer / management.Dissolve / sa.Slope。 | |
| params | Yes | 按工具参数顺序的位置参数(字符串)。输入/输出强烈建议用数据集全路径(如 C:\...\x.gdb\fc),图层名在后台 GP 里解析不可靠。距离等参数如 '500 Meters'。 | |
| allow_delete | No | Safety opt-in. Destructive tools (Delete*/Truncate*) are BLOCKED by default to protect shapefiles, feature classes and geodatabases. Set true ONLY when you intend to delete or truncate data. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that output layers are automatically added to the map, warns that layer names are unreliable and recommends full paths, and explains the allow_delete safety mechanism. It does not cover error handling or performance, but is still quite transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph that efficiently conveys the main purpose first, then details. Every sentence adds value, though a more structured format (e.g., bullet points) could improve readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately covers what the tool does and how to use it. It mentions output visibility and parameter format. It does not describe return values, but the tool's side effect (adding layers to map) is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, but the description adds value beyond the schema by providing examples (e.g., 'analysis.Buffer'), explaining that params are positional strings, and giving formatting hints like '500 Meters' for distances.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs any ArcGIS geoprocessing tool (entire ArcToolbox) and that output layers are added to the current map. It distinguishes itself from siblings like arcgis_query or arcgis_symbology by focusing on arbitrary GP tool execution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides examples of tool naming and parameters, and includes a safety opt-in for destructive tools. However, it does not explicitly state when not to use this tool or mention alternatives, which would strengthen guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arcgis_symbologyA
给活工程里某要素图层套用渲染器,让地图会说话——用户能在 Pro 窗口里立刻看到变色。renderer='graduated' 用数值字段做分级配色(专题图主力);'unique' 用分类字段每个值一种颜色。例:layer='tracts', renderer='graduated', field='MEDINCOME', classes=5, ramp='Viridis'。
| Name | Required | Description | Default |
|---|---|---|---|
| layer | Yes | 要渲染的要素图层名。 | |
| renderer | Yes | graduated=数值字段分级色;unique=分类字段唯一值色。 | |
| field | Yes | 用于渲染的字段。graduated 需数值字段;unique 用分类字段。 | |
| classes | No | graduated 的分级数(默认 5;unique 忽略)。 | |
| method | No | graduated 的分类方法(默认 NaturalBreaks;unique 忽略)。 | |
| ramp | No | 色带名,如 'Viridis'(可选)。 | |
| map | No | 可选地图名(缺省用活动/第一个地图)。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that changes appear immediately in the Pro window, and explains parameter behavior (e.g., 'classes' only for graduated). However, it doesn't mention error handling or permanence of changes, but the main behavioral traits are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences: first states purpose, second explains renderer types, third gives an example. No fluff, front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters and no output schema, the description covers the tool's purpose and parameter usage well, including an example. It lacks details on potential errors or prerequisites (e.g., field must exist), but overall it is sufficient for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds significant value beyond schema descriptions: it explains the purpose of 'renderer' with examples, clarifies that 'classes' and 'method' apply only to 'graduated', and gives a concrete example. This enhances understanding beyond the parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('套用渲染器' apply renderer) and the resource ('要素图层' feature layer), with immediate visual feedback. It distinguishes between two renderer types ('graduated' and 'unique'), making the purpose precise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use each renderer: 'graduated' for numeric fields and 'unique' for categorical fields. While it doesn't explicitly exclude siblings, the sibling tools (e.g., export, query) are clearly different, so usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arcgis_zoom_toA
把活动地图视图缩放到某个要素图层(用户能在窗口里看到地图动)。可选 where 条件:会先选中匹配要素再缩放到选集。需要 Pro 当前处于地图视图(非布局)。
| Name | Required | Description | Default |
|---|---|---|---|
| layer | Yes | 要缩放到的要素图层名。 | |
| where | No | 可选 SQL 条件,如 "POP > 1000";给了就缩放到选中要素。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the tool causes visual map movement and can optionally select features first. Without annotations, description carries full burden and adequately covers the visible effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences covering main action, optional behavior, and prerequisite. No wasted words, front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given simple tool (2 params, no output schema), description adequately explains both usage modes and a key prerequisite. Could mention error cases but not necessary for a zoom tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (baseline 3), but description adds extra detail: explains the where behavior as 'first selects matching features then zooms to the selection', which adds semantic value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb ('zoom to') and resource ('active map view to a feature layer'). It distinguishes from sibling tools which have different purposes (export, query, run geoprocessing, etc.).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit prerequisite ('requires Pro to be in map view, not layout') and explains the optional where condition behavior. Does not explicitly contrast with siblings but contextually differentiation is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a distinct purpose: status checking, layout export, attribute query, geoprocessing, symbology application, and view zooming. No overlap in functionality.
All tools start with 'arcgis_' and follow a verb-noun pattern (e.g., arcgis_export_layout, arcgis_zoom_to). Minor abbreviation in 'run_gp' and phrasal verb 'zoom_to' are acceptable but not perfectly uniform.
Six tools is well-scoped for interacting with an active ArcGIS Pro session, covering essential operations without being overwhelming or too sparse.
Covers core workflows like export, query, symbology, and running any geoprocessing tool. Missing direct data editing (create/update/delete features) and layer management, but the GP tool can indirectly cover some gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Task management your AI agents can actually run. One line becomes a context-ready task over MCP.
MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
Related MCP Servers
- AlicenseCqualityCmaintenanceA local MCP server that enables AI clients to read ArcGIS Pro project information and execute ArcPy geoprocessing in the native ArcGIS Pro Python environment.1384MIT
- AlicenseAqualityAmaintenanceEnables AI assistants to control ArcGIS Pro through natural language, executing geoprocessing tools, editing data, and automating GIS workflows via a persistent ArcPy session.12Apache 2.0
- AlicenseBqualityAmaintenanceLets AI assistants control a live ArcGIS Pro session through arcpy, including layer management, attribute queries, geoprocessing, symbology, and export.31AGPL 3.0
- FlicenseNot gradedqualityCmaintenanceDrives a live ArcGIS Pro session from Claude via arcpy, enabling layer listing, dataset description, geoprocessing, and project inspection directly against an open project.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Jasper0122/CLI-Anything-Arcgis-Pro'
If you have feedback or need assistance with the MCP directory API, please join our Discord server