Skip to content

Feature/restructure tool organization#1785

Open
jeremydhoover-blip wants to merge 16 commits intomicrosoft:mainfrom
jeremydhoover-blip:feature/restructure-tool-organization
Open

Feature/restructure tool organization#1785
jeremydhoover-blip wants to merge 16 commits intomicrosoft:mainfrom
jeremydhoover-blip:feature/restructure-tool-organization

Conversation

@jeremydhoover-blip
Copy link

@jeremydhoover-blip jeremydhoover-blip commented Feb 22, 2026

Summary

Restructures Fabric MCP tools into three organized categories with improved naming conventions and descriptions.

Changes

Tool Organization & Naming

Fabric MCP tools are now organized into three categories with updated tool names and descriptions:

docs - API Documentation & Best Practices (6 tools)

  • docs_workloads - Lists available Fabric workload types
  • docs_api_spec - Retrieves OpenAPI spec for a specific workload
  • docs_platform_api_spec - Retrieves platform API specification
  • docs_item_definition - Retrieves JSON schema definitions
  • docs_best_practices - Retrieves best practice documentation
  • docs_examples - Retrieves example API requests/responses

onelake - OneLake Data Operations (13 tools)

  • onelake_list_workspaces - Lists available Microsoft Fabric workspaces
  • onelake_list_items - Lists workspace items with high-level metadata
  • onelake_list_items_dfs - Lists Fabric items via the DFS endpoint
  • onelake_list_files - Lists files using the hierarchical file-list endpoint
  • onelake_download_file - Downloads a OneLake file
  • onelake_upload_file - Uploads a file to OneLake storage
  • onelake_create_directory - Creates a directory via the DFS endpoint
  • onelake_delete_directory - Deletes a directory (optionally recursive)
  • onelake_get_table_config - Retrieves table API configuration for a workspace item
  • onelake_list_table_namespaces - Lists table namespaces (schemas)
  • onelake_get_table_namespace - Retrieves metadata for a specific namespace
  • onelake_list_tables - Lists tables published within a namespace
  • onelake_get_table - Retrieves the definition for a specific table

core - Core Fabric Operations (1 tool)

  • core_create_item - Creates new Fabric items (Lakehouses, Notebooks, etc.)

Implementation Details

  • Renamed Fabric.Mcp.Tools.PublicApiFabric.Mcp.Tools.Docs
  • Updated all tool names to use verb_object format
  • Updated tool descriptions for better discoverability
  • Updated all namespaces: Fabric.Mcp.Tools.PublicApi.*Fabric.Mcp.Tools.Docs.*
  • Renamed project files and updated solution references
  • Updated README with new tool organization and naming
  • Updated all unit tests to match new tool names and structure
  • Moved ItemCreateCommand tests from OneLake to Core toolset

Testing

  • ✅ Updated test files to match new tool names
  • ✅ Solution builds successfully
  • ✅ All namespaces updated
  • ✅ Project references correct
  • ✅ Tool names and descriptions validated

Breaking Changes

Tool names have changed from publicapis_* format to docs_* format. Update any code or documentation referencing the old names.

Jeremy Hoover added 2 commits February 22, 2026 17:48
- Rename PublicApi to docs category with flat verb_object naming:
  - list_workloads, get_api_spec, get_platform_api_spec
  - get_item_definition, get_best_practices, get_examples

- Update OneLake commands with verb_object naming:
  - list_workspaces, list_items, list_items_dfs, list_files
  - download_file, upload_file, delete_file
  - create_directory, delete_directory
  - get_table_config, list_table_namespaces, get_table_namespace
  - list_tables, get_table

- Create new Core category (independent from OneLake):
  - create_item command with own service and models
  - Separate FabricCoreService for Fabric API calls

- Update all test files to match new tool names
- Update Program.cs to register all three categories
- Update README.md with new tool organization
- Fix encoding issues from commit 98b9f31:
  - Remove UTF-8 BOM from 38+ .cs files
  - Restore proper em dashes () and emojis in README

- Complete incomplete rename from PublicApi to Docs:
  - Rename Fabric.Mcp.Tools.PublicApi  Fabric.Mcp.Tools.Docs
  - Update all namespaces: Fabric.Mcp.Tools.PublicApi.*  Fabric.Mcp.Tools.Docs.*
  - Update project references in solution and Program.cs
  - Rename .csproj files for main and test projects

- Update README with new tool organization:
  - Document three tool categories: docs, onelake, core
  - Update all tool names to match new convention:
    - docs_list_workloads, docs_get_api_spec, etc.
    - onelake_list_workspaces, onelake_download_file, etc.
    - core_create_item
  - Remove old tool names (publicapis_*, onelake commands with old format)

Structural changes from commit 98b9f31 preserved.
@github-actions
Copy link

Thank you for your contribution @jeremydhoover-blip! We will review the pull request and get back to you soon.

Jeremy Hoover added 7 commits February 22, 2026 19:29
- Move all new resource files from PublicApi to Docs folder
- Resolve 557 file location conflicts from upstream changes
- Incorporate latest changes from microsoft/mcp main branch
- Create Fabric.Mcp.Tools.Core.UnitTests project with proper structure
- Add comprehensive tests for ItemCreateCommand
- Add FabricCoreSetupTests for service registration and command setup
- Add Core test project to solution file
- Include README documenting test structure
- All 10 tests passing successfully
…validation

- Remove emojis from section headings (Fabric Workloads & APIs, Resource Definitions & Schemas, etc.)
- Remove emojis from bullet points and contribution guidelines
- Pipeline validation requires ASCII-only characters in README tables and headings
…ndentation

- Remove 'docs -', 'onelake -', 'core -' prefixes from headings to fix anchor mismatch
- Fix TOC indentation levels to match heading levels (8 spaces for H3, 12 for H4)
- Keep emoji-free content from previous fix
…uation fails

- Add missing $hasErrors = True when Test-ToolSelection.ps1 fails
- Template.Mcp.Server having no tools is expected (it's a template) and already handled with WARNING
@jeremydhoover-blip jeremydhoover-blip requested a review from a team as a code owner February 22, 2026 19:16
Jeremy Hoover added 6 commits February 22, 2026 21:26
- BlobDeleteCommand is marked with [HiddenCommand] attribute
- Only 13 OneLake tools are publicly exposed (not 14)
- README now accurately reflects available tools
- Update command names to noun-based format (e.g., get_best_practices -> best_practices)
- Update command titles to remove verbs (e.g., Get Best Practices -> Best Practices)
- Keep verb-based descriptions (Retrieves..., Lists...)
- Update item_definition to item_definitions (plural) for consistency
- Update all test assertions to match new command names
- Update README with new command names

Changes:
- best_practices (was get_best_practices)
- api_examples (was get_examples)
- item_definitions (was get_item_definition)
- platform_api_spec (was get_platform_api_spec)
- workload_api_spec (was get_api_spec)
- workloads (was list_workloads)
- Remove non-existent heading entries from TOC
- Fix escaped ampersands in TOC links (\\& -> &)
- Remove incorrect heading level nesting
- Align TOC structure with actual document headings
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't want us to change anything in the Template MCP server, can you please undo this file change?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Untriaged

Development

Successfully merging this pull request may close these issues.

2 participants