geonode-mcpSAFE
MCP gateway for Geonode
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
A Model Context Protocol (MCP) server for interacting with GeoNode APIs. This server provides comprehensive access to GeoNode functionality including resource management, user administration, data uploads/downloads, and permission management.
Features
Resource Management
- List Regions: Browse available GeoNode regions
- List Resources: Browse and filter resources by type, status, categories, keywords, and more
- Resource Details: Get detailed information about specific resources and datasets
- Search: Full-text search across resource titles and abstracts
- Download: Generate download URLs for datasets and documents
- Upload: Upload datasets (Shapefiles, GeoTIFFs, CSV) and documents
- Delete: Remove resources from GeoNode
- Metadata Updates: Update dataset titles, abstracts, and licenses
User Management
- List Users: Browse users with pagination
- User Details: Get detailed user information
- Create Users: Add new users to the system
Permissions & Security
- View Permissions: Check current resource permissions
- Set Permissions: Configure user, group, and organization permissions for resources
- Authentication: Support for Basic Auth and Bearer tokens
Advanced Features
- Upload Tracking: Monitor upload progress with execution status
- Linked Resources: Discover relationships between resources
- Filtering: Advanced filtering by resource type, publication status, featured status, categories, and more
Installation
- Install dependencies:
pip install mcp httpx pydantic
- Run the server:
python main.py # or python cli.py # or mcp-geonode-cli serve
- Call tools directly from CLI (no MCP client required):
# List callable tools
mcp-geonode-cli list-tools
# Call a tool with JSON args
mcp-geonode-cli call list_resources --args '{"resource_type":"dataset","page_size":5}' --prettyConfiguration
The MCP GeoNode serv
18ce5872b6beOBSERVED · 2026-10-12Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add mcp-geonode --env GEONODE_PASSWORD=${GEONODE_PASSWORD} --env GEONODE_TOKEN=${GEONODE_TOKEN} -- uvx mcp-geonode{
"mcpServers": {
"mcp-geonode": {
"command": "uvx",
"args": [
"mcp-geonode"
],
"env": {
"GEONODE_PASSWORD": "${GEONODE_PASSWORD}",
"GEONODE_TOKEN": "${GEONODE_TOKEN}"
}
}
}
}Exposed tools (24)
15 read · 8 write · 1 destructive. Blast radius: 1 tool can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
check_upload_status | write | |
configure_geonode | read | |
create_user | write | |
delete_resource | destructive | |
download_asset | read | |
download_resource | read | |
get_configuration_status | read | |
get_dataset_details | read | |
get_resource_details | read | |
get_resource_permissions | read | |
get_user_details | read | |
list_categories | read | |
list_groups | read | |
list_linked_resources | read | |
list_regions | read | |
list_resources | read | |
list_tkeywords | read | |
list_users | read | |
set_resource_permissions | write | |
update_dataset_metadata | write | |
update_dataset_settings | write | |
upload_dataset | write | |
upload_dataset_metadata_xml | write | |
upload_document | write |
Trust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (1 observation(s))
- Network
- declared (5 observation(s))
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (4)
delete_resource
print(f" Has token: {env_config.token is not None}")assert _safe_filename("../../etc/passwd", "fb") == "passwd"mcp, httpx, pydantic, typing-extensions, python-dotenv
Gates applied: no_behavioural_pass.
18ce5872b6befull audit observations/trust-audit/mcp-server/pacificcommunity__geonode-mcp.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | 18ce5872b6be | SAFE | B | 89 | first audit |
Questions
What is the geonode-mcp MCP server?
MCP gateway for Geonode
What tools does geonode-mcp expose?
24 in total: 15 read-only, 8 that write, and 1 that can delete or overwrite (delete_resource). Every one is listed on this page with its risk.
Is geonode-mcp safe to connect to an agent?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B. Separately from the audit: 1 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does geonode-mcp need?
It reads GEONODE_PASSWORD and GEONODE_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does geonode-mcp run?
It speaks streamable-http, so it runs as a service you connect to over the network. It is published on PyPI as mcp-geonode.
How current is this page?
The grade is for one exact copy of the source (18ce5872b6be), read on 2026-10-12. The repository is watched and re-audited when it changes.