@jorgeceballos/mcp-server-oci
Version:
Model Context Protocol server for Oracle Cloud Infrastructure
300 lines (217 loc) • 8.32 kB
Markdown
# Guía paso a paso para configurar y usar el Servidor MCP OCI
## 1. Instalación
**Importante**: Este proyecto utiliza `@modelcontextprotocol/sdk` (no `@modelcontextprotocol/mcp-sdk`), que es la implementación oficial del protocolo MCP. Si encuentras errores durante la instalación, consulta el archivo `CHANGES.md` para ver los cambios que se han realizado para solucionar problemas con dependencias. Asegúrate de instalar todas las dependencias antes de ejecutar el servidor.
### Instalación desde el repositorio local
Para instalar y ejecutar el proyecto desde el repositorio local:
```bash
# Navega al directorio del proyecto
cd /Users/jocebal/Work/mcp-oci-server
# Instala las dependencias
npm install
# Compila el código TypeScript
npm run build
# Ejecuta el servidor en modo desarrollo
npm run dev
```
### Instalación como paquete global
Si quieres instalar el paquete globalmente en tu sistema:
```bash
# Primero, navega al directorio del proyecto y crea el paquete
cd /Users/jocebal/Work/mcp-oci-server
npm install
npm run build
npm pack
# Instala el paquete globalmente
npm install -g ./jocebal-mcp-server-oci-1.0.0.tgz
# Ahora puedes ejecutar el servidor desde cualquier ubicación
mcp-server-oci
```
## 2. Configuración de Oracle Cloud Infrastructure
El servidor depende de una configuración válida de OCI CLI. Si aún no has configurado OCI CLI, sigue estos pasos:
### Instalar OCI CLI
```bash
# macOS/Linux
bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"
# Windows (PowerShell)
powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.ps1'))"
```
### Configurar OCI CLI
```bash
oci setup config
```
Este comando te guiará a través del proceso de configuración, solicitándote:
1. Ubicación del archivo de configuración (por defecto: ~/.oci/config)
2. Usuario OCID (desde la consola de OCI)
3. Tenancy OCID (desde la consola de OCI)
4. Región (p.ej., us-ashburn-1)
5. Generará un par de claves RSA para la autenticación
Una vez completada la configuración, verifica que funcione correctamente:
```bash
oci os ns get
```
Esto debería devolver tu namespace de Object Storage, lo que confirma que la configuración es correcta.
## 3. Configuración de Claude Desktop
Para integrar el servidor MCP OCI con Claude Desktop, necesitas configurar el archivo `claude_desktop_config.json`. Este archivo debe estar ubicado en:
- macOS: `/Users/jocebal/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
- Linux: `~/.config/Claude/claude_desktop_config.json`
### Crear/editar el archivo de configuración
```bash
# Crear el directorio si no existe (macOS)
mkdir -p "/Users/jocebal/Library/Application Support/Claude"
# Editar el archivo de configuración
nano "/Users/jocebal/Library/Application Support/Claude/claude_desktop_config.json"
```
### Contenido del archivo de configuración
Añade la siguiente configuración al archivo:
```json
{
"tools": {
"oracle-cloud": {
"command": "/Users/jocebal/.nvm/versions/node/v22.15.0/bin/npx",
"args": [
"-y",
"@jocebal/mcp-server-oci",
"--profile",
"DEFAULT"
],
"env": {}
}
}
}
```
**Nota importante:** Asegúrate de que la ruta al ejecutable `npx` sea correcta. Si no estás usando nvm, puedes usar la ruta global a npx:
```bash
# Encuentra la ruta a npx
which npx
```
## 4. Publicación del paquete (opcional)
Si quieres publicar el paquete en npm para que otros usuarios puedan instalarlo fácilmente:
```bash
# Navega al directorio del proyecto
cd /Users/jocebal/Work/mcp-oci-server
# Inicia sesión en npm
npm login
# Publica el paquete
npm publish --access public
```
## 5. Uso del servidor MCP OCI
### Iniciar el servidor manualmente
```bash
# Usando el paquete instalado globalmente
mcp-server-oci
# O usando npx
npx -y @jocebal/mcp-server-oci
# Con un perfil específico
npx -y @jocebal/mcp-server-oci --profile MY_PROFILE
# Con un puerto específico
npx -y @jocebal/mcp-server-oci --port 3001
```
### Uso desde Claude Desktop
1. Abre Claude Desktop
2. Asegúrate de que la configuración en `claude_desktop_config.json` es correcta
3. Claude debería reconocer automáticamente la herramienta "oracle-cloud"
4. Puedes pedirle a Claude que interactúe con tu infraestructura OCI, por ejemplo:
- "Muestra todas mis instancias en Oracle Cloud"
- "Inicia la instancia [nombre] en Oracle Cloud"
- "Dame detalles sobre la instancia [id]"
## 6. Ejemplos de uso con Claude
Aquí hay algunos ejemplos de cómo puedes interactuar con la infraestructura OCI a través de Claude:
### Listar compartimentos
```
Claude, por favor lista todos los compartimentos disponibles en mi cuenta de Oracle Cloud.
```
### Listar instancias
```
Claude, muestra todas las instancias en el compartimento [compartment-id].
```
### Iniciar una instancia
```
Claude, inicia la instancia con ID [instance-id] en Oracle Cloud.
```
### Detener una instancia
```
Claude, detén la instancia [instance-id] en Oracle Cloud.
```
### Obtener detalles de una instancia
```
Claude, dame todos los detalles de la instancia [instance-id].
```
## 7. Solución de problemas
### Error de conexión
Si Claude no puede conectarse al servidor MCP:
1. Verifica que el servidor esté en ejecución
2. Comprueba la configuración en `claude_desktop_config.json`
3. Asegúrate de que las rutas en la configuración sean correctas
4. Verifica los logs del servidor para ver si hay errores
### Error de autenticación OCI
Si el servidor no puede autenticarse con OCI:
1. Verifica que el archivo `~/.oci/config` exista y tenga los permisos correctos
2. Comprueba que las credenciales en el archivo sean válidas
3. Asegúrate de que la clave privada referenciada en el config exista y tenga los permisos correctos
### Problemas con las herramientas
Si las herramientas no funcionan correctamente:
1. Verifica que los permisos de IAM en Oracle Cloud sean suficientes para las operaciones que intentas realizar
2. Comprueba que estás usando el ID de compartimento o instancia correcto
3. Asegúrate de que la región configurada en tu archivo de configuración OCI sea correcta
## 8. Desarrollo y personalización
Si quieres personalizar o extender el servidor MCP OCI:
1. Clona el repositorio
2. Añade nuevas herramientas en el archivo `src/tools/oci-tools.ts`
3. Agrega nuevas funcionalidades al cliente OCI en `src/oci/client.ts`
4. Compila y prueba los cambios con `npm run build` y `npm run dev`
### Ejemplo: Añadir una nueva herramienta
Si quisieras añadir una herramienta para listar balanceadores de carga, podrías:
1. Añadir un nuevo método en el cliente OCI (`src/oci/client.ts`):
```typescript
/**
* List load balancers in a compartment
*/
async listLoadBalancers(compartmentId: string): Promise<any[]> {
// Implementar la lógica para listar balanceadores de carga
// ...
}
```
2. Añadir una nueva herramienta en `src/tools/oci-tools.ts`:
```typescript
/**
* List load balancers in a compartment
*/
public listLoadBalancers: Tool<ListInstancesParams> = {
name: 'list_load_balancers',
description: 'Lists all load balancers in a specific compartment',
parameters: {
type: 'object',
properties: {
compartmentId: {
type: 'string',
description: 'The OCID of the compartment to list load balancers from'
}
},
required: ['compartmentId']
},
handler: async ({ compartmentId }) => {
try {
const loadBalancers = await this.ociClient.listLoadBalancers(compartmentId);
return loadBalancers;
} catch (error) {
console.error('Error listing load balancers:', error);
throw new Error(`Failed to list load balancers: ${(error as Error).message}`);
}
}
};
```
3. Añadir la nueva herramienta al método `getAllTools()`:
```typescript
public getAllTools(): Tool<any>[] {
return [
this.listCompartments,
this.listInstances,
this.getInstance,
this.startInstance,
this.stopInstance,
this.restartInstance,
this.listLoadBalancers // Añadir aquí
];
}
```