Skip to main content
Glama

Microsoft Copilot Studio MCP

MIT License
  • Apple
  • Linux
resources.bicep3.98 kB
@description('The location used for all deployed resources') param location string = resourceGroup().location @description('Tags that will be applied to all resources') param tags object = {} param jokesmcpHttpTypescriptExists bool @description('Id of the user or app to assign application roles') param principalId string var abbrs = loadJsonContent('./abbreviations.json') var resourceToken = uniqueString(subscription().id, resourceGroup().id, location) // Monitor application with Azure Monitor module monitoring 'br/public:avm/ptn/azd/monitoring:0.1.0' = { name: 'monitoring' params: { logAnalyticsName: '${abbrs.operationalInsightsWorkspaces}${resourceToken}' applicationInsightsName: '${abbrs.insightsComponents}${resourceToken}' applicationInsightsDashboardName: '${abbrs.portalDashboards}${resourceToken}' location: location tags: tags } } // Container registry module containerRegistry 'br/public:avm/res/container-registry/registry:0.1.1' = { name: 'registry' params: { name: '${abbrs.containerRegistryRegistries}${resourceToken}' location: location tags: tags publicNetworkAccess: 'Enabled' roleAssignments:[ { principalId: jokesmcpHttpTypescriptIdentity.outputs.principalId principalType: 'ServicePrincipal' roleDefinitionIdOrName: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '7f951dda-4ed3-4680-a7ca-43fe172d538d') } ] } } // Container apps environment module containerAppsEnvironment 'br/public:avm/res/app/managed-environment:0.4.5' = { name: 'container-apps-environment' params: { logAnalyticsWorkspaceResourceId: monitoring.outputs.logAnalyticsWorkspaceResourceId name: '${abbrs.appManagedEnvironments}${resourceToken}' location: location zoneRedundant: false } } module jokesmcpHttpTypescriptIdentity 'br/public:avm/res/managed-identity/user-assigned-identity:0.2.1' = { name: 'jokesmcpHttpTypescriptidentity' params: { name: '${abbrs.managedIdentityUserAssignedIdentities}jokesmcpHttpTypescript-${resourceToken}' location: location } } module jokesmcpHttpTypescriptFetchLatestImage './modules/fetch-container-image.bicep' = { name: 'jokesmcpHttpTypescript-fetch-image' params: { exists: jokesmcpHttpTypescriptExists name: 'jokesmcp-http-typescript' } } module jokesmcpHttpTypescript 'br/public:avm/res/app/container-app:0.8.0' = { name: 'jokesmcpHttpTypescript' params: { name: 'jokesmcp-http-typescript' ingressTargetPort: 3000 scaleMinReplicas: 1 scaleMaxReplicas: 10 secrets: { secureList: [ ] } containers: [ { image: jokesmcpHttpTypescriptFetchLatestImage.outputs.?containers[?0].?image ?? 'mcr.microsoft.com/azuredocs/containerapps-helloworld:latest' name: 'main' resources: { cpu: json('0.5') memory: '1.0Gi' } env: [ { name: 'APPLICATIONINSIGHTS_CONNECTION_STRING' value: monitoring.outputs.applicationInsightsConnectionString } { name: 'AZURE_CLIENT_ID' value: jokesmcpHttpTypescriptIdentity.outputs.clientId } { name: 'PORT' value: '3000' } ] } ] managedIdentities:{ systemAssigned: false userAssignedResourceIds: [jokesmcpHttpTypescriptIdentity.outputs.resourceId] } registries:[ { server: containerRegistry.outputs.loginServer identity: jokesmcpHttpTypescriptIdentity.outputs.resourceId } ] environmentResourceId: containerAppsEnvironment.outputs.resourceId location: location tags: union(tags, { 'azd-service-name': 'jokesmcp-http-typescript' }) } } output AZURE_CONTAINER_REGISTRY_ENDPOINT string = containerRegistry.outputs.loginServer output AZURE_RESOURCE_JOKESMCP_HTTP_TYPESCRIPT_ID string = jokesmcpHttpTypescript.outputs.resourceId

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vikrantsinghsikarwar/MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server