Agent-Native Calendar
Agent-Native Google Calendar - manage events, sync, and public booking
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Expose an OpenAPI document to agents as a search-first tool catalog over your existing API.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
SEZZLEE_OPENAPI_CONFIGต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"openapi": {
"command": "npx",
"args": [
"-y",
"@sezzlee/openapi-mcp"
],
"env": {
"SEZZLEE_OPENAPI_CONFIG": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add openapi --env SEZZLEE_OPENAPI_CONFIG='ใส่ค่าของคุณ' -- npx -y @sezzlee/openapi-mcpเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"openapi": {
"command": "npx",
"args": [
"-y",
"@sezzlee/openapi-mcp"
],
"env": {
"SEZZLEE_OPENAPI_CONFIG": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"openapi": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@sezzlee/openapi-mcp"
],
"env": {
"SEZZLEE_OPENAPI_CONFIG": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub sezzlee ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: SEZZLEE_OPENAPI_CONFIG
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.0.0) เข้า registry 22 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Agent-Native Calendar, Excel MCP Server, MCP Server for Excel
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
Agent-Native Google Calendar - manage events, sync, and public booking
ให้ AI สร้างและแก้ไฟล์ Excel ได้เอง ทั้งสูตร กราฟ และ PivotTable โดยไม่ต้องมีโปรแกรม Excel ในเครื่อง
Excel automation for AI - Sheets, Power Query, DAX, VBA, Tables, Ranges and more. Windows only.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
MCP server that exposes an OpenAPI (Swagger 2.0 / OpenAPI 3.0–3.2) document as sezzlee's search-first tool catalog — search_tools, load_tool, invoke_tool, read_result — over a remote backend, calling it with fetch.
Status:
1.0.0, stable. Install withnpm install -g @sezzlee/openapi-mcpor run it with
npx -y @sezzlee/openapi-mcp; the binary issezzlee-openapi.
The NestJS SDK sits inside your backend process: it discovers endpoints from your own controllers/routes and replay each MCP call through your existing pipeline, so your authentication and authorization run exactly as they do today.
openapi-mcp is a separate service. It has no access to a backend's process or pipeline — it reads the backend's OpenAPI document to learn what operations exist (the ingestion rules), and calls the backend over the network for every invocation, attaching a credential it resolves itself (how a credential is chosen and written). This is the only path for a backend that has no embedded SDK integrated into it.
Everything an embedded SDK declares in code, a document declares in one x-sezzlee extension per operation, and a host that cannot edit the document declares under operations in this config: selection, tool name, prefix, behaviour hints, argument curation, variants, families, search terms and revisions (the x-sezzlee extension). A backend that routes many capabilities through one endpoint (POST /Rest/InvokeDynamicMethod/{methodId}) lists them in that operation's x-sezzlee.family; each member becomes its own tool, with its own name, description and body, and the dispatch key stays hidden.
The server reads its configuration from the file named by SEZZLEE_OPENAPI_CONFIG. Build the package first (this repository never runs @sezzlee/core's consumers against a stale dist):
pnpm turbo run build --filter=@sezzlee/openapi-mcp
A minimal config — a local document, opt-in selection so at least one operation is exposed, default stdio transport:
{
"source": "./openapi.json", "selection": { "default": "include" } }
SEZZLEE_OPENAPI_CONFIG=/absolute/path/to/config.json node packages/servers/openapi-mcp/dist/cli.js
source is either a path (resolved relative to the config file's own directory) or an http(s):// URL. On startup the server ingests the document, builds the catalog, prints a one-line-per-diagnostic-code summary to stderr, and then serves stdio or listens for streamable HTTP, depending on transport.kind.
A config that fails validation, or that names an environment variable that is not set, stops the process with a message on stderr and exit code 2. A document that ingests with a fatal diagnostic, or a catalog with a fatal diagnostic (name_collision, invalid_name, ambiguous_selection, …), stops it with exit code 1.
All keys below are read from the SEZZLEE_OPENAPI_CONFIG JSON file and validated with a zod schema (src/platform/config.ts) that rejects unknown keys.
| Key | Type | Default | Notes | |
|---|---|---|---|---|
transport.kind | "stdio" \ | "http" | "stdio" | — |
transport.host | string (http only) | "127.0.0.1" | Must stay loopback (127.0.0.1, ::1, localhost) unless tokenExchange is configured — see below | |
transport.port | int, 0–65535 (http only) | 8787 | — | |
transport.path | string starting with / (http only) | "/mcp" | — | |
transport.resource | url (http only) | required | The OAuth protected-resource identifier advertised at /.well-known/oauth-protected-resource | |
transport.authorizationServers | array of url, min 1 (http only) | required | — | |
transport.allowedHostnames | array of string (http only) | [] | Extra Host header values accepted, on top of the localhost defaults | |
tokenExchange | object | not configured | RFC 8693 token exchange; required for an http transport to authenticate a caller (see Rules) | |
tokenExchange.tokenEndpoint | url | required | — | |
tokenExchange.clientId | string | required | — | |
tokenExchange.clientSecret | { fromEnv: string } | required | — | |
tokenExchange.clientAuth | "basic" \ | "post" | "basic" | client_secret_basic or client_secret_post |
tokenExchange.audience | string | not sent | — | |
tokenExchange.resource | url | not sent | — | |
tokenExchange.scope | string | not sent | — | |
tokenExchange.schemes | array of string, min 1 | required | The security scheme names the exchanged token satisfies | |
source | string, non-empty | required | A local file path (relative to the config file) or an http(s):// URL to the OpenAPI document | |
reload.intervalSeconds | integer ≥ 10 | not set | Re-reads source this often, plus up to 10% jitter. Conditional on the last ETag/Last-Modified for an http(s) source; a body identical to the served one is ignored | |
reload.onSignal | boolean | true | SIGHUP re-reads source. Without a reload block the document is read once at startup and SIGHUP keeps its default action | |
baseUrl | url | not set | Replaces the document's root servers | |
serverVariables | record\ | not set | Overrides for the document's server variable defaults | |
hoistPathPrefix | string starting with / | not set | A leading path segment moved from every route into the base URL | |
outputSchema | "document" \ | "omit" | "document" | omit for a backend whose responses do not match its document |
requestBodyRequired | "document" \ | "always" | "document" | always treats an undeclared requestBody.required as true |
strict | boolean | false | Raises openapi_document_invalid from a warning to a fatal diagnostic | |
selection.default | "include" \ | "exclude" | "exclude" | Whether an operation is exposed when no rule matches it (opt-in by default) |
selection.rules | array of { route?, method?, decision } | [] | route/method are matched the same way the embedded SDKs match a controller route | |
operations | record\ | {} | Laid over each operation's x-sezzlee field by field; a key that names no operation is fatal. A field here may not also be set through names, searchTerms or revision.operations |
| names | record\ | {} | Overrides a tool's name; the value must match `^[a-z][a-z0-
ตัดมาแค่ช่วงต้น อ่านต่อใน repo