Skip to main content
Glama
marty5499
by marty5499

MCP API Bridge Server

一個 Model Context Protocol (MCP) 伺服器,用於串接 Google Sheets API、Azure AI API 和 MQTT API。

功能特色

🗃️ Google Sheets API

  • 產生新增資料到試算表的程式碼範例

  • 產生讀取試算表所有資料的程式碼範例

  • 產生更新指定列資料的程式碼範例

  • 產生刪除指定列資料的程式碼範例

  • 產生覆蓋整張試算表的程式碼範例

🤖 Azure AI API

  • 產生使用 Azure AI (GPT-4o-mini) 的程式碼範例

  • 支援同步和串流模式的程式碼範例

  • WebSocket 程式碼實作範例

📡 MQTT API

  • 建立 IoT 裝置連線

  • 發布 MQTT 訊息 (同步/非同步)

  • 訂閱 MQTT 主題

  • 註冊訊息處理器

  • 支援 QoS 等級設定

Related MCP server: MCP Google Suite

安裝與設定

前置需求

  • Node.js 18.0.0 或更高版本

  • npm 或 yarn

  • Cursor IDE (如果要在 Cursor 中使用)

🚀 快速安裝 (推薦)

1. 全域安裝 MCP API Bridge

npm install -g https://github.com/marty5499/mcp-api-bridge.git

2. 在 Cursor 中設定 MCP

找到並編輯 Cursor 的 MCP 設定檔案:

macOS:

~/.cursor/mcp.json

Linux:

~/.config/cursor/mcp.json

Windows:

%APPDATA%\Cursor\mcp.json

在設定檔案中加入以下配置:

{
  "mcpServers": {
    "api-bridge": {
      "command": "mcp-api-bridge",
      "env": {}
    }
  }
}

3. 重啟 Cursor

重啟 Cursor IDE 使設定生效。

🔄 更新到最新版本

當有新版本發布時,使用以下命令更新:

npm update -g https://github.com/marty5499/mcp-api-bridge.git

🛠️ 開發者安裝 (本地開發)

如果您想要修改或開發此專案:

  1. 複製專案

git clone https://github.com/marty5499/mcp-api-bridge.git
cd mcp-api-bridge
  1. 安裝依賴套件

npm install
  1. 本地測試

# 測試工具列表
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | node mcp-api-bridge.js

# 啟動開發模式(檔案監控)
npm run dev

使用方式

✅ 驗證安裝

安裝完成後,您可以在 Cursor 中看到 MCP API Bridge 伺服器已連線,並可使用以下 11 個工具:

  • Google Sheets API (5個工具):產生 API 操作程式碼範例

  • Azure AI API (1個工具):產生 AI 對話程式碼範例

  • MQTT API (5個工具):完整的 IoT 裝置管理功能

可用工具

Google Sheets API 工具

  1. google_sheet_append - 產生新增資料的程式碼範例

{
  "url": "https://docs.google.com/spreadsheets/d/your-sheet-id/edit",
  "values": ["張三", "25", "工程師", "2024-01-15"]
}
  1. google_sheet_get - 產生讀取資料的程式碼範例

{
  "url": "https://docs.google.com/spreadsheets/d/your-sheet-id/edit"
}
  1. google_sheet_update - 產生更新資料的程式碼範例

{
  "url": "https://docs.google.com/spreadsheets/d/your-sheet-id/edit",
  "rowIdx": 2,
  "cols": ["李四", "30", "設計師", "2024-01-16"]
}
  1. google_sheet_delete - 產生刪除資料的程式碼範例

{
  "url": "https://docs.google.com/spreadsheets/d/your-sheet-id/edit",
  "rowIdx": 3
}
  1. google_sheet_save - 產生覆蓋資料的程式碼範例

{
  "url": "https://docs.google.com/spreadsheets/d/your-sheet-id/edit",
  "rows": [
    ["姓名", "年齡", "職業", "日期"],
    ["王五", "28", "產品經理", "2024-01-17"]
  ]
}

Azure AI API 工具

  1. azure_ai_chat - 產生 Azure AI 程式碼範例

{
  "prompt": "我需要一個聊天機器人的程式碼範例",
  "streaming": false
}

MQTT API 工具

  1. mqtt_device_create - 建立裝置

{
  "deviceId": "sensor001"
}
  1. mqtt_publish - 發布訊息

{
  "deviceId": "sensor001",
  "topic": "server001.data",
  "payload": {
    "temperature": 25.5,
    "humidity": 60.2
  },
  "qos": 0
}
  1. mqtt_publish_sync - 同步發布

