MCP Hub
Back to servers

DataGraph

An urban intelligence knowledge graph that provides structured access to civic problem-solving datasets, mapping goals, obstacles, solutions, and real-world resources.

Stars
1
Tools
4
Updated
Dec 1, 2025

team.earth / data

This repository hosts structured, region-specific datasets designed to map complex societal problems and the solutions already underway to address them. Each entry is an independent, modular systems map focused on a specific problem in a specific place. They can be used on their own or in combination.

🌍 Project Purpose

Each map answers the question:

Who is already doing what to solve this problem—and where do I fit in?

These resources are designed for:

  • Residents, volunteers, and organizers looking to get involved
  • Governments and funders aligning with high-impact work
  • Developers and designers building tools or visualizations
  • AI systems trained to guide people through complex civic issues
  • Research applications: Agent-based modeling, simulation studies, and computational analysis of civic ecosystem dynamics

📐 Framework

Each map follows a radially hierarchical structure to represent how complex problems can be addressed at multiple levels:

  1. 🎯 Goal – What success looks like (the "Future Picture")
  2. 🪨 Obstacles – Major themes blocking that goal
  3. ⛓️ Sub-Obstacles – Specific barriers as experienced by people
  4. 💡 Solutions – Actionable ideas to address each sub-obstacle
  5. 🧭 Resources – Real-world programs implementing those solutions (where available)

Key Principle: GOSR is an alignment framework, not a coordination mechanism. It enables voluntary self-organization through transparency and shared understanding, rather than imposed coordination or centralized control.

This format builds on a published cognitive and systems-thinking framework:

A Proposed Practical Problem-Solving Framework for Multi-Stakeholder Initiatives
Read on arXiv →

📚 Available Maps

DirectoryTitleFocusMapPDFMindmap JSONResources JSON
un-lonely-new-york-city/Un-Lonely New York CityUrban loneliness and disconnectionMapPDFJSONIntegrated
un-lonely-nova-scotia/Un-Lonely Nova ScotiaRural and regional loneliness in Atlantic CanadaMapPDFMindmapResources
kansas-city-violence-prevention/Kansas City: Violence Prevention and Social CohesionCommunity safety and connectionMapPDFMindmapResources
rust-belt-initiatives/Rust Belt InitiativesCommunity and economic initiatives in deindustrialized communities (Western PA)MapMindmapResources
london-resilient-to-extremism/London: Resilient to ExtremismCountering manipulation and strengthening cohesionMapPDFMindmapResources
ottawa-resilient-to-extremism/Ottawa: Resilient to ExtremismCommunity resilience in the face of radicalization tacticsMapPDFMindmapResources
food-security-nova-scotia/Food Security in Nova ScotiaStructural drivers of food insecurityPDFMindmap
mental-health-nova-scotia/Mental Health and Addiction in Nova ScotiaGaps in care, access, and coordinationMapPDFMindmap
education-innovation/Education InnovationOvercoming systemic barriers in education reformPDFMindmap
climate-change-adaptation/Climate Change AdaptationResilience strategies for climate-related threatsPDFMindmap

Legend:
Integrated = Resources included in the same JSON file as the structure
✨ = Schema-compliant data with standardized format and rich metadata

Data Quality Note: All resource files marked with ✨ contain schema-compliant, clean data ready for analysis.

🤖 MCP Server Implementation

This repository includes a Model Context Protocol (MCP) server that provides intelligent access to the GOSR dataset collection through structured queries rather than loading massive JSON files into LLM context.

Quick Start

cd mcp-server
npm install
npm start

The MCP server transforms static datasets into a queryable GOSR Knowledge Graph with these capabilities:

  • query_knowledge_graph - Multi-purpose querying (find resources by keywords, get resources by IDs, search solutions, find resources by obstacle themes)
  • get_resource_details - Detailed resource lookup with normalized data
  • search_solutions_by_obstacle - Navigate GOSR hierarchy by obstacle themes
  • get_gosr_hierarchy - Extract complete or filtered GOSR structure at any level

Integration

Configure with your LLM client (Claude Desktop, etc.) to enable AI agents to:

  • Query specific resources and solutions efficiently
  • Navigate the GOSR hierarchy intelligently
  • Access normalized, schema-compliant resource data
  • Replace loading entire JSON files into context

See mcp-server/README.md for complete setup instructions and API documentation.

✅ Data Validation

