Saltar al contenido
CADCAMFUN
Documentos

Documentación

Configuración del MCP

Configuración de conexión MCP CRUD y solicitudes de información del servidor.

Traducido automáticamente del inglés. Ver el original en inglés

Área de pruebas

Envíe estas solicitudes a su propio sidecar en funcionamiento. Los valores permanecen en este navegador.

No conectado
¿Cómo funciona esto?

El sidecar escucha en un puerto loopback elegido al inicio y lo imprime en su ready línea; use esa URL y el CADCAMFUN_TOKEN se empezó con. Las solicitudes van directamente desde esta página a esa dirección.

El sidecar envía encabezados CORS solo a los orígenes Tauri y a http://localhost o http://127.0.0.1 en cualquier puerto. Desde los documentos alojados, el navegador bloquea la respuesta, así que ejecute los documentos localmente (bun run dev en packages/web) para usar el área de juegos o copiar la solicitud como curl. Para experimentar sin tocar datos reales, inicie el sidecar con CADCAMFUN_DATA_DIR apuntado a un directorio desechable - ver el tutorial de la API.

Operaciones

8 endpoints en el mcp grupo, generado a partir del propio sidecar Documento OpenAPI. Las operaciones protegidas toman Authorization: Bearer $CADCAMFUN_TOKEN; ver autenticación. El comportamiento y los límites están en la guía del subsistema.

conseguir /api/mcp/config mcp.listConfig
correo /api/mcp/config mcp.createConfig
poner /api/mcp/config mcp.updateConfig
borrar /api/mcp/config mcp.removeConfig
conseguir /api/mcp/config/{id} mcp.getConfig
poner /api/mcp/config/{id} mcp.updateConfigById
borrar /api/mcp/config/{id} mcp.removeConfigById
correo /api/mcp/server-info mcp.serverInfo
Operaciones de configuración de MCP en 3D Arrastrar para orbitar · desplazarse para hacer zoom · arrastrar con el botón derecho para desplazarse
Un bloque por operación (8), apilado por sección de recursos de esta página y coloreado por método: GET verde, POST naranja, PUT azul, PATCH violeta, DELETE rojo. Generado a partir del documento OpenAPI en el momento de la compilación.

/api/mcp/config

conseguir /api/mcp/config # mcp.listConfig

Requiere Authorization: Bearer <token>.

Parámetros
NombreEnTipoRequerido
fuente consulta cadena | null opcional
Respuestas
200 objeto | objeto application/json
{
  success: true
  source: "claude" | "database"
  servers: Array<{
    id: string
    name: string
    type: string
    url: string | null
    command: string | null
    args: unknown
    workingDirectory: string | null
    enabled: boolean
    userId: string | null
    createdAt: string
    updatedAt: string
  }>
  count: number | "Infinity" | "-Infinity" | "NaN"
} | {
  success: true
  source: "file"
  config: {
    mcpServers: Array<{
      id: string
      name: string
      type: string
      url: string | null
      command: string | null
      args: unknown
      workingDirectory: string | null
      enabled: boolean
    }>
  }
  exportedAt: string
}
400 McpEnvBadRequestEncoded application/json
McpEnvBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 McpEnvInternalEncoded application/json
McpEnvInternalEncoded
Ejemplo de respuesta capturado · 200
OBTENER /api/mcp/config
{
  "success": true,
  "source": "claude",
  "servers": [],
  "count": 0
}
Ejemplo de SDK
mcp.listConfig
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// McpListConfigInput
const result = await client.mcp.listConfig({})
curl
OBTENER /api/mcp/config
curl --request GET "${CADCAMFUN_URL}/api/mcp/config" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Pruébalo
correo /api/mcp/config # mcp.createConfig

Requiere Authorization: Bearer <token>.

