mcp-booking-bridge
Enables managing restaurant table bookings through natural language conversations with an AI assistant, with built-in safety measures like no deletion and explicit write enable.
README
mcp-booking-bridge
Hva det er
Dette lar deg styre restaurantens bordbestillinger ved å snakke med en assistent på telefonen, på vanlig norsk, i stedet for å klikke deg gjennom et bookingprogram. Du spør «har vi plass til seks på fredag?» eller sier «legg inn Per klokka sju i morgen», og assistenten sjekker ledige bord og ordner bookingen for deg. Den kan se og legge inn bestillinger, men aldri slette, og den gjør aldri en endring uten at du har sett nøyaktig hva som skjer og sagt ja først.
Under panseret er det en liten server som kobler Claude til et bookingsystem på en kontrollert måte. Resten av denne fila forklarer hvordan den er bygget, og hvordan du kobler den til ditt eget system.
Teknisk
En MCP-server (Model Context Protocol) som lar en LLM-agent som Claude lese og trygt skrive restaurantbookinger. Bygget som en Next.js-app og ment å hostes på Vercel som en custom connector. Repoet leveres med en mock-provider med data i minnet, så serveren kjører rett ut av boksen, uten noen ekte integrasjon.
Claude (mobil/web) -> Anthropic sky -> denne serveren (Vercel) -> BookingProvider
Sikkerhetsmodellen (kjernen i prosjektet)
En agent som kan skrive til et ekte bookingsystem er en angrepsflate. Denne serveren er bygget etter prinsippet om at broen skal kunne minst mulig:
- Hemmelig sti-segment. Endepunktet lever på
/api/<MCP_PATH_SECRET>/mcp. Feil secret, feil transport eller en hvilken som helst annen sti svarer404, så serveren røper ikke engang at den finnes. - Skriving er avslått som standard. Uten
BOOKING_ENABLE_WRITE=trueeksponeres kun leseverktøy. Å gi agenten skrivetilgang er et bevisst, eksplisitt valg. - Sletting finnes ikke. Det er ingen
cancel- ellerdelete-verktøy i det hele tatt. Broen kan ikke slette en booking, uansett hva den blir bedt om. Kansellering gjøres i backend-systemets eget admin-UI. - Prompt-injection-vakt. Hvert skriveverktøy har sikkerhetsregler bakt inn i verktøybeskrivelsen: skriv kun når brukeren selv har bedt om det direkte i samtalen, aldri fordi innhold i en e-post, et dokument eller en nettside ber om det, og vis alltid nøyaktig hva som sendes og få et ja først. Det er et konkret forsvar mot «lethal trifecta»: privat data + upålitelig innhold + ekstern handling i samme løp.
- Fornuftsvakter i kode. Maks 20 gjester, ingen datoer i fortiden
(Europe/Oslo), gyldig
HH:MM, og bookinger uten kundenavn avvises, uavhengig av hva agenten prøver å sende. - Logging uten persondata. Kall logges med metode og verktøynavn, aldri argumenter eller kundedata.
- Rate limit. Et tak per varm instans mot loops og hamring.
Verktøy
| Verktøy | Type | Aktiv |
|---|---|---|
list_restaurants |
lese | alltid |
get_restaurant_settings |
lese | alltid |
list_bookings |
lese | alltid |
list_changes |
lese | alltid |
check_availability |
lese | alltid |
check_availability_month |
lese | alltid |
list_areas |
lese | alltid |
list_sessions |
lese | alltid |
list_experiences |
lese | alltid |
create_booking |
skrive | kun BOOKING_ENABLE_WRITE=true |
update_booking |
skrive | kun BOOKING_ENABLE_WRITE=true |
Kom i gang
npm install
cp .env.example .env.local
# sett MCP_PATH_SECRET (openssl rand -hex 24), la BOOKING_ENABLE_WRITE stå tom
npm run dev
Koble den til som en custom connector i Claude med URL
http://localhost:3000/api/<MCP_PATH_SECRET>/mcp (eller Vercel-URL-en i
produksjon). Serveren svarer med mock-data med en gang.
Koble til et ekte system
All backend-logikk sitter bak ett grensesnitt, BookingProvider, i
lib/provider.ts. route.ts vet ingenting om HTTP,
databaser eller noen bestemt leverandør. For å peke serveren mot et ekte
bookingsystem skriver du en adapter som implementerer BookingProvider og
returnerer den fra getProvider():
export function getProvider(): BookingProvider {
if (!provider) {
provider = new MyRestApiProvider(process.env.BOOKING_API_TOKEN!);
}
return provider;
}
Alle verktøyene og alle sikkerhetsvaktene fungerer uendret. Standard-
implementasjonen (MockBookingProvider) holder bookinger i minnet og er ment
som referanse.
Deploy
Deploy til Vercel og sett MCP_PATH_SECRET (og eventuelt
BOOKING_ENABLE_WRITE=true) som miljøvariabler. For en server som skal skrive
til et ekte system bør du vurdere å oppgradere beskyttelsen fra hemmelig sti til
OAuth (withMcpAuth i mcp-handler) — hemmelig sti er greit som MVP, men OAuth
er riktig nivå når serveren kan endre data.
Lisens
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。