> ## Documentation Index
> Fetch the complete documentation index at: https://docs.opal.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Report MCP server configuration

> **Prototype.** Reports the MCP servers configured in Claude Code on one developer's machine, as the Opal hook kit read them: user-level and per-project servers in `~/.claude.json`, a project's `.mcp.json`, `managed-mcp.json`, and servers a plugin provides when they can be found.

For each server the kit sends its name, the scope it was configured in, its transport, and either its URL (`http`, `sse`) or a hash of its command's shape (`stdio`). It never sends environment values, headers or command arguments, which can hold secrets. Opal adds each server to the organization's MCP server registry and records that this person has it configured. Nothing on the machine is changed.

Like `/agent-activity`, this is **telemetry from cooperating machines**: the identity and the list are what the machine says. The bearer token establishes the organization and nothing finer.



## OpenAPI

````yaml https://app.opal.dev/openapi.yaml post /agent-activity/mcp-config
openapi: 3.1.0
info:
  contact:
    email: hello@opal.dev
    name: Opal Team
    url: https://www.opal.dev/
  description: >-
    The Opal API is a RESTful API that allows you to interact with the Opal
    Security platform programmatically.
  title: Opal API
  version: '1.0'
servers:
  - description: Production
    url: https://api.opal.dev/v1
security: []
tags:
  - name: access-rules
    description: Operations related to access rules
  - name: agent-activity
    description: Operations related to agent activity telemetry
  - name: apps
    description: Operations related to apps
  - name: bundles
    description: Operations related to bundles
  - name: campaigns
    description: Operations related to access review campaigns
  - name: configuration-templates
    description: Operations related to configuration templates
  - name: delegations
    description: Operations related to request reviewer delegations
  - name: event-streams
    description: Operations related to event streaming connections
  - name: events
    description: Operations related to events
  - name: groups
    description: Operations related to groups
  - name: group-bindings
    description: Operations related to group bindings
  - name: idp-group-mappings
    description: Operations related to IDP group mappings
  - name: message-channels
    description: Operations related to message channels
  - name: non-human-identities
    description: Operations related to non-human identities
  - name: on-call-schedules
    description: Operations related to on-call schedules
  - name: opal-queries
    description: Operations related to OpalQuery
  - name: opal-scripts
    description: Operations related to OpalScripts
  - name: owners
    description: Operations related to owners
  - name: requests
    description: Operations related to requests
  - name: resources
    description: Operations related to resources
  - name: role-assignments
    description: >-
      Operations related to role assignments (general grants between an entity
      and a principal)
  - name: paladin
    description: Operations related to Paladin
  - name: service-users
    description: Operations related to service users (non-human identities owned by a team)
  - name: sessions
    description: Operations related to sessions
  - name: tags
    description: Operations related to tags
  - name: tokens
    description: Operations related to API tokens
  - name: uars
    description: Operations related to UARs. Deprecated in favor of the `campaigns` API.
  - name: users
    description: Operations related to users
paths:
  /agent-activity/mcp-config:
    post:
      tags:
        - agent-activity
      summary: Report MCP server configuration
      description: >-
        **Prototype.** Reports the MCP servers configured in Claude Code on one
        developer's machine, as the Opal hook kit read them: user-level and
        per-project servers in `~/.claude.json`, a project's `.mcp.json`,
        `managed-mcp.json`, and servers a plugin provides when they can be
        found.


        For each server the kit sends its name, the scope it was configured in,
        its transport, and either its URL (`http`, `sse`) or a hash of its
        command's shape (`stdio`). It never sends environment values, headers or
        command arguments, which can hold secrets. Opal adds each server to the
        organization's MCP server registry and records that this person has it
        configured. Nothing on the machine is changed.


        Like `/agent-activity`, this is **telemetry from cooperating machines**:
        the identity and the list are what the machine says. The bearer token
        establishes the organization and nothing finer.
      operationId: reportMcpConfig
      parameters:
        - description: >-
            The identity the reporting client claims - an email, or an
            operating-system user name. **Unverified**, used the same way as on
            `/agent-activity`.
          explode: false
          in: header
          name: X-Opal-Actor
          required: false
          schema:
            type: string
          style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/McpConfigReport'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/McpConfigReportResult'
          description: How many servers were read and recorded.
        '400':
          description: >-
            The body was unparseable, or carried more servers than one report
            may.
        '403':
          description: The MCP server registry is not enabled for this organization.
        '413':
          description: The request body exceeded the maximum accepted size.
      security:
        - BearerAuth: []
components:
  schemas:
    McpConfigReport:
      description: |-
        # McpConfigReport Object
        ### Description
        The MCP servers configured in Claude Code on one machine.
      properties:
        servers:
          items:
            $ref: '#/components/schemas/McpConfigServer'
          type: array
        reporter:
          $ref: '#/components/schemas/McpConfigReporter'
      required:
        - servers
      type: object
      additionalProperties: true
    McpConfigReportResult:
      description: |-
        # McpConfigReportResult Object
        ### Description
        What one configuration report did.
      properties:
        received:
          description: Servers in the report.
          type: integer
        recorded:
          description: >-
            Servers recorded in the registry. Lower than `received` when an
            entry had neither a name Opal could use nor a URL or command hash.
          type: integer
      required:
        - received
        - recorded
      type: object
    McpConfigServer:
      description: >-
        # McpConfigServer Object

        ### Description

        One MCP server in a machine's Claude Code configuration. Exactly what
        the hook kit

        sends: no environment values, headers or command arguments.
      properties:
        name:
          description: The server's name in the configuration.
          type: string
        scope:
          description: '`user`, `project`, `local`, `managed` or `plugin`.'
          type: string
        transport:
          description: '`http`, `sse` or `stdio`.'
          type: string
        url:
          description: The server's URL, for an `http` or `sse` server.
          type: string
        command_hash:
          description: For a `stdio` server, a SHA-256 of its command's shape, in hex.
          type: string
      required:
        - name
      type: object
      additionalProperties: true
    McpConfigReporter:
      description: >-
        # McpConfigReporter Object

        ### Description

        Who the reporting machine says it belongs to. Unverified, like
        `X-Opal-Actor`.
      properties:
        configured_email:
          type: string
        claude_account_email:
          type: string
        git_email:
          type: string
        os_user:
          type: string
      type: object
      additionalProperties: true
  securitySchemes:
    BearerAuth:
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.