Skip to main content

feishu-mcp-manual

Concise progressive-disclosure usage manual for the Feishu (Lark) MCP. Ordinary schema-sufficient calls can start here; unfamiliar setup, cards, callbacks, compound replies, partial delivery, and recovery route to one focused reference. It covers the strict action envelope, recipient/account checks, and the no-fallback/no-blind-retry safety boundary.

インストールへ移動

ソース情報

リポジトリ
Lingtai-AI/lingtai-kernel
ソースの最終更新活動
2026年9月11日 08:22
検出された SKILL.md の言語
英語
スター
11
フォーク
14

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

ファイルエクスプローラー
19 ファイル

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
feishu-mcp-manual
description
Concise progressive-disclosure usage manual for the Feishu (Lark) MCP. Ordinary schema-sufficient calls can start here; unfamiliar setup, cards, callbacks, compound replies, partial delivery, and recovery route to one focused reference. It covers the strict action envelope, recipient/account checks, and the no-fallback/no-blind-retry safety boundary.
version
1.18.0
last_changed_at
2026-09-09T03:15:00.000Z
related_files
["ENVIRONMENT_VARIABLES.md","src/lingtai/mcp_servers/ANATOMY.md","src/lingtai/mcp_servers/feishu/account.py","src/lingtai/mcp_servers/feishu/manager.py","src/lingtai/mcp_servers/feishu/server.py","src/lingtai/mcp_servers/feishu/service.py","src/lingtai/mcp_servers/feishu/settings.py","src/lingtai/mcp_servers/feishu/control_cards.py","src/lingtai/mcp_servers/local_commands/core.py","src/lingtai/mcp_servers/feishu/task_card.py","src/lingtai/mcp_servers/task_card/event_projection.py","src/lingtai/mcp_servers/task_card/resident.py","src/lingtai/mcp_servers/feishu/_family.py","src/lingtai/mcp_servers/feishu/_errors.py","src/lingtai/mcp_servers/feishu/reference/setup.md","src/lingtai/mcp_servers/feishu/reference/diagnostics.md","src/lingtai/mcp_servers/feishu/reference/capability-matrix.md","src/lingtai/mcp_servers/feishu/reference/message-semantics.md","tests/test_feishu_settings.py"]
maintenance
Tracks the Feishu MCP's model-facing entry, strict action surface, and focused manual routes. Keep the deep references aligned with their owning setup, diagnostic, capability, and message contracts; keep this file small enough for first-call discovery.
# Feishu (Lark) MCP This is the packaged `action='manual'` entry point and the progressive disclosure router. A normal schema-sufficient call does **not** need to load it first. Load one route only when the call is unfamiliar, consequential, or recovery-sensitive. ## PUBLIC TOOL FAMILY: strict LTP-v2 Every call is `{action, input, reasoning, summarize?}`. `action`, `input`, and string `reasoning` are required; `summarize`, if present, is boolean. The root and each action input are closed: unknown fields, cross-action fields, the old flat/`_reasoning` form, and missing required fields fail before provider I/O. | Goal | Action and required input | |---|---| | New message | `send`: `receive_id` + exactly one `text` or `content` | | Inspect | `check`: `{}`; `read`: `chat_id`; `search`: `query` | | Answer a message | `reply`: exact compound `message_id` + exactly one `text` or `content` | | Change Bot output | `edit`: sent `message_id` + exactly one `text` or `content` | | Delete Bot output | `delete`: sent `message_id` | | Reaction | `react`: `message_id` + `operation="add"` + `emoji_type`, or `operation="remove"` + exact `reaction_id` | | Contacts/accounts | `contacts`/`accounts`: `{}`; `add_contact`: `open_id` + `alias`; `remove_contact`: exactly one `open_id` or `alias` | | Read settings/manual | `settings`/`manual`: `{}`; settings is SHOW-only | `send`/`reply` content can be tagged `text`, `markdown`, `post`, complete schema-2.0 `card`, media, shares, or sticker. `edit` accepts text/markdown/post or complete card replacement, not media. See the message reference for exact unions and media source shapes. A safe inbound start without a pending notification is `feishu(action="check", input={}, reasoning="inspect incoming chats")`, then `read` the affected chat to obtain its exact ID before replying. When a notification already carries a compound message id and untruncated text (see [`reference/message-semantics.md`](reference/message-semantics.md#notifications-and-progress)), reply or react with that id directly instead of a routine re-check/re-read. ## BEFORE A SIDE EFFECT Configuration belongs to the orchestrator/admin; an avatar must not configure or reconfigure this MCP. Setup, credential changes and rollout require explicit owner authorization; routine message schemas do not grant it. - `receive_id_type` defaults to `open_id`; use `chat_id` for a group. An omitted `account` selects the first configured account. Verify the account and recipient before `send`; verify the target before `reply`, `edit`, `delete`, or `react`. - IDs are `{account_alias}:{chat_id}:{feishu_message_id}`. Pass an inbound compound ID back to `reply` verbatim. A reply target that is gone **fails**; it never becomes a fresh `send`. Group/topic inbound messages require an explicit Bot mention (`@all` alone is ignored); `allowed_users` gates senders, and saving a contact does not grant admission. - Each physical outbound chunk is attempted once. A partial result lists exact delivered IDs and the failed chunk; do not replay the whole action or silently downgrade it. Reconcile provider state before another lifecycle operation. ## CARDS ARE THREE DIFFERENT THINGS 1. A complete schema-2.0 business `card` is outbound content. An authorized click becomes one deduplicated `card_action` inbox record and wakes the Agent; update its `source_message_ref` or `send` a fresh response. A callback record is not a reply target. 2. Local command cards (`/help`, `/status`, `/kanban`, `/system`, `/refresh`, `/sleep`, `/clear`, `/taskcard`) update themselves. Their callbacks stay local: no business inbox record and no Agent wake. Group commands still need admission and a Bot mention. 3. Automatic/programmable resident Task Cards are mechanical projections, not messages to manage with these actions. `placeholder=true` is separate native progress feedback; edit it only at meaningful phase changes and send the final durable answer separately. ## SETTINGS SHOW `settings` accepts `{}` only and returns a read-only inventory. Its seven row owners are linked below; SHOW never writes or grants configuration authority. ### Setting config path See [`reference/message-semantics.md#setting-config-path`](reference/message-semantics.md#setting-config-path). ### Setting account aliases See [`reference/message-semantics.md#setting-account-aliases`](reference/message-semantics.md#setting-account-aliases). ### Setting account app ids See [`reference/message-semantics.md#setting-account-app-ids`](reference/message-semantics.md#setting-account-app-ids). ### Setting account app secrets See [`reference/message-semantics.md#setting-account-app-secrets`](reference/message-semantics.md#setting-account-app-secrets). ### Setting account allowed users See [`reference/message-semantics.md#setting-account-allowed-users`](reference/message-semantics.md#setting-account-allowed-users). ### Setting task card enabled See [`reference/message-semantics.md#setting-task-card-enabled`](reference/message-semantics.md#setting-task-card-enabled). ### Setting task card normal rows See [`reference/message-semantics.md#setting-task-card-normal-rows`](reference/message-semantics.md#setting-task-card-normal-rows). ## ONE OWNER FOR DEPTH | Situation | Read | |---|---| | Exact content, reply/thread, card callback, media, notification, reaction, chunk/lifecycle, or Task Card semantics | [`reference/message-semantics.md`](reference/message-semantics.md) | | App permissions, event/callback setup, config fields, accounts, canary, or rollback | [`reference/setup.md`](reference/setup.md) | | A startup, admission, WebSocket, media, card, reaction, Task Card, or error symptom | [`reference/diagnostics.md`](reference/diagnostics.md) | | Feishu-vs-Telegram scope and deliberate limits | [`reference/capability-matrix.md`](reference/capability-matrix.md) | For failures, preserve `error_code`, `retryable`, and `retry_after_seconds`. `max_attempts=1` makes retryable guidance a new caller decision, not an adapter retry. Never expose secrets, raw envelopes, provider keys, or local paths in external evidence.
GitHubで見る