{
  "deviceId": "client001",
  "topic": "server001.getConfig",
  "payload": {
    "configType": "network"
  },
  "timeout": 10000,
  "qos": 1
}
  1. mqtt_register_handler - 註冊處理器

{
  "deviceId": "server001",
  "action": "data",
  "handlerCode": "const { payload } = message; console.log('處理資料:', payload); return { status: 'ok' };"
}
  1. mqtt_subscribe - 訂閱主題

{
  "deviceId": "monitor001",
  "topic": "alerts/+",
  "qos": 1
}

API 端點資訊

Google Sheets API

  • 基礎 URL: https://hshgpt.webduino.tw/api/sheets/

  • 支援操作: append, get, update, del, save

Azure AI API

  • WebSocket URL: wss://hshgpt.webduino.tw

  • 協定: WebSocket 串流通訊

MQTT API

  • Broker URL: wss://mqtt-edu.webduino.io/mqtt

  • 認證: username: hsh2025, password: hsh2025

實際應用範例

1. IoT 資料收集系統

// 步驟 1: 建立感測器裝置
await mcp.call('mqtt_device_create', { deviceId: 'temperature_sensor' });

// 步驟 2: 建立資料伺服器
await mcp.call('mqtt_device_create', { deviceId: 'data_server' });

// 步驟 3: 註冊處理器,將資料記錄到 Google Sheets
await mcp.call('mqtt_register_handler', {
  deviceId: 'data_server',
  action: 'logData',
  handlerCode: `
    const { payload } = message;
    // 這裡可以調用 Google Sheets API 記錄資料
    console.log('記錄資料:', payload);
    return { status: 'logged' };
  `
});

// 步驟 4: 感測器發送資料
await mcp.call('mqtt_publish', {
  deviceId: 'temperature_sensor',
  topic: 'data_server.logData',
  payload: {
    temperature: 23.5,
    location: '會議室A',
    timestamp: new Date().toISOString()
  }
});

2. AI 輔助資料分析

// 步驟 1: 讀取試算表資料
const data = await mcp.call('google_sheet_get', {
  url: 'https://docs.google.com/spreadsheets/d/sales-data/edit'
});

// 步驟 2: 產生 Azure AI 分析程式碼
const aiCodeExample = await mcp.call('azure_ai_chat', {
  prompt: '我需要一個分析銷售資料的 AI 程式碼範例',
  streaming: false
});

// 步驟 3: 根據產生的程式碼範例,實作 AI 分析功能
// (這裡需要開發者根據範例程式碼進行實作)
console.log('產生的 AI 程式碼範例:', aiCodeExample.content[0].text);

錯誤處理

所有工具調用都包含錯誤處理機制:

  • Google Sheets API: 檢查 URL 格式和 API 回應

  • Azure AI API: WebSocket 連線錯誤和逾時處理

  • MQTT API: 連線狀態檢查和裝置管理

專案結構

mcp-api-bridge/
├── mcp-api-bridge.js     # 主要 MCP 伺服器檔案
├── lib/
│   └── iotDevice.js      # MQTT IoT 裝置類別
├── examples/
│   └── usage-examples.js # 使用範例
├── docs/
│   └── changelog.md      # 變更日誌
├── package.json          # 專案設定
├── .gitignore           # Git 忽略設定
└── README.md            # 專案說明

📦 GitHub 儲存庫

開發指南

新增工具

  1. setupToolHandlers() 中定義工具 schema

  2. 實作對應的處理函數

  3. 新增到 CallToolRequestSchema 的 switch 語句中

測試

# 執行範例
node examples/usage-examples.js

# 測試 MCP 伺服器連線
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | node mcp-api-bridge.js

# 測試特定工具 (Google Sheets)
echo '{"jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": {"name": "google_sheet_get", "arguments": {"url": "https://docs.google.com/spreadsheets/d/test/edit"}}}' | node mcp-api-bridge.js

# 測試全域安裝版本
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | mcp-api-bridge

🔧 疑難排解

問題:Cursor 中看不到 MCP 伺服器

  1. 檢查 ~/.cursor/mcp.json 設定檔案格式是否正確

  2. 確認已重啟 Cursor IDE

  3. 檢查終端機中是否能執行 mcp-api-bridge 命令

問題:工具調用失敗

  1. 檢查網路連線狀況

  2. 確認 API 端點可正常訪問

  3. 查看 MCP 伺服器日誌輸出

問題:更新後功能異常

# 清除 npm 快取並重新安裝
npm cache clean --force
npm uninstall -g mcp-api-bridge
npm install -g https://github.com/marty5499/mcp-api-bridge.git

授權

MIT License

貢獻

歡迎提交 Issues 和 Pull Requests!

更新日誌

v1.0.2 (2025-01-15)

  • 🔧 修正 Google Sheets API 工具功能 - 產生程式碼範例而非直接調用 API

  • 🚀 支援全域安裝和 Cursor MCP 配置

  • 📖 完整的安裝和配置指南

  • 🛠️ 疑難排解和測試指南

v1.0.1 (2024-01-20)

  • 🔧 修正 Azure AI API 工具功能定位

  • 📖 更新相關文件和範例

v1.0.0 (2024-01-20)

  • 初始版本發布

  • 支援 Google Sheets、Azure AI、MQTT API

  • 完整的 MCP 工具實作

  • 提供使用範例和文件

Available Tools

11 tools
azure_ai_chatB

產生使用 Azure AI (GPT-4o-mini) 的程式碼範例

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYes描述需要什麼樣的 Azure AI 使用範例
streamingNo是否需要串流模式的程式碼範例 (預設: false)

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided. The description only indicates code generation but does not disclose behavioral traits such as side effects, authorization needs, output format, or whether it calls an external API.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that is front-loaded and contains no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is very brief for a generative code tool. It lacks information about the output format, language, or how the result is returned, especially since no output schema is provided.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description adds no additional meaning beyond the schema. Baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool generates code examples using Azure AI (GPT-4o-mini), with a specific verb and resource. It distinguishes itself from sibling tools which are about Google Sheets and MQTT.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs. alternatives or any context for usage. It simply states the function without explaining prerequisites or scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

google_sheet_appendD

產生使用 Google Sheets API 新增一列資料的程式碼範例

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes試算表完整 URL
valuesYes欄位值陣列,如 ["aaa","bbb","ccc"]

TDQS

D1.6/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description fails to disclose whether the tool actually appends data or only returns a code snippet. This is a critical behavioral omission.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence but is ambiguous and misleading. Conciseness is offset by poor accuracy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity and no output schema, the description fails to adequately describe the tool's behavior, leaving the agent unsure if it performs or simulates the append operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters (url and values). The description adds no additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states '生成使用 Google Sheets API 新增一列資料的程式碼範例' (generate code example for appending a row), which contradicts the tool name 'google_sheet_append' that implies actual execution. The purpose is misleading and unclear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus siblings like google_sheet_update or google_sheet_save. The description does not clarify context or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

google_sheet_deleteB

產生使用 Google Sheets API 刪除指定列資料的程式碼範例

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes試算表 URL
rowIdxYes1-based 列號

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It indicates the tool generates code (non-destructive), but lacks details on output format, programming language, or any side effects. Minimal disclosure beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence in Chinese, 14 characters, very concise and to the point. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 2-param tool with no output schema, the description is adequate but lacks details on return value (the code example format, language, etc.). It does not fully specify what the agent can expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds no extra meaning beyond the schema fields url and rowIdx; it does not explain their role or provide examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it generates a code example for deleting a specified row, specifying the verb 'generate code example' and resource 'deleting row data'. This distinguishes it from sibling tools that directly perform operations like append, get, update, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. It does not mention that it only generates code and does not perform actual deletion, nor does it specify prerequisites or context for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

google_sheet_getC

產生使用 Google Sheets API 讀取所有資料的程式碼範例

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes試算表 URL

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full burden. It fails to disclose whether the tool actually reads data or merely generates code. The behavior is ambiguous, and there is no mention of side effects, permissions, or return format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise, but its content is somewhat misleading. It earns its place but lacks necessary clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (1 param, no output schema), the description could be adequate if correct, but it fails to clarify the core action (reading data vs. generating code). The missing output schema and annotations further reduce completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of parameters, describing 'url' as '試算表 URL' (spreadsheet URL). The description adds no additional meaning beyond the schema, meeting the baseline for full coverage but not compensating for the unclear purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states '產生使用 Google Sheets API 讀取所有資料的程式碼範例' (generate code example for reading all data using Google Sheets API), which suggests the tool returns code, not actual data. This conflicts with the tool name 'get', which implies retrieving data. The purpose is unclear and potentially misleading, making it hard for an agent to decide whether to use it for data retrieval or code generation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus siblings like google_sheet_append, google_sheet_delete, etc. The description does not specify any context or prerequisites, leaving the agent without information about appropriate usage scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

google_sheet_saveB

產生使用 Google Sheets API 覆蓋整張試算表的程式碼範例

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes試算表 URL
rowsYes二維陣列格式的新資料

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description states it generates code examples, implying no direct write. But it lacks disclosure of output format, language, or side effects, which is acceptable but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single-sentence description is concise and front-loaded, but the name-description mismatch slightly detracts from structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Without an output schema, the description fails to explain the nature of the generated code (e.g., language, structure), leaving a significant gap for the agent to understand the tool's output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions already cover the two parameters (URL and rows). The description adds no extra semantic meaning, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it generates code examples for overwriting an entire spreadsheet, which distinguishes it from sibling tools that perform actual operations. However, the tool name 'save' implies direct execution, causing minor ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool vs. siblings like google_sheet_update or google_sheet_append, nor any context for preference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

google_sheet_updateB

產生使用 Google Sheets API 更新指定列資料的程式碼範例

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes試算表 URL
colsYes欄位值陣列
rowIdxYes1-based 列號

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It clearly states it 'generates a code example', implying read-only behavior without side effects. However, it does not explicitly confirm non-destructiveness or mention authentication requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that clearly conveys the tool's action and resource. It is front-loaded and wastes no words, though it could be slightly more informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite clear parameters, the description lacks details about the output format (e.g., programming language, code structure). Since there is no output schema, the description should compensate, but it does not fully specify what the generated code example entails.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear parameter descriptions. The description does not add extra meaning beyond what the schema provides, but the schema itself is adequate. Baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states it generates a code example to update row data using Google Sheets API. The verb 'generate' and resource 'code example' are specific, and it distinguishes from sibling tools like google_sheet_append which directly append data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like google_sheet_update (if it existed) or other sheets tools. The description lacks context for when code generation is appropriate versus direct operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mqtt_device_createB

建立 MQTT IoT 裝置連線

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIdYes裝置邏輯 ID

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description lacks any behavioral details such as side effects, idempotency, authentication requirements, or whether the operation is destructive. The agent receives no safety cues.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence. It front-loads the action and is efficient, though it could include more structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description is somewhat complete but lacks information about return values or side effects. The Chinese-only text may limit clarity for non-Chinese agents.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes the parameter 'deviceId' as '裝置邏輯 ID'. The description adds no further meaning. With 100% schema coverage, a score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: establishing an MQTT IoT device connection. It uses a specific verb ('建立') and resource, distinguishing it from siblings like mqtt_publish and mqtt_subscribe.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, conditions, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mqtt_publishC

發布 MQTT 訊息

ParametersJSON Schema
NameRequiredDescriptionDefault
qosNoQoS 等級 (預設: 0)
topicYes目標裝置ID.動作,如 "targetDevice.action"
payloadYes訊息內容
deviceIdYes發送方裝置 ID

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears full responsibility for behavioral disclosure. It only states 'publish' without revealing whether the operation is synchronous, what it returns, or any error handling. Critical behavioral traits are absent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise (7 characters) but misses essential information needed for correct usage. Conciseness should not come at the cost of completeness; this is under-specified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (4 parameters, no output schema, sibling tools), the description is too sparse. It does not cover return values, behavior, or differentiation from similar tools, leaving significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (all parameters have individual descriptions). Per guidelines, baseline is 3. The description adds no additional parameter context beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the basic action ('publish MQTT message') and resource, which suffices for a minimal understanding. However, it fails to differentiate from its sibling 'mqtt_publish_sync', leaving ambiguity about whether this is synchronous or asynchronous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidelines are provided. The description neither specifies when to use this tool over alternatives like 'mqtt_publish_sync' nor outlines any prerequisites or context for invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mqtt_publish_syncB

同步發布 MQTT 訊息並等待回應

ParametersJSON Schema
NameRequiredDescriptionDefault
qosNoQoS 等級 (預設: 0)
topicYes目標裝置ID.動作,如 "targetDevice.action"
payloadYes訊息內容
timeoutNo逾時時間 (毫秒,預設: 5000)
deviceIdYes發送方裝置 ID

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears full responsibility for behavioral disclosure. It mentions synchronous wait for response, but does not detail timeouts, error handling, or response format, leaving critical behaviors undocumented.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that conveys the core purpose without unnecessary words. However, given the tool's complexity, slightly more detail would improve efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema and the description does not specify what the 'response' contains. For a synchronous publish-and-wait tool, users need to know expected return values, which are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all parameters. The tool description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool publishes MQTT messages synchronously and waits for a response. This distinguishes it from sibling tools like mqtt_publish, which implies asynchronous operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., mqtt_publish or mqtt_subscribe). There is no mention of prerequisites, such as device registration or topic subscription.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mqtt_register_handlerC

