API to MCP Gateway
Provides a gateway for n8n to access any REST API through MCP tools, enabling automation of API operations.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@API to MCP Gatewayimport OpenAPI spec from https://api.example.com/openapi.json"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
API to MCP Gateway
English
API to MCP Gateway is a modern, open-source platform that acts as a bridge between standard REST/OpenAPI Web APIs and the Model Context Protocol (MCP). It dynamically converts REST endpoints into MCP tools, enabling LLM clients (such as Cursor, Claude Desktop, or n8n) to seamlessly and safely interact with your APIs through a unified interface.
Built entirely using a modern and high-performance stack (TypeScript + Next.js App Router), this project provides a unified architecture for API management, OpenAPI spec ingestion, secure credential encryption, and MCP server hosting.
Key Features
🔌 Dynamic OpenAPI Parsing: Upload OpenAPI/Swagger specification files or fetch them from a URL to instantly register endpoints.
🛠️ Auto-Tool Extraction: Automatically map REST endpoints into standard MCP tools.
🔒 Secure Credential Storage: Encrypt target API headers, tokens, and keys at rest using military-grade AES-256-CBC encryption.
🛡️ SSRF Protection: Built-in security guard preventing Server-Side Request Forgery when importing remote schemas.
🚀 Dual MCP Transport: Exposes both an HTTP MCP endpoint (ideal for web/cloud integrations like n8n) and a stdio MCP process (perfect for local clients like Claude Desktop).
💻 Elegant Dashboard: Manage integrations, credentials, endpoints, and tools via a fully responsive Web UI.
System Architecture
graph TD
%% Subgraph 1: Clients
subgraph Clients ["<font size=4 color='#3b82f6'>■ Clients / LLM Hosts</font>"]
Claude["<b>Claude Desktop</b><br/><i>(stdio)</i>"]
Cursor["<b>Cursor / IDE</b><br/><i>(HTTP)</i>"]
n8n["<b>n8n Workflows</b><br/><i>(HTTP)</i>"]
Admin["<b>Developer / Admin</b><br/><i>(Web Browser)</i>"]
end
%% Subgraph 2: Gateway
subgraph Gateway ["<font size=4 color='#10b981'>■ API to MCP Gateway (Next.js)</font>"]
STDIO["<b>stdio Entry</b><br/><i>mcp/stdio.ts</i>"]
HTTP_EP["<b>HTTP MCP Route</b><br/><i>api/mcp/route.ts</i>"]
UI["<b>Dashboard UI</b><br/><i>app/(dashboard)</i>"]
ServerCore["<b>MCP Server Core</b><br/><i>lib/mcp/server.ts</i>"]
Parser["<b>Spec Parser</b><br/><i>lib/server/spec-parser.ts</i>"]
Proxy["<b>API Proxy</b><br/><i>lib/mcp/api-proxy.ts</i>"]
Crypto["<b>Crypto Service</b><br/><i>lib/server/crypto.ts</i>"]
end
%% Subgraph 3: Storage
subgraph Storage ["<font size=4 color='#a78bfa'>■ Database / Data Layer</font>"]
Prisma["<b>Prisma ORM</b><br/><i>lib/db.ts</i>"]
DB[("<b>PostgreSQL DB</b>")]
end
%% Subgraph 4: External Services
subgraph External ["<font size=4 color='#f59e0b'>■ Target Services / External APIs</font>"]
ExtAPI["<b>External Web APIs</b><br/><i>(Target Endpoints)</i>"]
end
%% Connections
%% Clients to Entrypoints
Claude ==> STDIO
Cursor ==> HTTP_EP
n8n ==> HTTP_EP
Admin ==> UI
%% Entrypoints to Core / Actions
STDIO --> ServerCore
HTTP_EP --> ServerCore
%% UI & Parser Flow
UI --> Parser
Parser --> Prisma
%% Core DB loading
ServerCore --> Prisma
Prisma --> DB
%% Execution Flow
ServerCore --> Proxy
Proxy <--> Crypto
Proxy ==> ExtAPI
%% Styling Nodes
classDef clientNode fill:#1e2937,stroke:#3b82f6,stroke-width:2px,color:#fff;
classDef gatewayNode fill:#1f2937,stroke:#10b981,stroke-width:2px,color:#fff;
classDef dbNode fill:#1e1b4b,stroke:#a78bfa,stroke-width:2px,color:#fff;
classDef extNode fill:#78350f,stroke:#f59e0b,stroke-width:2px,color:#fff;
class Claude,Cursor,n8n,Admin clientNode;
class STDIO,HTTP_EP,UI,ServerCore,Parser,Proxy,Crypto gatewayNode;
class Prisma,DB dbNode;
class ExtAPI extNode;
%% Subgraph Styling
style Clients fill:#111827,stroke:#3b82f6,stroke-width:2px;
style Gateway fill:#0b0f19,stroke:#10b981,stroke-width:2px;
style Storage fill:#11101b,stroke:#a78bfa,stroke-width:2px;
style External fill:#14110b,stroke:#f59e0b,stroke-width:2px;How the System Works
Management & Config: Developers define integrations, upload OpenAPI schemas, and register authentication credentials securely via the Web Dashboard.
Database Ingestion: Schemas are parsed and stored as structured endpoints in the PostgreSQL database using Prisma ORM.
MCP Hosting: The gateway listens for requests on both HTTP and stdio channels.
Proxy & Security: When an LLM executes a tool, the Gateway loads the endpoint configuration, decrypts the API credentials in memory via AES-256-CBC, constructs the secure HTTP request, forwards it to the target service, and returns the response in standard MCP format.
Tech Stack
Framework: Next.js 15 (App Router), React 19, TypeScript
Styling & UI: Tailwind CSS + shadcn/ui (new-york style), lucide-react, sonner
Database: Prisma ORM with PostgreSQL
Protocol & Communication:
@modelcontextprotocol/sdk, axios, zod
Project Structure
app/
(dashboard)/integrations/... # Responsive management dashboard (Server Components)
api/integrations/** # REST API Route Handlers for dashboard config
api/mcp/route.ts # MCP HTTP transport route (listTools, callTool)
lib/
db.ts # Prisma database client singleton
server/crypto.ts # AES-256-CBC encryption for credential security
server/ssrf-guard.ts # SSRF protection layer for secure URL imports
server/spec-parser.ts # OpenAPI/Swagger spec parsing logic
server/services/* # Business logic services (integrations, credentials, specs)
mcp/* # MCP core server, proxying and schema translation
validation/schemas.ts # Zod validation schemas
components/ui/* # Shared shadcn/ui components
components/features/* # Integration, credential, spec, endpoint, and tool dashboard panels
mcp/stdio.ts # Claude Desktop stdio MCP server entrypoint
prisma/schema.prisma # PostgreSQL database schemaInstallation & Setup
Prerequisites
Node.js 18+ (Node.js 22 recommended)
PostgreSQL database instance
Step 1: Clone and Install
git clone https://github.com/volkan-m/APItoMCPGateway.git
cd APItoMCPGateway
npm installStep 2: Configure Environment
Copy the example environment file and adjust the values:
cp ENV.EXAMPLE .envStep 3: Database Migration
Generate Prisma client and run migrations:
npx prisma generate
npx prisma migrate deployStep 4: Run Development Server
npm run devOpen http://localhost:3000 in your browser.
Environment Variables
Variable | Description |
| PostgreSQL connection string (Prisma) |
| Key used to encrypt and decrypt API credentials at rest (32-character string). |
| Optional fallback authorization token for the proxy. |
| Secret token used to secure the dashboard and API endpoints. If left blank, auth is disabled (development mode). |
| Password required to log into the web dashboard (used alongside |
| Default integration ID used when starting the stdio server ( |
| Set to |
| Cache TTL (ms) for endpoint definitions in the MCP HTTP transport. Default: |
MCP Client Integration
Option A: HTTP (Cursor, n8n, etc.)
Send a POST request to /api/mcp with the header X-Integration-Id:
List Tools:
curl -X POST http://localhost:3000/api/mcp \
-H "Content-Type: application/json" \
-H "X-API-Key: $AUTH_TOKEN" \
-H "X-Integration-Id: <integration-id>" \
-d '{ "method": "listTools" }'Call Tool:
curl -X POST http://localhost:3000/api/mcp \
-H "Content-Type: application/json" \
-H "X-API-Key: $AUTH_TOKEN" \
-H "X-Integration-Id: <integration-id>" \
-d '{
"method": "callTool",
"params": { "name": "<tool-name>", "arguments": {} }
}'Option B: stdio (Claude Desktop)
Add the configuration below to your claude_desktop_config.json:
{
"mcpServers": {
"api-to-mcp": {
"command": "npm",
"args": ["run", "mcp:stdio"],
"cwd": "c:/Sources/BruteForceRepo/APItoMCPGateway",
"env": { "INTEGRATION_ID": "<integration-id>" }
}
}
}Contributing & Open Source
Contributions are highly welcome! We follow standard open-source conventions:
Fork the repository on GitHub.
Create a feature branch from
main(git checkout -b feature/amazing-feature).Commit your changes with clear and descriptive messages.
Make sure your code compiles and matches the project structure (
npm run typecheck).Open a Pull Request explaining your enhancements or bug fixes.
License
This project is licensed under the MIT License. Feel free to use, modify, and distribute it.
Related MCP server: openapi-mcp-bridge
Türkçe
API to MCP Gateway, standart REST/OpenAPI Web API'leri ile Model Context Protocol (MCP) arasında köprü vazifesi gören, modern ve açık kaynaklı bir platformdur. REST uç noktalarını dinamik olarak MCP araçlarına (tool) dönüştürerek LLM istemcilerinin (Cursor, Claude Desktop, n8n gibi) API'lerinizle birleşik bir arayüz üzerinden güvenli ve yerel şekilde çalışmasını sağlar.
Tamamen modern ve yüksek performanslı bir teknoloji yığını (TypeScript + Next.js App Router) ile geliştirilen proje; API yönetimi, OpenAPI şeması aktarımı, güvenli kimlik bilgisi şifreleme ve MCP sunucusu barındırma işlemlerini tek bir çatı altında toplar.
Temel Özellikler
🔌 Dinamik OpenAPI Analizi: OpenAPI/Swagger spesifikasyon dosyalarını yükleyerek veya uzak bir URL'den çekerek uç noktalarınızı anında kaydedin.
🛠️ Otomatik Araç Çıkarımı: REST uç noktalarını standart MCP araçlarına (tools) otomatik olarak dönüştürün.
🔒 Güvenli Kimlik Bilgisi Depolama: API anahtarlarını, token'ları ve başlık bilgilerini veritabanında askeri düzeyde AES-256-CBC algoritmasıyla şifrelenmiş olarak saklayın.
🛡️ SSRF Koruması: Uzak şemaları içe aktarırken Server-Side Request Forgery (Sunucu Tarafı İstek Sahteciliği) açıklarını engelleyen dahili güvenlik mekanizması.
🚀 Çift Yönlü MCP Sunumu: Hem web/bulut entegrasyonları (n8n gibi) için uygun bir HTTP MCP uç noktası hem de yerel istemciler (Claude Desktop gibi) için ideal bir stdio MCP süreci sunar.
💻 Modern Yönetim Paneli: Entegrasyonları, kimlik bilgilerini, uç noktaları ve araçları tamamen duyarlı (responsive) bir web arayüzü üzerinden yönetin.
Sistem Mimarisi
graph TD
%% Subgraph 1: İstemciler
subgraph Clients ["<font size=4 color='#3b82f6'>■ İstemciler / LLM Sunucuları</font>"]
Claude["<b>Claude Desktop</b><br/><i>(stdio)</i>"]
Cursor["<b>Cursor / IDE</b><br/><i>(HTTP)</i>"]
n8n["<b>n8n İş Akışları</b><br/><i>(HTTP)</i>"]
Admin["<b>Geliştirici / Yönetici</b><br/><i>(Tarayıcı)</i>"]
end
%% Subgraph 2: Gateway
subgraph Gateway ["<font size=4 color='#10b981'>■ Next.js Gateway Uygulaması</font>"]
STDIO["<b>stdio Girişi</b><br/><i>mcp/stdio.ts</i>"]
HTTP_EP["<b>HTTP MCP Uç Noktası</b><br/><i>api/mcp/route.ts</i>"]
UI["<b>Yönetim Paneli (UI)</b><br/><i>app/(dashboard)</i>"]
ServerCore["<b>MCP Sunucu Çekirdeği</b><br/><i>lib/mcp/server.ts</i>"]
Parser["<b>Spesifikasyon Ayrıştırıcı</b><br/><i>lib/server/spec-parser.ts</i>"]
Proxy["<b>API Proxy Katmanı</b><br/><i>lib/mcp/api-proxy.ts</i>"]
Crypto["<b>Crypto Servisi</b><br/><i>lib/server/crypto.ts</i>"]
end
%% Subgraph 3: Veri Tabanı
subgraph Storage ["<font size=4 color='#a78bfa'>■ Veritabanı / Veri Katmanı</font>"]
Prisma["<b>Prisma ORM</b><br/><i>lib/db.ts</i>"]
DB[("<b>PostgreSQL Veritabanı</b>")]
end
%% Subgraph 4: Dış Servisler
subgraph External ["<font size=4 color='#f59e0b'>■ Hedef Servisler / Dış API'ler</font>"]
ExtAPI["<b>Dış Web API'leri</b><br/><i>(Hedef Uç Noktalar)</i>"]
end
%% Bağlantılar
%% İstemcilerden Giriş Noktalarına
Claude ==> STDIO
Cursor ==> HTTP_EP
n8n ==> HTTP_EP
Admin ==> UI
%% Giriş Noktalarından Çekirdek İşlemlere
STDIO --> ServerCore
HTTP_EP --> ServerCore
%% Arayüz ve Ayrıştırıcı Akışı
UI --> Parser
Parser --> Prisma
%% Çekirdek Veri Erişimleri
ServerCore --> Prisma
Prisma --> DB
%% İstek Yönlendirme & Şifre Çözme Akışı
ServerCore --> Proxy
Proxy <--> Crypto
Proxy ==> ExtAPI
%% Düğüm Stilleri
classDef clientNode fill:#1e2937,stroke:#3b82f6,stroke-width:2px,color:#fff;
classDef gatewayNode fill:#1f2937,stroke:#10b981,stroke-width:2px,color:#fff;
classDef dbNode fill:#1e1b4b,stroke:#a78bfa,stroke-width:2px,color:#fff;
classDef extNode fill:#78350f,stroke:#f59e0b,stroke-width:2px,color:#fff;
class Claude,Cursor,n8n,Admin clientNode;
class STDIO,HTTP_EP,UI,ServerCore,Parser,Proxy,Crypto gatewayNode;
class Prisma,DB dbNode;
class ExtAPI extNode;
%% Alt Grafik Stilleri
style Clients fill:#111827,stroke:#3b82f6,stroke-width:2px;
style Gateway fill:#0b0f19,stroke:#10b981,stroke-width:2px;
style Storage fill:#11101b,stroke:#a78bfa,stroke-width:2px;
style External fill:#14110b,stroke:#f59e0b,stroke-width:2px;Sistemin Çalışma Mantığı
Yönetim ve Yapılandırma: Geliştiriciler, yönetim paneli aracılığıyla entegrasyonları tanımlar, OpenAPI şemalarını sisteme aktarır ve ilgili API kimlik bilgilerini güvenli bir şekilde kaydeder.
Veritabanı Kaydı: Şemalar otomatik olarak çözümlenerek Prisma ORM yardımıyla PostgreSQL veritabanına yapılandırılmış uç noktalar olarak kaydedilir.
MCP Sunumu: Gateway, hem HTTP hem de stdio kanalları üzerinden gelen talepleri dinler.
Proxy ve Güvenlik: LLM bir aracı çalıştırdığında, Gateway uç nokta tanımını yükler, API anahtarlarını bellek üzerinde AES-256-CBC ile çözer, güvenli HTTP isteğini oluşturup hedef dış servise iletir ve yanıtı MCP standart formatında istemciye geri döner.
Teknoloji Yığını
Framework: Next.js 15 (App Router), React 19, TypeScript
Tasarım & UI: Tailwind CSS + shadcn/ui (new-york tarzı), lucide-react, sonner
Veritabanı: Prisma ORM ve PostgreSQL
Protokol:
@modelcontextprotocol/sdk, axios, zod
Proje Yapısı
app/
(dashboard)/integrations/... # Duyarlı yönetim paneli (Server Components)
api/integrations/** # Yönetim paneli yapılandırma REST API Route Handler'ları
api/mcp/route.ts # MCP HTTP taşıyıcı uç noktası (listTools, callTool)
lib/
db.ts # Prisma veritabanı istemcisi singleton
server/crypto.ts # Kimlik bilgileri güvenliği için AES-256-CBC şifreleme
server/ssrf-guard.ts # Güvenli URL içe aktarımları için SSRF koruması
server/spec-parser.ts # OpenAPI/Swagger spesifikasyonu ayrıştırma mantığı
server/services/* # İş mantığı servisleri (entegrasyonlar, kimlik bilgileri, specs)
mcp/* # MCP çekirdek sunucusu, yönlendirme ve şema dönüşümü
validation/schemas.ts # Zod doğrulama şemaları
components/ui/* # Paylaşılan shadcn/ui bileşenleri
components/features/* # Arayüz entegrasyon, kimlik bilgisi, endpoint ve tool panelleri
mcp/stdio.ts # Claude Desktop stdio MCP sunucu giriş noktası
prisma/schema.prisma # PostgreSQL veritabanı şemasıKurulum ve Yapılandırma
Gereksinimler
Node.js 18+ (Node.js 22 önerilir)
PostgreSQL veritabanı sunucusu
Adım 1: Projeyi Klonlayın ve Bağımlılıkları Kurun
git clone https://github.com/volkan-m/APItoMCPGateway.git
cd APItoMCPGateway
npm installAdım 2: Ortam Değişkenlerini Ayarlayın
Örnek ortam dosyasını kopyalayın ve değerleri düzenleyin:
cp ENV.EXAMPLE .envAdım 3: Veritabanı Şemasını Uygulayın
Prisma istemcisini oluşturun ve veritabanı tablolarını hazırlayın:
npx prisma generate
npx prisma migrate deployAdım 4: Geliştirme Sunucusunu Başlatın
npm run devTarayıcınızda http://localhost:3000 adresini açarak yönetim paneline ulaşabilirsiniz.
Ortam Değişkenleri
Değişken | Açıklama |
| PostgreSQL bağlantı adresi (Prisma) |
| API kimlik bilgilerini veritabanında şifrelemek ve çözmek için kullanılan 32 karakterlik anahtar. |
| Proxy istekleri için isteğe bağlı fallback yetkilendirme belirteci (token). |
| Yönetim paneli ve API uç noktalarını korumak için kullanılan gizli anahtar. Boş bırakılırsa koruma devre dışı kalır (geliştirme modu). |
| Yönetim paneline giriş için gerekli şifre ( |
| stdio sunucusu ( |
| TLS sertifika doğrulamasını kapatmak için |
| MCP HTTP taşıyıcısında endpoint tanımları için önbellek süresi (ms). Varsayılan: |
MCP İstemci Entegrasyonu
Yöntem A: HTTP (Cursor, n8n vb.)
/api/mcp adresine X-Integration-Id başlığı ile bir POST isteği gönderin:
Araçları Listele (List Tools):
curl -X POST http://localhost:3000/api/mcp \
-H "Content-Type: application/json" \
-H "X-API-Key: $AUTH_TOKEN" \
-H "X-Integration-Id: <integration-id>" \
-d '{ "method": "listTools" }'Araç Çağır (Call Tool):
curl -X POST http://localhost:3000/api/mcp \
-H "Content-Type: application/json" \
-H "X-API-Key: $AUTH_TOKEN" \
-H "X-Integration-Id: <integration-id>" \
-d '{
"method": "callTool",
"params": { "name": "<tool-name>", "arguments": {} }
}'Yöntem B: stdio (Claude Desktop)
Aşağıdaki yapılandırmayı claude_desktop_config.json dosyanıza ekleyin:
{
"mcpServers": {
"api-to-mcp": {
"command": "npm",
"args": ["run", "mcp:stdio"],
"cwd": "c:/Sources/BruteForceRepo/APItoMCPGateway",
"env": { "INTEGRATION_ID": "<integration-id>" }
}
}
}Katkıda Bulunma & Açıklık Politikası
Katkılarınızı sabırsızlıkla bekliyoruz! Standart açık kaynaklı iş akışlarını takip ediyoruz:
Bu depoyu fork edin.
maindalından yeni bir özellik dalı oluşturun (git checkout -b feature/amazing-feature).Değişikliklerinizi açıklayıcı commit mesajlarıyla commit edin.
Kodun derlendiğinden ve hata içermediğinden emin olun (
npm run typecheck).Geliştirmelerinizi açıklayan bir Pull Request (PR) açın.
Lisans
Bu proje MIT Lisansı ile lisanslanmıştır. Özgürce kullanabilir, değiştirebilir ve dağıtabilirsiniz.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/volkan-m/api-to-mcp-gateway'
If you have feedback or need assistance with the MCP directory API, please join our Discord server