Skip to main content
Glama
ivan1911

eva-custom-mcp

by ivan1911

eva-custom-mcp

Custom MCP server for EvaTeam glossary pages, project tasks, and wiki documents.

Local usage

npm install
npm run build
npm start

By default the server reads public glossary pages from https://www.evateam.ru, so no token is required.

Related MCP server: WikiJS MCP Server

MCP client config

{
  "mcpServers": {
    "eva": {
      "command": "npx",
      "args": ["-y", "eva-custom-mcp"],
      "env": {
        "EVA_BASE_URL": "https://yourcompany.evateam.ru",
        "EVA_API_TOKEN": "your-token"
      }
    }
  }
}

For local development before publishing:

{
  "mcpServers": {
    "eva": {
      "command": "node",
      "args": ["/absolute/path/to/eva-custom-mcp/dist/index.js"]
    }
  }
}

Tools

  • glossary_article_get: fetch a glossary article by slug or URL, for example api.

  • glossary_search: resolve a glossary term to an article.

EvaTeam project/task/document tools are enabled when EVA_API_TOKEN is set.

EVA_BASE_URL=https://yourcompany.evateam.ru
EVA_API_TOKEN=your-token

EvaTeam tools use JSON-RPC API methods documented in docs/eva_api and docs/eva-api-docs.md.

Project/search tools:

  • project_list: list projects.

  • project_get_by_code: resolve a project by code.

  • project_find_everything: search tasks and wiki documents in one project.

Task tools:

  • task_search: search tasks, optionally scoped by project.

  • task_get: get a task by code or object reference.

  • task_create: create a task.

  • task_update: update a task.

  • task_delete: delete a task.

  • task_transition: change task status.

  • task_comment_add: add a task comment.

  • task_comments_list: list task comments.

  • task_assign: assign a task to a person reference.

  • task_link_create: create a relation between two tasks.

  • task_time_log: log spent time.

  • task_create_from_template: create a task from a template.

Document tools:

  • document_search: search wiki documents by title.

  • document_get: get a document by code or object reference.

  • document_create: create a document.

  • document_update_text: update document draft/title/metadata.

  • document_publish: publish a document draft.

  • document_rename: rename a document.

  • document_children_list: list child documents.

  • document_tree: list project documents as a flat tree source.

  • document_attachments_list: list attachment metadata.

  • document_attachment_download: request/download all document attachments.

  • document_attachment_upload: create attachment metadata and upload a local file with multipart POST.

Short Prompt

Use EVA MCP as the source of truth for project tasks and wiki documents.
Prefer compact high-level tools: `project_find_everything`, `task_search`, `task_get`, `task_create`, `task_update`, `task_comment_add`, `task_time_log`, `document_search`, `document_get`, `document_create`, `document_update_text`, `document_publish`.
Always resolve project codes with `project_get_by_code`.
Before mutating an object, fetch it first and summarize the intended change.
Never delete or publish without explicit user confirmation.
Return EVA object codes in user-facing responses.

Full Prompt

You work with EvaTeam through the `eva-custom-mcp` MCP server.

Main rules:
- Always start with `project_get_by_code` when the user provides a project code.
- Use `project_find_everything` for broad project searches.
- For tasks:
  - use `task_search` to find tasks;
  - use `task_get` when a task code is known;
  - use `task_create` to create tasks;
  - use `task_update` to change task fields, status, or assignee;
  - use `task_comment_add` to add comments;
  - use `task_time_log` to log spent time.
- For wiki documents:
  - use `document_search` to find pages/documents;
  - use `document_get` when a document code is known;
  - use `document_create` to create a document;
  - use `document_update_text` to change content;
  - use `document_publish` to publish changes.
- Do not delete tasks or documents without explicit user confirmation.
- Do not publish documents without explicit user confirmation.
- Before changing a task or document, fetch the current object first with `task_get` or `document_get`.
- If the API returns multiple similar results, ask the user which object is intended.
- In user-facing responses, include EVA object codes such as `ABC-000123` for tasks and `DOC-000123` for documents.
- Never reveal API tokens and do not ask the user to paste tokens into chat.

Typical workflows:
1. "Find everything about X in project PRJ"
   - call `project_get_by_code`
   - call `project_find_everything`
   - summarize results grouped into tasks and documents

2. "Create a task in project PRJ"
   - call `project_get_by_code`
   - ask for missing title/description if needed
   - call `task_create`
   - return the created task code

3. "Update a wiki page"
   - find the page with `document_search` or `document_get`
   - summarize the intended change
   - after confirmation, call `document_update_text`
   - if publishing is needed, ask for separate confirmation before `document_publish`

4. "Add a comment to a task"
   - call `task_get`
   - call `task_comment_add`
   - confirm that the comment was added

Available Tools

2 tools
glossary_article_getB

Get a public EvaTeam glossary article by slug or URL

ParametersJSON Schema
NameRequiredDescriptionDefault
slugOrUrlYesEvaTeam glossary slug or article URL, e.g. api or https://www.evateam.ru/glossary/api/

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It discloses the resource is 'public' (an access level), but does not describe return format, error behavior for invalid slugs/URLs, or content structure. For a read tool with no annotations, this is minimal but not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, clear sentence that is appropriately concise with zero wasted words. It reads naturally and front-loads the verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (1 param, 100% schema coverage, read-only nature), so the description covers the essentials. It could mention what fields the returned article contains or behavior when both slug and URL forms are given, but for a straightforward single-entity GET tool with strong schema coverage, this is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description reinforces the parameter by naming both acceptable forms ('by slug or URL'). The example in the schema additionally illustrates valid values. The description adds marginal value but the schema already handles parameter meaning well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Uses specific verb (Get) + resource (EvaTeam glossary article) and states the input modality (by slug or URL). It is clear about purpose. However, it does not explicitly distinguish itself from the sibling glossary_search tool beyond the read-specific framing, though 'get' vs 'search' implies retrieval-by-identifier vs lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides minimal guidance on when to use this tool. The contrast with the sibling glossary_search is only implicit (get by exact slug/URL vs search). There is no explicit when/when-not guidance or alternative naming, though the 'by slug or URL' phrasing implies usage when you know the identifier.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv0.1.1
    • First observedglossary_article_get
    • First observedglossary_search

TDQS

C2.8/5.0

Scored across 2 tools

Disambiguation2/5

The two tools have overlapping purposes—both retrieve a glossary article's content, differing mainly in lookup mechanism (by slug/URL vs. term resolution). An agent could easily be unsure which to pick for a given query, since both ultimately return article content.

Naming Consistency4/5

Both tools follow a consistent verb_noun pattern (glossary_article_get, glossary_search), sharing the 'glossary' prefix. The verbs 'get' and 'search' differ slightly in style but remain predictable and readable.

Tool Count3/5

At only 2 tools, the surface is thin for a server dedicated to a glossary domain. It's borderline—enough for basic read access but minimal for any meaningful workflow beyond retrieval.

Completeness2/5

The surface only supports reading/searching glossary articles. There is no create, update, or delete capability, and no listing endpoint. It's a read-only retrieval server with noticeable gaps relative to typical content management expectations.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers