Skip to main content
Glama
bssth
by bssth

aspro-mcp

npm version npm downloads install size types CI License: MIT Node

Ein Model Context Protocol-Server, der die Aspro.Cloud REST-API für LLM-Clients (Claude Desktop, Claude Code usw.) bereitstellt. Der Server wird mit der gebündelten OpenAPI-Spezifikation ausgeliefert, sodass das Modell Module, Entitäten und Methoden selbstständig entdecken und sicher aufrufen kann.

Funktionen

  • Selbsterklärend. Das Modell durchsucht die API über aspro_list_modules → aspro_list_entities → aspro_list_methods → aspro_describe und führt erst dann aspro_call aus – Endpunkte müssen nicht auswendig gelernt werden.

  • Teilstring-Suche über Modul / Entität / Methode / Pfad / Beschreibung / Tags.

  • Form-urlencoded POSTs standardmäßig (der von Aspro erwartete Content-Type), mit Unterstützung für Arrays und verschachtelte Objekte.

  • Pfadparameter-Ersetzung für /get/{id}, /update/{id}, /delete/{id} und ähnliche.

  • Mandanten-spezifische Konfiguration über ASPRO_COMPANY (Subdomain) oder die vollständige ASPRO_BASE_URL.

Related MCP server: Aspro Cloud MCP

Installation

git clone https://github.com/bssth/aspro-mcp.git
cd aspro-mcp
npm install
npm run build

Erfordert Node.js ≥ 18.

Konfiguration

Kopieren Sie die Beispiel-Umgebungsdatei und füllen Sie sie aus:

cp .env.example .env
ASPRO_COMPANY=your_company        # the {company} part of https://{company}.aspro.cloud
ASPRO_API_KEY=your_api_key_here   # passed as ?api_key=... on every request
# ASPRO_BASE_URL=...              # optional; overrides the URL built from ASPRO_COMPANY
# ASPRO_TIMEOUT_MS=30000          # optional; default 30s

Einen API-Schlüssel erhalten Sie in Ihrem Aspro.Cloud-Konto unter Einstellungen → Integrationen → API.

Mit einem Client verbinden

Claude Desktop / Claude Code

Fügen Sie den Server zu Ihrer MCP-Konfiguration hinzu:

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

Der Server liest seine .env-Datei aus dem Projektstammverzeichnis, unabhängig vom Arbeitsverzeichnis, aus dem der Client ihn startet.

Andere MCP-Clients

Jeder Client, der MCP über stdio unterstützt, kann node dist/index.js (oder npm start) ausführen.

Verfügbare Tools

Tool

Funktion

aspro_list_modules

Listet Top-Level-Module (crm, fin, task, …) mit der Anzahl der Entitäten / Operationen auf.

aspro_list_entities

Listet Entitäten innerhalb eines Moduls und die für jede verfügbaren Methoden auf.

aspro_list_methods

Listet Operationen (HTTP-Methode + Pfad + kurze Beschreibung) für ein Modul auf, optional gefiltert nach Entität.

aspro_search

Teilstring-Suche über Modul / Entität / Methode / Pfad / Beschreibung / Tags.

aspro_describe

Vollständiges Schema für eine Operation: Query- / Pfadparameter, Body-Felder mit Typen und Beschreibungen.

aspro_call

Führt den Aufruf aus. Gibt { status, ok, url, data } zurück.

Der empfohlene Ablauf ist search/list_* → describe → call.

Entwicklung

npm run dev      # tsc --watch
npm run build    # tsc
npm run smoke    # offline: exercises the spec indexer and URL builder

Der Smoke-Test greift nicht auf das Netzwerk zu – er prüft, ob die gebündelte OpenAPI-Spezifikation geparst werden kann, ob Operationen beschrieben werden können und ob der URL-Builder wohlgeformte URLs erzeugt.

Projektstruktur

src/
  index.ts    MCP server (tool registration + entry point)
  config.ts   .env loading and validation
  client.ts   HTTP client (URL building, form-urlencoded POSTs, timeouts)
  spec.ts    OpenAPI indexer (modules / entities / methods / search / describe)
  smoke.ts    offline smoke test
spec/
  openapi.json  bundled Aspro.Cloud OpenAPI spec

Sicherheitshinweise

  • Der API-Schlüssel wird aus der Umgebung gelesen und an jede Anfrage als ?api_key=... angehängt. Committen Sie niemals die .env-Datei.

  • Der Server verfügt über keine Whitelist – sobald er konfiguriert ist, kann er jeden Endpunkt aufrufen, den die Spezifikation beschreibt (einschließlich destruktiver Aktionen wie /delete/{id}). Verwenden Sie einen dedizierten API-Schlüssel mit den minimal erforderlichen Berechtigungen.

  • Behandeln Sie Tool-Ausgaben als nicht vertrauenswürdig: Aspro-Entitäten (Werte benutzerdefinierter Felder, Beschreibungen usw.) können vom Benutzer bereitgestellte Inhalte enthalten.

Mitwirken

Issues und PRs sind willkommen. Bitte führen Sie npm run build && npm run smoke aus, bevor Sie etwas einreichen.

Lizenz

MIT – siehe LICENSE.

aspro-mcp ist ein inoffizieller Drittanbieter-Connector und steht in keiner Verbindung zu Aspro.Cloud.

Available Tools

7 tools
aspro_callA
Read-only

Read data from Aspro.Cloud — the list and get methods only. Run aspro_describe first to learn the parameter shape. Pass the entity id via id, query-string args via query. Returns { status, ok, url, data }. Use aspro_write for create/update/delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoPath id, when the operation path contains {id}.
bodyNoForm-urlencoded body fields for POST operations.
queryNoQuery string parameters. Do not include api_key — it is added automatically.
entityYes
methodYes
moduleYes

TDQS

A4.9/5.0
Behavior5/5

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

The description reveals that only list and get methods are supported, that api_key is automatically added, and the exact return structure { status, ok, url, data }. It also indicates parameter shapes are entity-specific and require aspro_describe first, going beyond the readOnlyHint and openWorldHint annotations with concrete behavioral details.

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?

The description consists of five short, purpose-driven sentences with no redundancy. It front-loads the core purpose and each subsequent sentence adds a necessary operational detail, making it highly concise and well-structured.

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

Completeness5/5

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

With no output schema, the description provides the return shape, which is vital. It also gives parameter-passing conventions, the prerequisite of running aspro_describe, and contrasts with aspro_write. For a generic read tool with sibling tools, this is complete enough for correct invocation.

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

Parameters4/5

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

The description explains how to use id and query ('Pass the entity id via `id`, query-string args via `query`') and warns not to include api_key. It directs users to aspro_describe for the full parameter shape, which compensates for the schema's 50% coverage. However, it leaves module/entity/method semantics implicit and does not mention body, though the list/get restriction makes body usage less relevant.

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

Purpose5/5

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

The description opens with 'Read data from Aspro.Cloud' and immediately specifies 'the `list` and `get` methods only,' clearly defining the tool's scope. It also distinguishes it from aspro_write by stating 'Use aspro_write for create/update/delete,' providing explicit differentiation from the write sibling.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use (reading via list/get), when-not-to-use (use aspro_write for writes), and a prerequisite (run aspro_describe first to learn parameter shapes). It also names an alternative tool for write operations, which is clear guidance.

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

aspro_describeA
Read-only

Return the full schema for one operation: HTTP method, path, whether it mutates data, request-body fields and the fields present in the response.

ParametersJSON Schema
NameRequiredDescriptionDefault
entityYes
methodYesMethod segment, e.g. 'list', 'get', 'create', 'update', 'delete'.
moduleYes
include_raw_response_schemaNoInclude the untrimmed OpenAPI response schema. Verbose; off by default.

TDQS

A4/5.0
Behavior3/5

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

The readOnlyHint annotation already communicates that the tool is safe and read-only. The description adds useful context about the content of the response (e.g., 'whether it mutates data' as part of the operation schema) but does not disclose additional behavioral traits such as authentication needs or performance characteristics.

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?

The description is a single, front-loaded sentence that efficiently conveys the tool's function and the key components of the returned schema. No wasted words.

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?

For a describe tool with no output schema, the description adequately covers what will be returned. It includes the essential details (HTTP method, path, mutation flag, request/response fields). However, it could be more complete by mentioning how module/entity/method are specified, but the schema fills in required parameters.

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?

The input schema provides descriptions for 'method' and 'include_raw_response_schema' but not for 'module' and 'entity' (50% coverage). The description clarifies the overall purpose but does not explain individual parameters in depth. It relies partly on the schema to communicate parameter meaning.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Return the full schema for one operation' with specific details (HTTP method, path, mutation, request-body, response fields). This distinguishes it from sibling tools like aspro_list_methods and aspro_call by focusing on schema introspection for a single operation.

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

