Skip to content

feat: landscape MCP server full expansion#239

Open
jeefy wants to merge 16 commits intocncf:mainfrom
jeefy:landscape-mcp-expansion
Open

feat: landscape MCP server full expansion#239
jeefy wants to merge 16 commits intocncf:mainfrom
jeefy:landscape-mcp-expansion

Conversation

@jeefy
Copy link
Copy Markdown
Member

@jeefy jeefy commented Mar 12, 2026

Summary

Transforms the landscape MCP server from a narrow CNCF-specific POC into a comprehensive, configurable, well-tested MCP server that exposes the full richness of any Landscape dataset.

  • 12 tools (up from 4): enhanced query/detail tools + new discovery, analytical, and search tools
  • MCP Resources & Prompts: first-class support for resources/list, resources/read, prompts/list, prompts/get
  • Landscape-agnostic: configurable LandscapeConfig drives all descriptions — not hardcoded to CNCF
  • Rich data model: loads all available Landscape + Crunchbase fields (repos, funding, orgs, locations)
  • 29 passing tests across 5 test files with shared fixture data
  • Zero external dependencies: Go 1.21 standard library only

Tools

Tool Status Description
query_projects Enhanced Added category, subcategory filters + pagination offset
query_members Enhanced Added category filter + pagination offset
get_project_details Enhanced Full data: repos, links, org summary, funding, extra fields
get_member_details New Detail view for member organizations
list_categories New Enumerate all categories with subcategories and item counts
landscape_summary New High-level landscape statistics
search_landscape New Full-text search across names, descriptions, URLs
compare_projects New Side-by-side project comparison
funding_analysis New Crunchbase funding aggregation by tier/year
geographic_distribution New Member location breakdown by country/region/city
project_metrics Unchanged
membership_metrics Unchanged

MCP Capabilities

  • Resources: landscape://categories, landscape://summary
  • Prompts: analyze_landscape, compare_projects
  • Lifecycle: initialize reports server version + capabilities; notifications/dataset_refreshed triggers hot reload

Changes

11 files changed, +4,411 / -167 lines (all scoped to utilities/landscape-mcp-server/)

Testing

$ go test ./... -count=1
ok  github.com/cncf/landscape2/go/mcp-server  0.014s

@github-actions github-actions bot added needs-triage Indicates an issue or PR that has not been triaged yet (has a 'triage/foo' label applied) needs-kind Indicates an issue or PR that is missing an issue type or kind (a kind/foo label) help wanted labels Mar 12, 2026
jeefy added 16 commits March 11, 2026 21:47
Signed-off-by: Jeffrey Sica <me@jeefy.dev>
Signed-off-by: Jeffrey Sica <me@jeefy.dev>
Signed-off-by: Jeffrey Sica <me@jeefy.dev>
…gnatures

Signed-off-by: Jeffrey Sica <me@jeefy.dev>
Signed-off-by: Jeffrey Sica <me@jeefy.dev>
Signed-off-by: Jeffrey Sica <me@jeefy.dev>
Signed-off-by: Jeffrey Sica <me@jeefy.dev>
Signed-off-by: Jeffrey Sica <me@jeefy.dev>
Signed-off-by: Jeffrey Sica <me@jeefy.dev>
Signed-off-by: Jeffrey Sica <me@jeefy.dev>
Add projectDetailResult type with all landscape fields including
description, homepage_url, oss, repositories, audits, links,
additional_categories, and Crunchbase organization data.

Extract buildLinks() and buildOrgSummary() helpers for reuse.
Update getProjectDetails to return the enriched type.
Add test verifying enriched fields for Kubernetes.

Signed-off-by: Jeffrey Sica <me@jeefy.dev>
Add Category and Subcategory fields to ProjectQuery with
case-insensitive filtering. Update input schema and handler
in main.go. Add tests for category and subcategory filtering.

Signed-off-by: Jeffrey Sica <me@jeefy.dev>
Add Category field to MemberQuery with case-insensitive filtering.
Update input schema and handler in main.go. Add test for category
filtering.

Signed-off-by: Jeffrey Sica <me@jeefy.dev>
…_landscape)

Add three new MCP tools for exploring the landscape dataset:

- list_categories: returns all categories and subcategories with item counts
- landscape_summary: provides high-level statistical overview (totals,
  maturity breakdown, tier breakdown, crunchbase coverage)
- search_landscape: full-text search across names, descriptions,
  categories, subcategories, and homepage URLs with match_fields

Includes 20 new test cases covering all three tools with the existing
test fixture. All existing tests continue to pass.

Signed-off-by: Jeffrey Sica <me@jeefy.dev>
- Add compare_projects, funding_analysis, geographic_distribution tools
- Add resources/list and resources/read (landscape://categories, landscape://summary)
- Add prompts/list and prompts/get (analyze_landscape, compare_projects)
- Add serverVersion, initialize capabilities, and dataset refresh
- Add comprehensive test coverage for all new functionality

Signed-off-by: Jeffrey Sica <me@jeefy.dev>
Signed-off-by: Jeffrey Sica <me@jeefy.dev>
@jeefy jeefy force-pushed the landscape-mcp-expansion branch from 34e1cd7 to 9d7e616 Compare March 12, 2026 02:48
@jeefy jeefy removed help wanted needs-triage Indicates an issue or PR that has not been triaged yet (has a 'triage/foo' label applied) needs-kind Indicates an issue or PR that is missing an issue type or kind (a kind/foo label) labels Mar 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant