Chip MCP

Project memory, tasks and Telegram notifications for your coding agent. Chip account required.

我該用這個嗎

品質與安全性

B
說明品質
76%
結構描述完整度
75%
命名品質
94%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

發現項目(13)

  • LOWTool 'whoami' description lacks action verb在 whoami 中
  • LOWTool 'list_projects' description lacks action verb在 list_projects 中
  • LOWTool 'get_project_context' description lacks action verb在 get_project_context 中
  • LOWTool 'search_project' description lacks action verb在 search_project 中
  • LOWTool 'read_project_file' description lacks action verb在 read_project_file 中
  • LOWTool 'create_project' description lacks action verb在 create_project 中
  • LOWTool 'rename_project' description lacks action verb在 rename_project 中
  • LOWTool 'archive_project' description lacks action verb在 archive_project 中
  • LOWTool 'save_session_summary' description lacks action verb在 save_session_summary 中
  • LOWTool 'add_note' description lacks action verb在 add_note 中

根據工具定義與協定合規性的自動化分析。

上下文成本

~4,460Token(工具定義)
~615 B典型回應大小
顯著的注意力影響(128k 上下文的 3.48%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "chip": {
      "url": "https://chip-ai.digital/mcp/"
    }
  }
}

遠端端點

https://chip-ai.digital/mcp/streamable-http

它能做什麼

工具清單

工具(27)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢whoami

Тариф, занятость слотов проектов и (на платном тарифе) остатки дневных лимитов. Зови в начале сессии и когда другой тул отказал по лимиту.

輸入結構描述

{
  "type": "object",
  "properties": {}
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
🟢list_projects

Проекты пользователя: id, название, последняя активность, открытые поручения. Нужен project_id — сюда; список меняется редко, не перечитывай.

輸入結構描述

{
  "type": "object",
  "properties": {}
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
🟢read_journal(project_id, offset)

Журнал проекта дословно, новые сверху: сводки сессий и заметки-вехи. Зови за «что было N сессий назад»; поиск по теме — search_project. offset 0 — свежие, дальше листай по подсказке в конце ответа.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer"
    },
    "offset": {
      "default": 0,
      "type": "integer"
    }
  },
  "required": [
    "project_id"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
🟢read_project_dialog(project_id, session_id)

Диалог пользователя с Чипом внутри проекта: сводка и последние реплики. Сценарий: надиктовал план с телефона — забери целиком, а не пересказ. Без session_id — самый свежий; id диалогов в get_project_context.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer"
    },
    "session_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "project_id"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
🟢get_project_map(project_id)