This repository features schema-compliant, high-quality data with Pydantic models:

Data Features

  • ✅ 16,180 unique resources across 5 datasets (12,147 + ~4,033 Rust Belt programs from 1,374 organizations)
  • ✅ Standardized schema with consistent field names and structure
  • ✅ Rich metadata with auto-generated tags and structured contact information
  • ✅ Geocoded data with 88.5% coverage for Rust Belt Initiatives
  • ✅ Type safety with full Pydantic schema checking

Available Models

  • models_jsonl.py: Pydantic models with streaming support and search capabilities
  • PYDANTIC_DOCS.md: Complete documentation and usage examples

Resource Schema

{
  "id": 0,
  "program": "Building Resilience Against Terrorism",
  "description": "Program description...",
  "organization": "Public Safety Canada",
  "contact": {
    "address": "269 Laurier Avenue West, Ottawa, ON K1A 0P8, Canada",
    "email": "contact@example.com",
    "website": "https://www.publicsafety.gc.ca",
    "phone": "+1-613-xxx-xxxx"
  },
  "metadata": {
    "category": "Counter-terrorism",
    "tags": ["resilience", "education", "community"],
    "status": "active",
    "source_file": "ottawa-resilient-to-extremism-resources.json"
  }
}

📚 Documentation:

Supported formats:

  • Hierarchical tree structures (Climate Change, Education)
  • Goal-Obstacle-Solution patterns (Un-Lonely, Kansas City)
  • Resource collections (all resource files)

🔧 JSON Format and Design

Each map provides machine-readable data that enables:

  • AI agents to guide users through complex solution maps
  • Developers to build search tools, visualizations, and simulators
  • Communities to update and remix content over time

Note on Resources: In GOSR maps, Resources represent real programs that can be modeled as autonomous agents in computational simulations, each with their own capabilities, constraints, and decision-making processes.

JSON Formats

FormatMapsDescription
Single fileNew York CityOne .json file includes both the structure and full resource metadata
Two filesNova Scotia, Kansas City, London, Ottawa, Mental Health (NS)Separate structure and resource files ([book].json + [book]-resources.json)
Solutions-onlyEducation Innovation, Food Security in Nova Scotia, Climate Change AdaptationIncludes obstacles and solutions, but no linked resources yet

📘 Book Series Metadata

This repository includes structured metadata for books in the Unsolvable: Think Again! series by Kevin Kells, PhD:

  • metadata.yaml – Contains full publication details, summaries, tags, and dataset links for each book.

🔍 Metadata Usage

The metadata.yaml file is machine-readable and can be utilized for:

  • Programmatically displaying book information.
  • Linking each dataset to its publication context.
  • Enabling search, filtering, or recommendation systems.
  • Supporting open research, civic data, or knowledge graph applications.

The format is designed to be accessible for use by developers, AI agents, and knowledge-sharing tools.

🐍 Python Integration

# Install dependencies
pip install -r requirements.txt
# Import models
from models_jsonl import Dataset
import json

# Load a dataset
with open("./un-lonely-nova-scotia/un-lonely-nova-scotia-resources.json", "r") as f:
    data = json.load(f)

dataset = Dataset.model_validate({
    "name": "un-lonely-nova-scotia",
    "resources": data
})

# Stream resources without loading everything into memory
for resource in dataset.stream_resources():
    print(f"{resource.program} - {resource.organization}")

# Search within the dataset
results = dataset.search_resources(query="mental health", limit=10)

Features:

  • 📊 16,180 unique resources across 5 datasets (12,147 + ~4,033 Rust Belt programs)
  • 🚀 Streaming support for memory efficiency
  • 🧹 Clean data with consistent schema
  • 🔍 Search capabilities with metadata tags
  • 💾 Type safety with Pydantic models

See PYDANTIC_DOCS.md for complete documentation.

Python Integration

# Import models
from models_jsonl import Dataset
import json

# Load dataset with schema checking
with open("path/to/resources.json", "r") as f:
    data = json.load(f)

dataset = Dataset.model_validate({
    "name": "dataset-name", 
    "resources": data
})

Features:

  • Type checking and schema compliance
  • Format conversion utilities
  • IDE type hint support

🤝 How to Contribute

  • Suggest updates or new maps via the team.earth contact form
  • Fork this project to build your own
  • Build interfaces or tools that help others explore this data

Reviews

No reviews yet

Sign in to write a review