Skip to main content
Use this guide when developing the MCP server from source.

Prerequisites

  • .NET 9 SDK
  • Grunt.WebServiceLayer running and reachable

Run locally

1

Start dependencies

Run your local service stack so Grunt.WebServiceLayer is available.
2

Run the MCP server project

dotnet run --project Oak/apps/McpServer/Grunt.McpServer/Grunt.McpServer.csproj
3

Verify health endpoint

curl http://localhost:5044/
Expected response format:
Hello from grunt-mcp @<version>
4

Verify tool discovery

curl -X POST "http://localhost:5044/mcp" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "tools/list"
  }'

Configuration reference

KeyDescription
GRUNT_WEB_SERVICE_LAYER_URLOverrides WebServiceLayerUri
WebServiceLayerUriBase URL for the web service layer client
AppConfigEndpointOptional Azure App Configuration endpoint
Auth0:AudienceJWT audience for production auth
Auth0:DomainAuth0 domain for JWT validation
Auth0:AzureClientIdOAuth protected resource identifier
IncludeExperimentalToolsEnables tools marked experimental
McpServerWidgetDomainDomain used for chart widget metadata

Environment behavior

  • In Development, /mcp is open and a fake user service is used.
  • Outside Development, /mcp requires auth and uses JWT claim resolution.
  • HTTPS redirection is enabled outside Development.

Optional tunnel for local testing

ngrok http 5044
Use the generated HTTPS URL as your MCP base URL when testing remote clients.