Usage Guidelines4/5

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

The phrase 'for one operation' provides clear context that this tool is used when detailed schema information for a single operation is needed, rather than listing all modules/entities/methods. However, it does not explicitly mention when not to use it or name alternative tools, so it falls short of a 5.

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

aspro_list_entitiesA
Read-only

List entities inside a given module along with the methods available on each entity.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleYesModule name, e.g. 'crm', 'fin', 'task'.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true and openWorldHint=false, so safety and closed-world behavior are covered. The description adds that the result includes methods per entity, which is useful. However, it does not clarify whether the listing is exhaustive, paginated, or what the exact response structure is, so behavioral disclosure is only partial.

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?

The description is a single, dense sentence that conveys the core purpose and return value without any filler. Every word contributes meaning, and it is front-loaded with the action 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?

For a simple list tool with one parameter and a read-only annotation, the description is largely sufficient: it states what is listed and that methods are included. There is no output schema, but the description gives a reasonable idea of the return content. Missing details like sorting or filtering are not essential for this tool's simplicity.

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?

The input schema has 100% coverage for the single 'module' parameter with a clear description and examples. The tool description adds no further semantic detail beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('List') and resource ('entities inside a given module') and mentions the additional inclusion of methods on each entity. This clearly distinguishes it from sibling tools like aspro_list_modules (which lists modules) and aspro_list_methods (which likely lists methods in isolation), making the purpose unmistakable.

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 implies usage when you know a module name and want to explore its entities, but it provides no explicit guidance on when to use this tool versus aspro_list_methods or aspro_search. No alternative tools or exclusions are mentioned, so the usage context is only inferred from the sibling names and the parameter requirement.

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

aspro_list_methodsA
Read-only

List operations (HTTP method + path + short description) for a given module and optional entity.

ParametersJSON Schema
NameRequiredDescriptionDefault
entityNoEntity name. Omit to list operations across all entities of the module.
moduleYesModule name.

TDQS

A4.3/5.0
Behavior4/5

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

The readOnlyHint annotation already indicates a safe read operation. The description adds context about the return payload: each operation includes HTTP method, path, and short description. It also clarifies the 'optional entity' filtering behavior. No additional behavioral traits such as pagination or rate limits are disclosed, but that is not essential here.

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?

The description is a single sentence, front-loaded with the core action ('List operations'), and every word contributes meaning. No fluff or redundancy.

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

Completeness5/5

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

Given the tool's simplicity, two parameters, and the presence of the readOnlyHint annotation, the description adequately communicates the tool's purpose, input scope, and return content (HTTP method, path, short description). It does not need to explain an output schema since none exists, and the context is clear enough for an agent to select and invoke the tool correctly.

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?

The input schema already provides descriptions for both 'module' and 'entity', with 100% coverage. The description merely echoes the terms 'module' and 'optional entity' without adding extra semantics, so it adds minimal value over the schema, resulting in a baseline score of 3.

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

Purpose5/5

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

The description uses a specific verb ('List') and resource ('operations') with clear modifiers ('for a given module and optional entity'). It distinguishes itself from sibling tools like aspro_list_modules and aspro_list_entities by focusing on operations.

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

Usage Guidelines4/5

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

It specifies the context of use: given a module and optionally an entity. It implies the user should first select a module (via aspro_list_modules) and optionally an entity, but does not explicitly state when to prefer this over aspro_search or aspro_describe. This is clear context without explicit exclusions or alternatives.

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

aspro_list_modulesA
Read-only

List all top-level Aspro.Cloud API modules (crm, fin, agile, task, etc.) with entity and operation counts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, so the read-only safety is known. The description adds valuable context by specifying it returns entity and operation counts, and that it lists top-level modules. No contradiction with annotations; the added detail exceeds the bare operation.

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?

The description is a single, front-loaded sentence that packs the purpose, scope, and output details without redundant words. Every word earns its place, making it highly concise and well-structured.

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

Completeness5/5

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

For a zero-parameter, read-only listing tool with no output schema, the description is complete: it states what is listed, the scope (top-level modules), and the output content (entity and operation counts). No missing elements are apparent for this simple tool.

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

Parameters4/5

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

The tool has zero parameters, so the description need not explain parameter meanings. The schema confirms no properties, and the description focuses on output, which is appropriate. Baseline of 4 applies for no-parameter tools.

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

Purpose5/5

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

The description clearly states the tool lists all top-level Aspro.Cloud API modules with counts, using a specific verb and resource. It explicitly names examples (crm, fin, agile, task) and distinguishes from sibling tools like list_entities and list_methods by focusing on module-level scope.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool—when an overview of top-level modules is needed. However, it does not explicitly mention when not to use it or name alternatives such as list_entities, so it stops short of full explicit guidance.

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

aspro_writeA
Destructive

Create, update or DELETE data in Aspro.Cloud. Destructive — the change is applied to the live account and cannot be undone from here. Run aspro_describe first. Pass the entity id via id and body fields via body. Note that delete is served over HTTP GET.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoPath id, when the operation path contains {id}.
bodyNoForm-urlencoded body fields for POST operations.
queryNoQuery string parameters. Do not include api_key — it is added automatically.
entityYes
methodYes
moduleYes

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations' destructiveHint=true, the description adds specifics: changes are applied to the live account and cannot be undone, and delete is served over HTTP GET. This gives the agent crucial behavioral expectations not derivable from schema or annotations.

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?

Four sentences, front-loaded with the main action, then warning, usage, and the GET quirk. No fluff – each sentence provides actionable information.

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 description covers purpose, destructive warning, workflow (aspro_describe), and a surprising HTTP GET behavior. While module/entity/method semantics are left to aspro_describe, the tool is generic and the instruction to run describe first is a viable handoff. Given no output schema, it does not explain return values, but that's acceptable for a write tool.

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 covers id, body, and query descriptions (50% coverage). The description reinforces id as entity id and body as body fields, but module, entity, and method remain undocumented. It points to aspro_describe for context, partially compensating, but the description adds limited new meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the tool writes (create/update/delete) data in Aspro.Cloud, distinguishing it from read-only siblings like aspro_list_* and aspro_search. It also emphasizes the destructive nature, which is a key distinguishing trait.

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

Usage Guidelines4/5

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

It explicitly instructs to run aspro_describe first, setting up a workflow. The destructive warning implies caution, and the mention of create/update/delete implies it's for mutations, separating it from read tools. However, it doesn't explicitly name read-only alternatives or say when not to use.

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. 3 tool updatesv0.2.0
    • Changedaspro_describe1 field changed
      • addedInput schema / properties / include_raw_response_schema
        Added value: +{
        +  "description": "Include the untrimmed OpenAPI response schema. Verbose; off by default.",
        +  "type": "boolean"
        +}
    • Changedaspro_search1 field changed
      • changedInput schema / properties / query / description
        Previous value: -"Substring to search for, case-insensitive."New value: +"Keywords to search for, case-insensitive."
    • Addedaspro_write
  2. 6 tool updatesv0.1.1
    • First observedaspro_call
    • First observedaspro_describe
    • First observedaspro_list_entities
    • First observedaspro_list_methods
    • First observedaspro_list_modules
    • First observedaspro_search

TDQS

A4.4/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct role: discovery (modules, entities, methods), search, schema description, read execution, and write execution. There is no overlap in purpose, so an agent can easily select the right tool for each step.

Naming Consistency5/5

All tool names follow the aspro_ prefix with a descriptive verb: aspro_list_modules, aspro_list_entities, aspro_list_methods, aspro_search, aspro_describe, aspro_call, aspro_write. The pattern is consistent and predictable, making it easy to infer functionality from the name.

Tool Count5/5

Seven tools is well-scoped for an API exploration and interaction server. Each tool earns its place, covering the full workflow from discovery to execution without unnecessary redundancy or bloat.

Completeness5/5

The tool surface covers the complete API interaction lifecycle: exploring modules and entities, listing methods, searching, describing schemas, reading data, and writing data. No obvious gaps are apparent for the stated purpose of working with Aspro.Cloud.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    Exposes Zoho CRM v6 REST API as structured tools for LLM agents via MCP, enabling CRUD operations, search, COQL queries, and more.
    11
    3
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables language models to interact with Bitrix24 CRM, providing tools to manage deals, leads, contacts, tasks, activities, users, files, chat messages, and live chat sessions.
    9 npm
    1
    -