Parámetros
NombreEnTipoRequerido
fuente consulta cadena | null opcional
Cuerpo de la solicitud · requerido · aplicación/json
{
  id?: string | null
  name?: string | null
  type?: string | null
  url?: string | null
  command?: string | null
  args?: unknown | null
  workingDirectory?: string | null
  defaultWorkingDirectory?: string | null
  enabled?: boolean | null
  serverName?: string | null
  testConnection?: boolean | null
  mcpServers?: unknown | null
  tool_configuration?: unknown | null
  authorization_token?: string | null
}
Respuestas
200 objeto application/json
{
  success: true
  source: "file"
  imported: number | "Infinity" | "-Infinity" | "NaN"
  message: string
}
201 objeto application/json
{
  success: true
  source: "claude" | "database"
  server: {
    id: string
    name: string
    type: string
    url: string | null
    command: string | null
    args: unknown
    workingDirectory: string | null
    enabled: boolean
    userId: string | null
    createdAt: string
    updatedAt: string
  }
  connectionTest?: unknown | null
  message: string
}
400 McpEnvBadRequestEncoded application/json
McpEnvBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 McpEnvInternalEncoded application/json
McpEnvInternalEncoded
buscar ejemplo
mcp.createConfig
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/mcp/config`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
ENVIAR /api/mcp/config
curl --request POST "${CADCAMFUN_URL}/api/mcp/config" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Pruébalo
poner /api/mcp/config # mcp.updateConfig

Requiere Authorization: Bearer <token>.

Parámetros
NombreEnTipoRequerido
fuente consulta cadena | null opcional
Cuerpo de la solicitud · requerido · aplicación/json
{
  id?: string | null
  name?: string | null
  type?: string | null
  url?: string | null
  command?: string | null
  args?: unknown | null
  workingDirectory?: string | null
  defaultWorkingDirectory?: string | null
  enabled?: boolean | null
  serverName?: string | null
  testConnection?: boolean | null
  mcpServers?: unknown | null
  tool_configuration?: unknown | null
  authorization_token?: string | null
}
Respuestas
200 objeto application/json
{
  success: true
  source: "claude"
  server: {
    id: string
    name: string
    type: string
    url: string | null
    command: string | null
    args: unknown
    workingDirectory: string | null
    enabled: boolean
    userId: string | null
    createdAt: string
    updatedAt: string
  }
  message: string
}
400 McpEnvBadRequestEncoded application/json
McpEnvBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 McpEnvNotFoundEncoded application/json
McpEnvNotFoundEncoded
405 McpEnvMethodNotAllowedEncoded application/json
McpEnvMethodNotAllowedEncoded
500 McpEnvInternalEncoded application/json
McpEnvInternalEncoded
Ejemplo de SDK
mcp.updateConfig
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// McpUpdateConfigInput
const result = await client.mcp.updateConfig({
  id: "",
  name: "",
  type: "",
  url: "",
  command: "",
  args: null,
  workingDirectory: "",
  defaultWorkingDirectory: "",
  enabled: false,
  serverName: "",
  testConnection: false,
  mcpServers: null,
  tool_configuration: null,
  authorization_token: ""
})
curl
PONER /api/mcp/config
curl --request PUT "${CADCAMFUN_URL}/api/mcp/config" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Pruébalo
borrar /api/mcp/config # mcp.removeConfig

Requiere Authorization: Bearer <token>.

Parámetros
NombreEnTipoRequerido
fuente consulta cadena | null opcional
nombre consulta cadena | null opcional
Respuestas
200 objeto application/json
{
  success: true
  source: "claude"
  message: string
  note: string
}
400 McpEnvBadRequestEncoded application/json
McpEnvBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 McpEnvNotFoundEncoded application/json
McpEnvNotFoundEncoded
405 McpEnvMethodNotAllowedEncoded application/json
McpEnvMethodNotAllowedEncoded
500 McpEnvInternalEncoded application/json
McpEnvInternalEncoded
Ejemplo de SDK
mcp.removeConfig
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// McpRemoveConfigInput
const result = await client.mcp.removeConfig({})
curl
ELIMINAR /api/mcp/config
curl --request DELETE "${CADCAMFUN_URL}/api/mcp/config" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Pruébalo
conseguir /api/mcp/config/{id} # mcp.getConfig

Requiere Authorization: Bearer <token>.

Parámetros
NombreEnTipoRequerido
identificación camino cadena requerido
Respuestas
200 objeto application/json
{
  id: string
  name: string
  type: string
  url: string | null
  command: string | null
  args: unknown
  workingDirectory: string | null
  enabled: boolean
  userId: string | null
  createdAt: string
  updatedAt: string
}
400 McpBadRequestEncoded application/json
McpBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 McpNotFoundEncoded application/json
McpNotFoundEncoded
500 McpInternalEncoded application/json
McpInternalEncoded
Ejemplo de SDK
mcp.getConfig
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// McpGetConfigInput
const result = await client.mcp.getConfig({
  id: "<id>"
})
curl
OBTENER /api/mcp/config/{id}
curl --request GET "${CADCAMFUN_URL}/api/mcp/config/<id>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Pruébalo
poner /api/mcp/config/{id} # mcp.updateConfigById

Requiere Authorization: Bearer <token>.

Parámetros
NombreEnTipoRequerido
identificación camino cadena requerido
Cuerpo de la solicitud · requerido · aplicación/json
{
  id?: string | null
  name?: string | null
  type?: string | null
  url?: string | null
  command?: string | null
  args?: unknown | null
  workingDirectory?: string | null
  defaultWorkingDirectory?: string | null
  enabled?: boolean | null
  serverName?: string | null
  testConnection?: boolean | null
  mcpServers?: unknown | null
  tool_configuration?: unknown | null
  authorization_token?: string | null
}
Respuestas
200 objeto application/json
{
  id: string
  name: string
  type: string
  url: string | null
  command: string | null
  args: unknown
  workingDirectory: string | null
  enabled: boolean
  userId: string | null
  createdAt: string
  updatedAt: string
}
400 McpBadRequestEncoded application/json
McpBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 McpNotFoundEncoded application/json
McpNotFoundEncoded
405 McpMethodNotAllowedEncoded application/json
McpMethodNotAllowedEncoded
500 McpInternalEncoded application/json
McpInternalEncoded
buscar ejemplo
mcp.updateConfigById
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/mcp/config/${id}`, {
  method: "PUT",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
PUT /api/mcp/config/{id}
curl --request PUT "${CADCAMFUN_URL}/api/mcp/config/<id>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Pruébalo
borrar /api/mcp/config/{id} # mcp.removeConfigById

Requiere Authorization: Bearer <token>.

Parámetros
NombreEnTipoRequerido
identificación camino cadena requerido
Respuestas
204 <Sin contenido>
400 McpBadRequestEncoded application/json
McpBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 McpNotFoundEncoded application/json
McpNotFoundEncoded
405 McpMethodNotAllowedEncoded application/json
McpMethodNotAllowedEncoded
500 McpInternalEncoded application/json
McpInternalEncoded
Ejemplo de SDK
mcp.removeConfigById
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// McpRemoveConfigByIdInput
const result = await client.mcp.removeConfigById({
  id: "<id>"
})
curl
ELIMINAR /api/mcp/config/{id}
curl --request DELETE "${CADCAMFUN_URL}/api/mcp/config/<id>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Pruébalo

/api/mcp/server-info

correo /api/mcp/server-info # mcp.serverInfo

Requiere Authorization: Bearer <token>.

Cuerpo de la solicitud · requerido · aplicación/json
{
  serverId?: string | null
}
Respuestas
200 objeto application/json
{
  name: string
  version?: string | null
  instructions?: string | null
  resources?: Array<{
    name: string
    uriTemplate?: string | null
    description?: string | null
    arguments?: Array<{
      name: string
      description?: string | null
      required?: boolean | null
    }> | null
  }> | null
  tools?: Array<{
    name: string
    description?: string | null
    parameters?: unknown | null
  }> | null
}
400 McpBadRequestEncoded application/json
McpBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 McpNotFoundEncoded application/json
McpNotFoundEncoded
405 McpMethodNotAllowedEncoded application/json
McpMethodNotAllowedEncoded
500 McpInternalEncoded application/json
McpInternalEncoded
Ejemplo de SDK
mcp.serverInfo
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// McpServerInfoInput
const result = await client.mcp.serverInfo({
  serverId: ""
})
curl
POST /api/mcp/información-servidor
curl --request POST "${CADCAMFUN_URL}/api/mcp/server-info" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Pruébalo

esquemas

Esquemas con nombre accesibles desde los parámetros, cuerpos y respuestas de este grupo. A ? marca un campo opcional; | null marca un campo que puede estar presente con un valor nulo.

McpBadRequestEncoded
{
  _tag: "McpBadRequest"
  error: string
}
McpEnvBadRequestEncoded
{
  _tag: "McpEnvBadRequest"
  success: false
  error: string
}
McpEnvInternalEncoded
{
  _tag: "McpEnvInternal"
  success: false
  error: string
}
McpEnvMethodNotAllowedEncoded
{
  _tag: "McpEnvMethodNotAllowed"
  success: false
  error: string
}
McpEnvNotFoundEncoded
{
  _tag: "McpEnvNotFound"
  success: false
  error: string
}
McpInternalEncoded
{
  _tag: "McpInternal"
  error: string
}
McpMethodNotAllowedEncoded
{
  _tag: "McpMethodNotAllowed"
  error: string
}
McpNotFoundEncoded
{
  _tag: "McpNotFound"
  error: string
}
UnauthorizedEncoded
{
  _tag: "Unauthorized"
  message: string
}

Llamando a este grupo

Los identificadores de operación tienen la forma mcp.<name>. El SDK de promesa generado (@cadcamfun/api/sdk) expone la mayoría de ellos como client.<namespace>.<method>(input), dónde input es un objeto plano de parámetros de ruta y campos de cuerpo; El ejemplo de SDK de cada tarjeta muestra el acceso exacto y el tipo de entrada. No se generan cargas de varias partes, respuestas binarias o JavaScript ni webhooks sin formato; esas tarjetas muestran fetch en su lugar.

Errores del SDK de Promise
import { CadCam, ClientError } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

try {
  await client.projects.list()
} catch (error) {
  if (error instanceof ClientError) {
    // Transport | UnexpectedStatus | UnsupportedContentType | MalformedResponse | SseEventTooLarge
  } else {
    // a declared error body: switch on error._tag
  }
}

Solución de problemas

Síntomacausa probableArreglar
401 en cada llamadaToken de un lanzamiento anterior o faltante Bearer prefijoEnviar Authorization: Bearer <token> con la ficha con la que se inició el sidecar.
400 antes de que ocurra algoEl cuerpo o el parámetro no coincide con el esquemaCompare la carga útil con el esquema de solicitud en la tarjeta.
403 o 404 en un registro que puedes ver en otro sitioLa cuenta de actuación difiere.enviar la derecha x-session-tokeno utilice el perfil local propietario del registro.
409Estado conflictivo, como un nombre duplicado o un encabezado de sucursal obsoletoVuelva a leer el recurso y vuelva a intentarlo con los datos actuales.
Pruébelo, dice "bloqueado por CORS"Los documentos se entregan desde un origen sin bucle invertido.Ejecute los documentos localmente o copie la solicitud como curl.
Conexión rechazadaEl sidecar se reinició en un nuevo puerto.Leer el puerto del nuevo ready línea.