註冊 MQTT 訊息處理器

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes要處理的動作名稱
deviceIdYes裝置 ID
handlerCodeYes處理器函數程式碼 (JavaScript)

TDQS

C2.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It only states the tool registers a handler, but omits critical behaviors: whether it overwrites existing handlers, if the JavaScript code is executed server-side, security implications, or persistence. This lack of transparency leaves the agent uninformed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence in Chinese, which is concise but not overly terse. It is front-loaded with the main verb and object. However, a slightly more informative description could improve without sacrificing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of registering a handler with executable code, the description is insufficient. It does not explain the handler's lifecycle, trigger mechanisms, return values, or error conditions. The schema covers parameter details but the description lacks essential operational context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides descriptions for all three parameters (100% coverage), so the baseline is 3. The tool description adds no additional parameter context beyond what the schema offers. Thus, it meets the baseline but does not exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description '註冊 MQTT 訊息處理器' (Register MQTT message handler) clearly states the action and resource. However, it does not differentiate from sibling tools like mqtt_subscribe, which might be confused with handler registration. The input schema further clarifies the purpose by specifying deviceId, action, and handlerCode.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. No prerequisites, exclusions, or context for choosing this over mqtt_subscribe or mqtt_publish. The agent must infer usage solely from the tool name and schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mqtt_subscribeC

訂閱 MQTT 主題

ParametersJSON Schema
NameRequiredDescriptionDefault
qosNoQoS 等級 (預設: 0)
topicYes要訂閱的主題
deviceIdYes裝置 ID

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for behavioral disclosure. It merely states the action without explaining side effects (e.g., long-lived subscription, message handling) or return behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short (one sentence), but it is only minimally informative. Conciseness is positive, but the lack of structure and detail reduces its effectiveness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a subscription tool with no output schema, the description is incomplete. It fails to mention behavior patterns (e.g., requires a handler, returns messages) or how this tool fits with siblings like mqtt_register_handler.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% parameter description coverage, so schema already documents the parameters. The main description adds no additional context beyond the tool's action, resulting in a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Subscribe to MQTT topic' (in Chinese), a specific verb+resource combination. However, it does not differentiate from sibling tools like mqtt_publish or mqtt_register_handler, which could cause confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, when to prefer other tools, or any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 11 tool updatesv1.0.2
    • First observedazure_ai_chat
    • First observedgoogle_sheet_append
    • First observedgoogle_sheet_delete
    • First observedgoogle_sheet_get
    • First observedgoogle_sheet_save
    • First observedgoogle_sheet_update
    • First observedmqtt_device_create
    • First observedmqtt_publish
    • First observedmqtt_publish_sync
    • First observedmqtt_register_handler
    • First observedmqtt_subscribe

TDQS

B3.1/5.0
Disambiguation5/5

Each group of tools (Azure AI, Google Sheets, MQTT) targets a distinct domain with no overlap. Within each domain, all operations are clearly differentiated by their descriptions (e.g., mqtt_publish vs mqtt_publish_sync, google_sheet_get vs google_sheet_append).

Naming Consistency5/5

All tools follow a consistent pattern of service prefix (azure_ai_, google_sheet_, mqtt_) followed by verb or verb_noun (e.g., chat, append, create_device). Naming is entirely snake_case and predictable.

Tool Count5/5

With 11 tools across three domains, the count is well-scoped. Each domain has a reasonable number of tools (1 for Azure AI, 5 for Google Sheets, 5 for MQTT) that collectively cover the server's purpose as an API bridge without being excessive.

Completeness5/5

For Google Sheets, CRUD operations (get, append, update, delete, save) are covered. For MQTT, essential operations (device create, publish, subscribe, handler registration) are present. Azure AI chat is a single tool but fulfills its stated purpose of generating code examples. No obvious gaps.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that integrates with Google Drive and Google Sheets, enabling users to create, read, update, and manage spreadsheets through natural language commands.
    992
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    A Model Context Protocol server that provides seamless integration with Google Workspace, allowing operations with Google Drive, Docs, and Sheets through secure OAuth2 authentication.
    8
    3
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that enables AI agents to freely operate Excel spreadsheets, providing tools for workbook creation, cell manipulation, formatting, formula handling, and data export.
    11
    181
    ISC

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/marty5499/mcp-api-bridge'

If you have feedback or need assistance with the MCP directory API, please join our Discord server