EasyTopic MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| EASYTOPIC_BOARD_ID | Yes | Board ID | |
| EASYTOPIC_BOT_EMAIL | Yes | Bot account email | |
| EASYTOPIC_COMPANY_ID | Yes | Company ID | |
| EASYTOPIC_PROJECT_ID | Yes | Project ID | |
| EASYTOPIC_BOT_PASSWORD | Yes | Bot account password (the real secret) | |
| EASYTOPIC_PLAN_FIELD_KEY | No | Custom field key for Plan | plan |
| EASYTOPIC_DONE_STATUS_KEY | No | Status key for Done | done |
| EASYTOPIC_FIREBASE_APP_ID | Yes | Firebase app ID | |
| EASYTOPIC_TODO_STATUS_KEY | No | Status key for ToDo | todo |
| EASYTOPIC_FIREBASE_API_KEY | Yes | Firebase API key | |
| EASYTOPIC_PLANNED_STATUS_KEY | No | Status key for Planned | planned |
| EASYTOPIC_APPROVED_STATUS_KEY | No | Status key for Approved | approved |
| EASYTOPIC_FIREBASE_PROJECT_ID | Yes | Firebase project ID | |
| EASYTOPIC_PLANNING_STATUS_KEY | No | Status key for Planning | planning |
| EASYTOPIC_FIREBASE_AUTH_DOMAIN | Yes | Firebase Auth domain | |
| EASYTOPIC_IN_PROGRESS_STATUS_KEY | No | Status key for In Progress | in_progress |
| EASYTOPIC_FIREBASE_STORAGE_BUCKET | Yes | Firebase storage bucket | |
| EASYTOPIC_FIREBASE_MESSAGING_SENDER_ID | Yes | Firebase messaging sender ID |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| easytopic_whoamiA | Authenticates against EasyTopic and returns the bot's identity plus the configured company/project/board/status-key/plan-field settings. Call this first in every run — if it errors, stop immediately (auth/config problem), do not attempt any workaround. |
| easytopic_list_topicsA | Lists Topics in the configured company/project whose currentStatusKey is one of the given statusKeys, oldest-updated first. Use the configured todoStatusKey/planningStatusKey/plannedStatusKey/approvedStatusKey/inProgressStatusKey/doneStatusKey values from easytopic_whoami. |
| easytopic_get_topicA | Fetches one Topic in full: title, description (the prompt), custom field values (incl. the plan field), current status, the subset of workflow transitions currently legal from this status, all comments oldest-first, and awaitingHumanReply (true if the bot's own question is still the most recent comment — do not re-ask, wait for a reply). |
| easytopic_add_commentA | Posts a comment on a Topic — the only channel to communicate with the human (questions, progress notes, completion summaries). The human is notified automatically. |
| easytopic_write_planA | Writes the implementation plan into the Topic's configured plan custom field (versioned, recorded in Topic History). Call this before transitioning a Topic out of the todo status — write the plan first, then transition. |
| easytopic_transition_statusA | Moves a Topic to a new status via the matching Workflow transition (runs the same beforeChecks the human UI runs, e.g. requiredFieldsFilled). Errors use the same vocabulary as the app: a WorkflowCheckId (assigneeRequired/dueDateRequired/descriptionRequired/requiredFieldsFilled), notProjectAdmin, hasActiveConflict, or noMatchingTransition. Status lifecycle convention (created -> todo -> planning -> planned -> approved -> in_progress -> done -> closed): you may set planning/planned yourself once you start/finish planning, and in_progress/done yourself once you start/finish the work. Never set the approved status yourself unless the human has given explicit approval via a Topic comment or directly in conversation — otherwise wait for them to set it. Never set the closed status yourself under any circumstance — that is the human's exclusive final sign-off after verifying the work. |
| easytopic_list_doc_projectsA | Lists every Documentation Project (Project.isDocumentationProject === true) in the configured company that the bot currently participates in. A Documentation Project holds its content as a tree of publishable Topics (see easytopic_list_doc_tree/easytopic_get_doc_page). The bot only sees a Project here once a human has added it as a Project participant in that Project's settings — company employment alone is not enough (Firestore rules require real participancy for list queries). To also create new pages (easytopic_create_doc_page) or read the Project's FULL existing tree, the bot needs to be added as an ADMIN participant specifically, not just a member — see CLAUDE.md's participancy/admin-visibility notes. |
| easytopic_list_doc_treeA | Lists every page (Topic) the bot can see in the given Documentation Project, flattened, ordered by sortOrder within each parent — use parentTopicId to reconstruct the tree (null = top-level page). Returns id/title/parentTopicId/isPublic only; call easytopic_get_doc_page for a page's actual content. Get projectId from easytopic_list_doc_projects. |
| easytopic_get_doc_pageA | Fetches one Documentation page (Topic) in full: title, description (the page's rich-text HTML body), parentTopicId, isPublic, metaDescription, and its direct child pages (id/title only). Get projectId from easytopic_list_doc_projects and topicId from easytopic_list_doc_tree. |
| easytopic_write_doc_pageA | Updates an existing Documentation page's title and/or rich-text HTML content (descriptionHtml) and/or metaDescription. Only fields you pass are touched; title/descriptionHtml changes are versioned into Topic History like every other Topic edit, metaDescription is not. Requires the bot to already be a participant of the page's Project (see easytopic_list_doc_projects) — does not require admin. |
| easytopic_create_doc_pageA | Creates a new Documentation page (Topic) under the given parent (null = top-level page) in a Documentation Project. Firestore rules only allow Topic creation by a Project ADMIN (no plain-participant fallback) — this tool checks that up front and returns { error: "notProjectAdmin" } instead of a raw permission error if the bot is only a member. Ask the human to promote the bot to admin on that Project's participants if you hit this. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/EB-CON-GmbH/easytopic-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server