Skip to main content
Glama
RianHarahap

my-mcp-server

by RianHarahap
README.md
# My MCP Server (untuk Pemula)

MCP (Model Context Protocol) Server buatan sendiri dengan:
- Modul API key & URL sendiri lewat file `.env`
- Tool contoh: `echo` dan `call_my_api`
- Siap dites pakai **MCP Inspector**
- Siap dipakai langsung di VS Code (GitHub Copilot Chat)

## 1. Install dependencies

```powershell
npm install
```

## 2. Buat file `.env`

Salin `.env.example` menjadi `.env`, lalu isi dengan API key dan URL milikmu:

```powershell
Copy-Item .env.example .env
```

Isi `.env`:
```
MY_API_KEY=api-key-asli-kamu
MY_API_BASE_URL=https://api.contohkamu.com
MCP_SERVER_NAME=my-mcp-server
```

> ⚠️ Jangan pernah commit file `.env` ke git. File ini sudah otomatis di-ignore lewat `.gitignore`.

## 3. Build project

```powershell
npm run build
```

Perintah ini mengompilasi TypeScript di `src/` menjadi JavaScript di `build/`.

## 4. Tes dengan MCP Inspector

MCP Inspector adalah tool visual (browser) untuk mencoba tool-tool MCP-mu tanpa perlu client lain.

```powershell
npm run inspector
```

Ini akan menjalankan `npx @modelcontextprotocol/inspector node build/index.js` dan membuka Inspector di browser. Dari sana kamu bisa:
1. Klik tab **Tools**
2. Pilih tool `echo` atau `call_my_api`
3. Isi parameter, klik **Run Tool**, lihat hasilnya

## 5. Pakai langsung di VS Code

File [.vscode/mcp.json](.vscode/mcp.json) sudah disiapkan. Buka Command Palette → `MCP: List Servers` → pilih `my-mcp-server` → `Start Server`. Server ini otomatis membaca `.env` lewat `envFile`.

## Struktur Project

```
├── .env                  # rahasia kamu (tidak di-commit)
├── .env.example          # contoh isi .env
├── .vscode/mcp.json      # konfigurasi MCP untuk VS Code
├── src/
│   ├── config.ts         # loader environment variable
│   ├── apiClient.ts      # modul pemanggilan API eksternal (pakai API key & URL)
│   └── index.ts          # server MCP utama + daftar tool
├── package.json
└── tsconfig.json
```

## Menambah tool baru

Tambahkan blok `server.registerTool("nama_tool", { ... }, async (input) => { ... })` baru di [src/index.ts](src/index.ts), lalu jalankan ulang `npm run build`.

## Troubleshooting

- **Error "Environment variable ... belum diisi"** → pastikan `.env` sudah ada dan terisi.
- **Tool `call_my_api` gagal** → cek apakah `MY_API_BASE_URL` dan `MY_API_KEY` sudah benar, dan endpoint API mendukung header `Authorization: Bearer <key>`.
- **Inspector tidak terbuka** → pastikan sudah `npm run build` terlebih dahulu.