Оглавление карты проекта: полочки-статьи с актуальным знанием, которые Чип ведёт по журналу (не лента). Сама статья — read_map_section.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer"
    }
  },
  "required": [
    "project_id"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
🟢read_map_section(project_id, section)

Статья одной полочки карты — актуальное знание по теме («Решения», «Грабли»…). Зови по оглавлению из get_project_context или get_project_map.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer"
    },
    "section": {
      "type": "string"
    }
  },
  "required": [
    "project_id",
    "section"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
🟢get_project_context(project_id, depth)

Контекст проекта: инструкции, поручения, оглавление карты, память, файлы, диалоги. Зови ОДИН раз, когда берёшься за проект впервые; вернулся в знакомый — whats_new, он дешевле. depth: "brief" (сводки аннотациями, по умолчанию) или "full" (дословно).

輸入結構描述

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer"
    },
    "depth": {
      "default": "",
      "type": "string"
    }
  },
  "required": [
    "project_id"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
🟢search_project(query, project_id, kind, since)

Поиск по знанию проекта: полочки карты, журнал, память, диалоги. Зови за конкретным фактом или старым решением, которого нет в контексте. Без project_id — по всем проектам сразу. Запрос — 1–3 ключевых слова, не предложение. kind сужает память до вида (decision, pitfall, fact, preference, progress, correction); since (ISO, как курсор) режет старое.

輸入結構描述

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string"
    },
    "project_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "kind": {
      "default": "",
      "type": "string"
    },
    "since": {
      "default": "",
      "type": "string"
    }
  },
  "required": [
    "query"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
🟢list_files(project_id)

Файлы базы знаний проекта: имя, размер, читаемость. Зови перед read_project_file, если точное имя неизвестно.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer"
    }
  },
  "required": [
    "project_id"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
🟢read_project_file(project_id, filename, page)

Текст файла из базы знаний проекта, страницами. Без page у длинного документа придёт оглавление — выбери раздел и позови с page=N; дальше листай по подсказке в конце ответа.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer"
    },
    "filename": {
      "type": "string"
    },
    "page": {
      "default": 0,
      "type": "integer"
    }
  },
  "required": [
    "project_id",
    "filename"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
🟡create_project(name)

Завести проект в Чипе. Зови по просьбе пользователя — или предложи сам, если работаете над задачей без проекта. Название — по сути задачи, до 60 символов.

輸入結構描述

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    }
  },
  "required": [
    "name"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
⚪rename_project(project_id, name)

Переименовать проект (до 60 символов). Только по явной просьбе пользователя.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer"
    },
    "name": {
      "type": "string"
    }
  },
  "required": [
    "project_id",
    "name"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
🔴archive_project(project_id)

Архивировать проект: уходит из списка, слот освобождается, данные целы. Зови, когда пользователю нужен слот под новый. Вернуть из архива и удалить проект может только он сам, в мини-аппе.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer"
    }
  },
  "required": [
    "project_id"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
🟡save_session_summary(project_id, text)

Сводка рабочей сессии — в журнал проекта. Зови В КОНЦЕ сессии или перед долгой паузой, один раз — не дроби. Структура: Сделано → Решения и почему (включая отвергнутые) → Грабли → Осталось. До 6000 символов, на языке пользователя.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer"
    },
    "text": {
      "type": "string"
    }
  },
  "required": [
    "project_id",
    "text"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
🟡add_note(project_id, text, kind)

Заметка в память проекта (до ~300 символов; грабли и правки — 600). Пиши по ходу: одно наблюдение — одна заметка. kind: decision — сделанный выбор (полочка «Решения»), fact — как устроено, preference — как любит пользователь, progress — что сделано, pitfall — грабли «симптом → причина → лечение» (полочка «Грабли»), correction — «раньше X, теперь Y». Решение пиши формулой «что решали → выбрали X вместо Y, потому что Z»: ✓ «Очередь задач: Redis вместо Kafka — один инстанс, 200 rps». ✗ «Используем Redis» — следующая сессия переспорит то же самое.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer"
    },
    "text": {
      "type": "string"
    },
    "kind": {
      "default": "fact",
      "type": "string"
    }
  },
  "required": [
    "project_id",
    "text"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
🟢whats_new(project_id, since, session)

Изменения в проекте с твоего прошлого захода: журнал, поручения, файлы, полочки карты, диалоги. Зови ПЕРВЫМ, как взялся за проект: в знакомом — только дельта, впервые — сразу полный контекст. Скажет «изменений много» — добери get_project_context. since — из «Курсора» прошлого ответа, session — метка твоей ветки: покажу соседние сессии этого токена.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer"
    },
    "since": {
      "default": "",
      "type": "string"
    },
    "session": {
      "default": "",
      "type": "string"
    }
  },
  "required": [
    "project_id"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
🟢list_tasks(project_id)

Поручения тебе в этом проекте: их ставит пользователь и прошлая сессия (add_task, хвосты «Осталось»). Зови в начале работы и когда ищешь, чем заняться дальше. Сделанное закрывай complete_task — незакрытое всплывёт снова.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer"
    }
  },
  "required": [
    "project_id"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
🟢complete_task(task_id, result)

Закрыть поручение из list_tasks: result — что сделано (1–2 фразы, до 500 символов, пользователь прочитает это в Telegram). Зови СРАЗУ по факту, не пачкой в конце. Не закрывай то, за что не брался.

輸入結構描述

{
  "type": "object",
  "properties": {
    "task_id": {
      "type": "string"
    },
    "result": {
      "type": "string"
    }
  },
  "required": [
    "task_id",
    "result"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
🟡add_task(project_id, text)

Поручение следующей сессии агента: хвост из «Осталось», который не успел сделать. Пользователь видит его в мини-аппе, следующая сессия — в list_tasks.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer"
    },
    "text": {
      "type": "string"
    }
  },
  "required": [
    "project_id",
    "text"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
🟡notify_me(text, upload_id)

Сообщение пользователю в Telegram: итог долгой задачи («тесты зелёные», «сборка упала»), важное событие. НЕ для болтовни и не для вопросов — вопрос задавай в сессии. До 1000 символов. Показать скриншот, PDF или лог — сначала attach_file, потом сюда upload_id.

輸入結構描述

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string"
    },
    "upload_id": {
      "default": "",
      "type": "string"
    }
  },
  "required": [
    "text"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
🟡set_reminder(text, when)

Напоминание пользователю в Telegram — для отложенных проверок и дедлайнов. when — ISO-время («2026-07-25T10:00»), без пояса = локальное время пользователя. Текст до 200 символов.

輸入結構描述

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string"
    },
    "when": {
      "type": "string"
    }
  },
  "required": [
    "text",
    "when"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
🟢ask_user(question, options)

Спросить пользователя кнопками в Telegram, когда упёрся в развилку, которую решает он сам («какую БД берём?»). НЕ для мелочей, решаемых здравым смыслом. options — 2–4 коротких варианта (по умолчанию Да/Нет). Молчит — вернётся id для check_confirmation.

輸入結構描述

{
  "type": "object",
  "properties": {
    "question": {
      "type": "string"
    },
    "options": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "question"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
🟢check_confirmation(ask_id)

Забрать ответ пользователя на вопрос ask_user (если тот вернул id). Зови не чаще раза в минуту-другую.

輸入結構描述

{
  "type": "object",
  "properties": {
    "ask_id": {
      "type": "string"
    }
  },
  "required": [
    "ask_id"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
🟡upload_project_file(project_id, filename, size_bytes, content)

Выгрузить файл в проект (md, txt, csv, json, pdf, docx, xlsx и др.) — пользователь откроет его с телефона. Зови, когда результат нужен ему в Чипе; код оставляй в репозитории. До ~20k символов — сразу в content, крупнее — укажи size_bytes и загрузи по инструкции из ответа. Картинки — generate_image. ПЛАТНО для многостраничного PDF: оглавление к нему списывает кредиты пользователя.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer"
    },
    "filename": {
      "type": "string"
    },
    "size_bytes": {
      "default": 0,
      "type": "integer"
    },
    "content": {
      "default": "",
      "type": "string"
    }
  },
  "required": [
    "project_id",
    "filename"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
🟡finalize_upload(upload_id)

Завершить двухфазную загрузку файла: зови ПОСЛЕ того, как curl из ответа upload_project_file отработал успешно.

輸入結構描述

{
  "type": "object",
  "properties": {
    "upload_id": {
      "type": "string"
    }
  },
  "required": [
    "upload_id"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
⚪attach_file(filename, size_bytes)

Вложение для notify_me: скриншот после правки интерфейса, PDF, лог. В проект не сохраняется, живёт до отправки.

輸入結構描述

{
  "type": "object",
  "properties": {
    "filename": {
      "type": "string"
    },
    "size_bytes": {
      "type": "integer"
    }
  },
  "required": [
    "filename",
    "size_bytes"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}
⚪generate_image(prompt, project_id)

Сгенерировать картинку 1024×1024. ПЛАТНО: списывает с баланса пользователя ~3 кредита — зови по его запросу, не «на пробу». С project_id PNG ляжет в файлы проекта, без него — временная ссылка, скачай сразу.

輸入結構描述

{
  "type": "object",
  "properties": {
    "prompt": {
      "type": "string"
    },
    "project_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "prompt"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ]
}

建議的提示詞

find_specific
Find [specific item] using Chip MCP
預期的工具: search_project
retrieve_data
Get details about [item] from Chip MCP
預期的工具: read_journal
fetch_info
Fetch [information type] using Chip MCP
預期的工具: read_journal
list_items
List all [items] available in Chip MCP
預期的工具: list_projects
search_research
Search for information about [topic] using Chip MCP
預期的工具: search_project

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本27 個工具
已驗證未記錄版本27 個工具