MCP 服务器

projectstate

online.projectstate/projectstate

此 MCP 可以做什么

Maintains per-project agent memory for decisions, attempts, tasks, notes, status, and contextual recall.

plan_check
Plan check
Before you start something non-trivial, say what you are about to do and get back only what would change your mind: attempts that already failed at this, decisions that are still in force and constrain it, and open tasks that overlap. `intent` is one line in plain words, e.g. 'switch the cache to Redis' or 'rewrite the auth middleware to use refresh tokens'. Pass `files` if you know which paths you will touch; entries about those files are included even when the wording differs. Cheaper than repeating work that already failed once.
输入模式
{'type': 'object', 'title': 'plan_checkArguments', 'required': ['project', 'intent'], 'properties': {'files': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'Files', 'default': None}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 3}, 'intent': {'type': 'string', 'title': 'Intent'}, 'project': {'type': 'string', 'title': 'Project'}, 'max_chars': {'type': 'integer', 'title': 'Max Chars', 'default': 1200}}}
输出模式
{'type': 'object', 'title': 'plan_checkOutput', 'required': ['result'], 'properties': {'result': {'type': 'string', 'title': 'Result'}}}
project_open
Open project
Open (or create) a project and get a compact brief: status line, open tasks, latest active decisions and failed attempts. Call this first in a session. Omit `project` to list your projects. `project` is a slug like 'my-app' (lowercase, digits, '-', '_' or '.').
输入模式
{'type': 'object', 'title': 'project_openArguments', 'properties': {'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Name', 'default': None}, 'project': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Project', 'default': None}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Description', 'default': None}}}
输出模式
{'type': 'object', 'title': 'project_openOutput', 'required': ['result'], 'properties': {'result': {'type': 'string', 'title': 'Result'}}}
project_status
Project status
Get the project's one-line status, open tasks and last change. Pass `set_status` to overwrite the status line (e.g. 'v0.3 shipped; next: migrate auth to OAuth'). Cheap; use it for handoff notes between sessions.
输入模式
{'type': 'object', 'title': 'project_statusArguments', 'required': ['project'], 'properties': {'project': {'type': 'string', 'title': 'Project'}, 'set_status': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Set Status', 'default': None}}}
输出模式
{'type': 'object', 'title': 'project_statusOutput', 'required': ['result'], 'properties': {'result': {'type': 'string', 'title': 'Result'}}}
recall
Recall
Search the project's memory with keywords and get the few most relevant entries (ranked, active entries first, superseded ones last), trimmed to `max_chars`. Use 2-5 specific keywords (e.g. 'auth token expiry'). Filters: kind (decision|attempt|task|note), status, tags, files. Omit `query` for the most recent entries. Follow up with update(project, id, ...) or remember(...).
输入模式
{'type': 'object', 'title': 'recallArguments', 'required': ['project'], 'properties': {'kind': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Kind', 'default': None}, 'tags': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'Tags', 'default': None}, 'files': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'Files', 'default': None}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 5}, 'query': {'type': 'string', 'title': 'Query', 'default': ''}, 'status': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Status', 'default': None}, 'project': {'type': 'string', 'title': 'Project'}, 'max_chars': {'type': 'integer', 'title': 'Max Chars', 'default': 1500}}}
输出模式
{'type': 'object', 'title': 'recallOutput', 'required': ['result'], 'properties': {'result': {'type': 'string', 'title': 'Result'}}}
remember
Remember
Store one fact about the project. `kind` is one of: decision (what was chosen and why), attempt (something tried; status 'worked'|'failed'|'partial'), task (status 'open'|'done'|'dropped'), note (anything else). `title` is one line; put details, reasons and error messages in `body`. `files` lists related paths. `supersedes` marks an older decision/task as replaced by this one. Identical content is stored once, so retries are safe; `idempotency_key` additionally guarantees a retry is not billed twice.
输入模式
{'type': 'object', 'title': 'rememberArguments', 'required': ['project', 'kind', 'title'], 'properties': {'body': {'type': 'string', 'title': 'Body', 'default': ''}, 'kind': {'type': 'string', 'title': 'Kind'}, 'tags': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'Tags', 'default': None}, 'files': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'Files', 'default': None}, 'title': {'type': 'string', 'title': 'Title'}, 'status': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Status', 'default': None}, 'project': {'type': 'string', 'title': 'Project'}, 'supersedes': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Supersedes', 'default': None}, 'idempotency_key': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Idempotency Key', 'default': None}}}
输出模式
{'type': 'object', 'title': 'rememberOutput', 'required': ['result'], 'properties': {'result': {'type': 'string', 'title': 'Result'}}}
update
Update entry
Change an existing entry by id: set `status` (task open|done|dropped, attempt worked|failed|partial, decision active|superseded|reverted, note active|archived), replace `title`/`body`, `append` a line to the body (e.g. an outcome), replace `tags`/`files`, or `delete` it.
输入模式
{'type': 'object', 'title': 'updateArguments', 'required': ['project', 'id'], 'properties': {'id': {'type': 'integer', 'title': 'Id'}, 'body': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Body', 'default': None}, 'tags': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'Tags', 'default': None}, 'files': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'Files', 'default': None}, 'title': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Title', 'default': None}, 'append': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Append', 'default': None}, 'delete': {'type': 'boolean', 'title': 'Delete', 'default': False}, 'status': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Status', 'default': None}, 'project': {'type': 'string', 'title': 'Project'}}}
输出模式
{'type': 'object', 'title': 'updateOutput', 'required': ['result'], 'properties': {'result': {'type': 'string', 'title': 'Result'}}}
已添加
update
2026年9月17日 12:54
已添加
plan_check
2026年9月17日 12:54
已添加
recall
2026年9月17日 12:54
已添加
remember
2026年9月17日 12:54
已添加
project_status
2026年9月17日 12:54
已添加
project_open
2026年9月17日 12:54