Kangram

app.kangram由 kangram.app 发布官方发布者v1.0.0更新于 Oct 24, 2026

Task & board management for AI agents + humans. Kanban, comments, digests via MCP.

已验证Streamable HTTP可网页运行效率与工作流沟通与协作

概览

AI 生成的概览

Kangram 是远程看板任务与看板管理服务器,让助手跨看板和组织创建、整理、搜索任务并添加评论。

可以做什么
创建、更新、归档、恢复和克隆看板,并管理其状态流程与标签。创建、读取、更新、移动、删除和恢复任务,并变更任务状态。搜索任务,并列出指派给自己或自己创建的工作。添加、列出和删除评论,管理任务清单。管理看板成员、邀请、角色和组织。
适用场景
当你希望助手执行看板工作流时使用:记录任务、分类并在状态间移动任务、汇总你手头的工作,或无需打开应用即可管理看板和成员。
运行要求
通过 streamable HTTP 连接 kangram.app 的远程端点。需要 Kangram API 密钥,以 Authorization bearer 请求头发送;密钥可在 Kangram 设置中或通过 Telegram 机器人创建。
安装前请注意
API 密钥是机密,可访问你的看板。许多工具会写入或更改数据:创建、更新、移动、删除和恢复任务、看板、状态、评论、清单和成员。成员与角色变更会影响他人,直接添加成员会立即授予访问权限而无需邀请。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Kangram,将其添加到工作区。
  2. 连接 Authorization token 凭据。它们会被私密存储,绝不会在公开页面上展示。
  3. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/app.kangram%2Fkangram/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "kangram": {
      "type": "http",
      "url": "https://kangram.app/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

工具

61

list_boards

Use this command to discover boards before creating or filtering tasks.

输入参数codelimittitleonly_archivedinclude_archived

create_board

Use this command to initialize a board and its default status workflow.

输入参数titletimezonegroup_chat_idnamespace_slug

update_board

Use this to edit board metadata (title, code) and/or the board-level agent prompt. The prompt is the markdown instructions an agent reads when operating on this board (stored as the root file "AGENTS.md"). Pass only the fields you want to change; omitted fields are left untouched. Pass an empty string as prompt to clear the prompt.

输入参数codetitlepromptboard_id必填visibility

get_board_by_namespace

Canonical lookup for a board. Resolves the namespace by slug, then the board by its 3-character code within that namespace. Membership-gated: returns an error for unknown namespace, unknown board, or non-member (indistinguishable).

输入参数board_code必填namespace_slug必填

archive_board

Use this to hide a board from active workflows without deleting it.

输入参数board_id必填

restore_board

Use this to recover a previously archived board.

输入参数board_id必填

clone_board

Clone a board into a new board, copying the workflow not the data: statuses + board files (the prompt / agent instructions) + board title. Excludes tasks, comments, and members. The caller becomes the owner of the fresh board. The new board is created in the caller's personal namespace with a fresh unique code. Authorize: caller needs read access to the source board — a board member OR any viewer when the board is public (public boards are forkable by anyone). Authorization is enforced imperatively in execute.

输入参数codetitlesource_board_id必填

create_task

Use this to add a task. Provide boardId for deterministic routing; otherwise active board is used.

输入参数tagstitle必填statusassigneeboard_idprioritydescriptionparent_board_idtelegram_chat_idparent_task_numbertelegram_message_id

get_task

Use this to read one task including its description, deadline, tags, status, and assignee.

输入参数board_id必填task_number必填

list_tasks

Use this to inspect task backlog by board, assignee, status, priority, tags, title substring, creation date range, and deletion state.

输入参数tagslimitstatusassigneeboard_id必填prioritycreated_tocreated_fromonly_deletedtitle_containsinclude_deleted

list_board_tags

Use this to discover which tags already exist on a board before filtering with list_tasks. Returns unique tag strings (first-seen casing), sorted case-insensitively.

输入参数board_id必填

update_task

Use this to edit task title/description/deadline/tags/assignee/status.

输入参数tagstitlestatusassigneeboard_id必填deadlineprioritydescriptiontask_number必填

transition_task_status

Use this for explicit status moves while keeping other fields unchanged.

输入参数status必填board_id必填task_number必填

delete_task

Use this to mark a task as deleted without permanent removal.

输入参数board_id必填task_number必填

move_task

Use this to transfer a task between boards. The task gets a new number in the target board. Status is reset to target board's default if the current status doesn't exist there.

输入参数task_number必填source_board_id必填target_board_id必填

restore_task

Use this with list_tasks onlyDeleted/includeDeleted to recover deleted tasks.

输入参数board_id必填task_number必填

list_task_activity

Use this to read the history of actions performed on a task (create, update, status changes, comments). Returns a timeline of activity entries.

输入参数limitoffsetboard_id必填task_number必填

search_tasks

Use this to find tasks by text, assignee, status, priority, or attention category across all your accessible boards. All filters are optional — combine them to narrow results. Returns up to 50 tasks ordered by last updated.

输入参数querystatusboard_idpriorityattentionassignee_id

my_work

Returns up to 100 tasks assigned to or created by the caller across all boards they can access, ordered by most recent update. Use this to answer 'what's on my plate?' or to surface overdue/stale work. Pass namespaceSlug to scope to a single namespace.

输入参数namespace_slug

list_statuses

Use this command to inspect the board status catalog and ordering.

输入参数board_id

create_status

Use this command to add new statuses to board workflow.

输入参数codename必填colorindexboard_id

update_status

Update status by statusId or by boardId+code.

输入参数codenamecolorindexboard_idnew_codestatus_id

reorder_statuses

Provide orderedStatusIds to set deterministic status ordering for a board.

输入参数board_idordered_status_ids必填

delete_status

Delete by statusId or boardId+code. If tasks use it, provide replacementStatusId.

输入参数codeboard_idstatus_idreplacement_status_id

add_comment

Use this to add a comment to a specific task. Provide board_id + task_number to identify the task.

输入参数text必填board_id必填task_number必填

list_comments

Use this to retrieve all comments for a specific task. Provide board_id + task_number.

输入参数board_id必填task_number必填

delete_comment

Use this to delete a comment. Allowed for the comment author or a board admin (owner/admin). Provide board_id + task_number for context and comment_id.

输入参数board_id必填comment_id必填task_number必填

add_checklist_item

Use this to add a new item to a task's checklist. Provide board_id + task_number to identify the task.

输入参数title必填board_id必填task_number必填

list_checklist

Use this to retrieve all checklist items for a specific task. Provide board_id + task_number.

输入参数board_id必填task_number必填

update_checklist_item

Use this to update a checklist item's title or done status. Provide item_id and fields to update.

输入参数donetitleitem_id必填

delete_checklist_item

Use this to remove a checklist item from a task. Provide item_id.

输入参数item_id必填

list_board_members

Use this command to see all board members and their roles (owner/admin/user).

输入参数board_id必填

invite_board_member

Use this command to invite a user to a board. The invited user will receive a notification and must accept. Owner/admin only.

输入参数roleboard_id必填username必填

add_board_member

Use this command to add a user directly to a board — they become a member immediately, with no invitation to accept. This is the one-step grant (the bot /addmember command). Owner/admin only; cannot create or assign the owner role.

输入参数roleboard_id必填username必填

remove_board_member

Use this command to remove a member from a board. On group-chat-linked boards, removing a member with an explicit board_member row reverts them to a regular Telegram member (they stay on the board via the linked group). Members without a board_member row (Telegram-only) cannot be removed. Owner can remove admin/user, admin can remove user. Cannot remove owner.

输入参数user_id必填board_id必填

update_member_role

Use this command to change an existing board member's role. Owner/admin only. Cannot target the board owner or promote anyone to owner.

输入参数role必填user_id必填board_id必填

list_pending_invitations

Use this without board_id to see your pending invitations. With board_id, see pending invitations for that board (must be a member).

输入参数board_id

respond_to_invitation

Use this command to accept or reject a pending board invitation by its ID.

输入参数accept必填invitation_id必填

cancel_board_invitation

Use this command to cancel a pending board invitation. Only the original inviter or a board admin can cancel.

输入参数invitation_id必填

create_organization

Create a new organization. The organization gets its own namespace (slug derived from the name). The creator becomes the organization owner. Use this when a user asks to create a namespace, organization, or workspace.

输入参数name必填

list_namespaces

List all namespaces the user can see: their personal namespace plus any organization namespaces they own or are a member of. Use this to discover where boards can be created or moved.

无需输入参数。

move_board

Move a board from its current namespace to a target namespace. The board's 3-character code must be unique in the target namespace. The board URL will change. Use this to consolidate boards into an organization namespace.

输入参数board_id必填namespace_slug必填

transfer_board_ownership

Transfer ownership of a board from the current owner to an existing board member (admin or user role). The current owner is demoted to the specified role (admin by default). Only the current board owner can initiate a transfer. The target must already be a board member — invite them first if needed. This is an irreversible high-impact operation.

输入参数board_id必填to_user_id必填demote_current_owner_to

get_board_prompt

Fetch the board-level agent prompt — the markdown instructions an agent should follow when operating on this board. Read this into your context before working a board. Returns the content of the board's root file ("AGENTS.md"); null when no prompt is set.

输入参数board_id必填

update_board_file

Upsert a named markdown file on a board. In v1 the conventional name is "AGENTS.md" (the root prompt). Omit content (or pass empty) to clear a file's body. Future versions will support multiple named files; this command is the low-level writer beneath update_board's prompt option.

输入参数name必填formatcontentboard_id必填

list_board_files

List the board's named files (the multi-file-ready prompt store). v1 returns at least the root "AGENTS.md" once a prompt has been set; empty list means no prompt/files yet.

输入参数board_id必填

create_oauth_client

Register a new OAuth2 client so a third-party app can authenticate users via 'Login with Kangram'. Returns the client_id and a client_secret shown ONCE — store it securely. Owner-only.

输入参数name必填scopesredirect_uris必填

list_oauth_clients

List the OAuth2 clients you own (client_id, name, redirect URIs, scopes, revocation status).

无需输入参数。

revoke_oauth_client

Revoke one of your OAuth2 clients by its numeric ID. Existing tokens are not deleted but no new authorizations will be allowed.

输入参数client_id必填

get_digest

Compute an on-demand digest of the calling user's tasks across all accessible boards: overdue, stale (needs attention), new assignments, open count, and recently completed. Use this to answer 'what needs my attention?' or 'what's my work summary?'.

无需输入参数。

save_session_handoff

Save a session handoff — a durable note on the board recording where the work stands: what was done, what is next, what is blocked, and key links (PRs, issues, branches). Call this at the END of a working session so the next session (possibly a brand-new chat) can pick up exactly where you left off. Use this when the user says 'remember where we left off', 'save our progress', 'save the session state', or 'don't lose this context'. `summary` must be YOUR OWN concise authored recap — never a transcript or list of raw messages.

输入参数linkssummary必填board_id必填

get_project_context

Get the full project context for a board — everything needed to CONTINUE work without re-explaining: the latest session handoff (where we left off), an attention snapshot (blocked / overdue / due soon / unassigned / stale counts), the top open tasks, and recent board activity. Call this at the START of a session when the user says 'continue where we left off', 'what's the state of the project', 'resume our work', or 'remind me what we were doing' — especially in a NEW chat after a previous session saved a handoff.

输入参数board_id必填

get_board_settings

Use this command to read a board's effective settings — the stored value, or the default when unset (lazy). Pass a key to read one setting; omit it to read all. Returns { key: value } object(s).

输入参数keyboard_id必填

set_board_setting

Use this command to change a board setting. The value is a string coerced to the setting's type server-side (booleans accept on/off, true/false, 1/0, yes/no). Use get_board_settings_schema to discover available keys and types. Example: set autoAddAssignees to "off" to require explicit /addmember on task assignment.

输入参数key必填value必填board_id必填

get_board_settings_schema

Use this command to discover which board settings exist and their types/defaults (json-schema-like). Pass a key to inspect one setting; omit for all. Board-independent metadata — call this before set_board_setting to learn valid keys and types.

输入参数key

bind_board_to_group

Bind (link) a board to a Telegram group chat. The board becomes the group's primary board — bot commands in the group will act on this board. Unbinds any previous binding first. The actor must be an owner/admin of the target board. Use this when a user asks to set, link, bind, or assign a board to a chat/group. boardRef accepts: 'ns/code' (e.g. 'kangram/DEV'), a code alone (uses the active namespace), or a full URL like 'https://kangram.app/#/kangram/DEV'.

输入参数board_ref必填group_chat_id

create_agent

Create a non-human agent account (User type='agent') inside the organization identified by its namespace slug. The agent becomes an org member immediately (board access via role inheritance), gets no personal namespace and cannot log in. A first API key is auto-issued and returned in plainKey — show/store it now, it is never shown again. Requires organization owner/admin.

输入参数roleusername必填display_namenamespace_slug必填

list_agents

List the members of the organization identified by its namespace slug, including agent accounts (type='agent') with their active API-key counts and last key use. Requires organization owner/admin.

输入参数namespace_slug必填

delete_agent

Delete an agent account: revokes all its API keys, removes memberships, unassigns its tasks, then hard-deletes the user. When history rows (messages/activity) block the hard delete, the agent is deactivated instead (zero access, row kept) and status='deactivated' is returned. Requires organization owner/admin.

输入参数agent_username必填namespace_slug必填

issue_agent_key

Mint a new API key for an agent member of the organization. Use for rotation or additional keys. The plaintext key is returned once — store it immediately. Requires organization owner/admin.

输入参数namescopeagent_username必填namespace_slug必填

revoke_agent_key

Revoke an agent's API key by id. Only keys owned by agent accounts are revocable this way (humans revoke their own). Requires organization owner/admin of an org the agent belongs to.

输入参数key_id必填

版本历史

1
  1. v1.0.0最新Sep 16, 2026

评分

已满足适用检查项的 83%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分

    请声明包含 README 的 GitHub 仓库,或在 OAuth 受保护资源元数据中提供 resource_documentation。

  • 许可证不适用

    托管服务按其提供方的条款使用,因此这里不要求许可证。此检查项不计入百分比。