---
title: "POST /v1/projects/{projectsId}/locations/{locationsId}/servers:configureAndDeployServer"
method: POST
path: "/v1/projects/{projectsId}/locations/{locationsId}/servers:configureAndDeployServer"
tags: ["projects"]
---

# POST /v1/projects/{projectsId}/locations/{locationsId}/servers:configureAndDeployServer

`POST /v1/projects/{projectsId}/locations/{locationsId}/servers:configureAndDeployServer`

## Request

- Base URL: `https://apihub.googleapis.com`
- URL: `https://apihub.googleapis.com/v1/projects/{projectsId}/locations/{locationsId}/servers:configureAndDeployServer`
- Auth: one of:
  - OAuth 2 and OAuth 2
    - Implicit: `https://accounts.google.com/o/oauth2/auth`
    - Scopes: `https://www.googleapis.com/auth/apihub.readwrite`
    - Authorization code: `https://accounts.google.com/o/oauth2/auth`
    - Token URL: `https://accounts.google.com/o/oauth2/token` scopes: `https://www.googleapis.com/auth/apihub.readwrite`
  - OAuth 2 and OAuth 2
    - Implicit: `https://accounts.google.com/o/oauth2/auth`
    - Scopes: `https://www.googleapis.com/auth/cloud-platform`
    - Authorization code: `https://accounts.google.com/o/oauth2/auth`
    - Token URL: `https://accounts.google.com/o/oauth2/token` scopes: `https://www.googleapis.com/auth/cloud-platform`
- TypeScript: <https://skmtc.dev/google/apis/apihub/docs/v1/projects/:projectsId/locations/:locationsId/servers:configureAndDeployServer/post.ts> (a function with typed inputs; its response is checked against the schema)

Configures and deploys a given server config for given target. Currently this API supports only deploying MCP server in Apigee X. For mcp server deployment in apigee X, if there is already a mcp proxy deployed, then this method will try to overwrite it by creating new revision i.e. all existing tools will be removed and new set of tools will be deployed.

## Path parameters

- `projectsId` string, required
- `locationsId` string, required

## Request body

- GoogleCloudApihubV1ConfigureAndDeployServerRequest: Request message for ApiHub.ConfigureAndDeployServer.
  - `mcpServerConfig` GoogleCloudApihubV1McpServerConfig: MCP-specific server configuration.
    - `apigeeXTargetDetails` GoogleCloudApihubV1ApigeeXTargetDetails: The target configuration for Apigee X. Note: If this API is called while an earlier deployment is still in progress, the earlier deployment will be aborted and a new deployment will be triggered.
      - `deployedRevision` string: Output only. The revision number of the Apigee proxy that was deployed.
      - `environment` string: Required. The specific Apigee environment where the server will be deployed.
      - `metadata` GoogleCloudApihubV1MetaData: Metadata for the server configuration in Apigee X.
        - `description` string: Optional. Description for the server. For apigee target, this will be used as revision description.
        - `displayName` string: Optional. Display name for the server. For apigee target, this will be used as revision display name.
      - `proxy` string: Required. This name identifies the proxy resource in Apigee. It typically follows a standard alphanumeric format (e.g., "mcp-discovery-server").
      - `targetProject` string: Required. The runtime project that hosts the Apigee X organization. This must be one of the runtime projects attached to the API Hub host project.
    - `tools` GoogleCloudApihubV1McpToolConfig[]: Required. The tools to expose on the MCP server.
      - `description` string: Required. Description of what the tool does and how it is used. Description serves as key reference for the agent to know about the tool capabilities.
      - `operation` GoogleCloudApihubV1OperationConfig: API hub Operation config.
        - `httpOperation` GoogleCloudApihubV1HttpOperationConfig: Identifies a single API Hub operation by spec resource name + HTTP path + HTTP method.
          - `method` 'METHOD_UNSPECIFIED' | 'GET' | 'PUT' | 'POST' | 'DELETE' | 'OPTIONS' | 'HEAD' | 'PATCH' | 'TRACE': Required. HTTP method of the operation within the referenced spec. (GET / PUT / POST / DELETE / OPTIONS / HEAD / PATCH / TRACE).
          - `path` string: Required. HTTP path of the operation within the referenced spec. Match is exact (no template substitution): the path here must appear verbatim on an APIOperationRevision belonging to the spec.
          - `spec` string: Required. Spec resource name: `projects/{project}/locations/{location}/apis/{api}/versions/{version}/specs/{spec}`
        - `operation` string: Full API Hub operation resource name: `projects/{project}/locations/{location}/apis/{api}/versions/{version}/operations/{operation}`
      - `toolId` string: Required. Caller-supplied identifier for the tool; each tool must have a unique identifier. This will be by used by agents to invoke the tool. Tool ID must be unique across all tools in the given MCP server configuration.

## Response `200`

Successful response

- GoogleLongrunningOperation: This resource represents a long-running operation that is the result of a network API call.
  - `done` boolean: If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  - `error` GoogleRpcStatus: The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).
    - `code` integer: The status code, which should be an enum value of google.rpc.Code.
    - `details` object[]: A list of messages that carry the error details. There is a common set of message types for APIs to use.
    - `message` string: A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  - `metadata` object: Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
  - `name` string: The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  - `response` object: The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.

## Changes

- **2026-11-08** `09b6c7d2247b`: 4 info
  - the security scope `https://www.googleapis.com/auth/apihub.readwrite` was added to the endpoint's security scheme `Oauth2`
  - the security scope `https://www.googleapis.com/auth/apihub.readwrite` was added to the endpoint's security scheme `Oauth2c`
  - the security scope `https://www.googleapis.com/auth/cloud-platform` was removed from the endpoint's security scheme `Oauth2`
  - the security scope `https://www.googleapis.com/auth/cloud-platform` was removed from the endpoint's security scheme `Oauth2c`

[Operation history](https://skmtc.dev/google/apis/apihub/changes/v1/projects/:projectsId/locations/:locationsId/servers:configureAndDeployServer/post.md)

---

[API](https://skmtc.dev/google/apis/apihub.md) - [All operations](https://skmtc.dev/google/apis/apihub/llms.txt) - [OpenAPI document](https://skmtc.dev/google/apis/apihub/revisions/09b6c7d2247b?raw)
