aspro-mcp
The aspro-mcp server acts as a bridge between LLM clients (e.g., Claude Desktop) and the Aspro.Cloud REST API, enabling AI models to discover and interact with the full API in a self-guided way.
List Modules (
aspro_list_modules): Retrieve all top-level API modules (e.g.,crm,fin,agile,task) with entity and operation counts.List Entities (
aspro_list_entities): Explore entities within a module and see available methods.List Methods (
aspro_list_methods): View all operations (HTTP method + path + description) for a module, optionally filtered by entity.Search (
aspro_search): Case-insensitive substring search across module names, entity names, methods, paths, descriptions, and tags.Describe an Operation (
aspro_describe): Get the full schema for a specific operation, including parameters and request body fields with types and descriptions.Execute API Calls (
aspro_call): Call any endpoint with path parameters, query arguments, and form-urlencoded body fields. The API key is appended automatically.
Supports both GET and write operations (POST/PUT/DELETE). Configure via company subdomain or a full custom base URL. Note: all operations including destructive ones (delete) are available, so the API key should have minimal required permissions.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@aspro-mcp list the available modules in Aspro"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
aspro-mcp
A Model Context Protocol server that exposes the Aspro.Cloud REST API to LLM clients (Claude Desktop, Claude Code, etc.). The server ships with the bundled OpenAPI spec, so the model can discover modules, entities and methods on its own and call them safely.
Features
Self-describing. The model browses the API via
aspro_search/aspro_list_*→aspro_describe, and only then calls — no need to memorize endpoints.Keyword search with Russian inflection handling, so
сделка,сделкиandсоздать задачуall land on the right endpoint.Reads and writes are separate tools.
aspro_callis read-only and annotated as such;aspro_writeis annotated destructive, so clients can auto-approve reads without also waving through deletes.Read-only mode via
ASPRO_READ_ONLY=1— mutating operations are refused before any request leaves the process.The API key never reaches the model. It is redacted from every URL and error message the tools return.
Response schemas.
aspro_describereports the fields an endpoint returns, not just what it accepts.Form-urlencoded POSTs by default (Aspro's expected content type), with array and nested-object handling.
Per-tenant config via
ASPRO_COMPANY(subdomain) or fullASPRO_BASE_URL.
Related MCP server: Aspro Cloud MCP
Install
Run it straight from npm — no checkout needed:
npx -y aspro-mcpThe published package is a single bundled file with no runtime dependencies, so npx has exactly one package to fetch and the server is up within a few seconds even on a cold cache.
Or clone and build:
git clone https://github.com/bssth/aspro-mcp.git
cd aspro-mcp
npm install
npm run buildRequires Node.js ≥ 18.
Wire it up to a client
Claude Desktop / Claude Code
Pass the credentials in the env block — this is the recommended setup and the only one that works with npx:
{
"mcpServers": {
"aspro": {
"command": "npx",
"args": ["-y", "aspro-mcp"],
"env": {
"ASPRO_COMPANY": "your_company",
"ASPRO_API_KEY": "your_api_key_here"
}
}
}
}For a local checkout, point at the built entry point instead:
{
"mcpServers": {
"aspro": {
"command": "node",
"args": ["/absolute/path/to/aspro-mcp/dist/index.js"],
"env": {
"ASPRO_COMPANY": "your_company",
"ASPRO_API_KEY": "your_api_key_here"
}
}
}
}Other MCP clients
Any client that speaks MCP over stdio can run npx -y aspro-mcp (or node dist/index.js).
"Connection timed out" on startup
Versions up to 0.2.1 pulled in about 100 transitive packages, and npx could spend 30 seconds or more installing them — longer than MCP clients wait (Claude Code gives up after 30 s), so a perfectly healthy server showed up as failed. 0.2.2 and later ship as one bundled file and start in a few seconds.
If your client still launches an old cached copy, ask for the current release explicitly with "args": ["-y", "aspro-mcp@latest"]. To take npx out of the picture altogether, install the package once and run the binary directly:
npm install -g aspro-mcp{
"mcpServers": {
"aspro": {
"command": "aspro-mcp",
"env": {
"ASPRO_COMPANY": "your_company",
"ASPRO_API_KEY": "your_api_key_here"
}
}
}
}Configure
Configuration comes from the environment. A local checkout can also use a .env file in the package root, which is read regardless of the client's working directory:
cp .env.example .envASPRO_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
# ASPRO_READ_ONLY=1 # optional; refuse create/update/delete entirely
# ASPRO_MAX_RESPONSE_CHARS=60000 # optional; cap on a single tool resultUnder npx the package lives in the npm cache, so there is no .env to read — use the env block shown above. Variables already present in the environment always win over .env.
Get an API key in your Aspro.Cloud account under Settings → Integrations → API.
Without credentials the server still starts and serves the discovery tools, which work entirely offline from the bundled spec; only the calling tools report the configuration error.
Tools exposed
Tool | What it does |
| List top-level modules ( |
| List entities inside a module and the methods available on each. |
| List operations (HTTP method + path + short description) for a module, optionally filtered by entity. |
| Keyword search across module / entity / method / path / description / tags. |
| Full schema for one operation: parameters, body fields, response fields, and whether it mutates data. |
| Execute a read ( |
| Execute a create / update / delete. Not registered at all when |
The recommended flow is search/list_* → describe → call/write.
Security notes
Aspro serves
/delete/{id}over HTTP GET. The HTTP verb tells you nothing about whether an operation is destructive, so do not build approval rules around it. This server classifies operations by their method segment and reports that asmutating;aspro_writecarries the destructive annotation andaspro_callrefuses anything that mutates.The API key is read from the environment and appended to every request as
?api_key=.... It is redacted from the URLs and error messages returned to the model, but it still lives in the client config — never commit.env.There is no per-endpoint allowlist: once configured,
aspro_writecan reach any mutating endpoint in the spec. Use a dedicated API key with the minimum necessary permissions, and setASPRO_READ_ONLY=1if the model has no business writing.Treat tool output as untrusted: Aspro entities (custom field values, descriptions, etc.) may contain user-supplied content.
Notes on the bundled spec
The spec documents no query parameters at all, yet list endpoints accept several. These were verified against a live tenant and are described to the model in the server instructions:
Parameter | Behaviour |
| 1-based page number. |
| Shrinks the page. A page holds at most 25 items regardless of a higher value. |
| Exact match on a response field, e.g. |
| Full-text search across the entity. |
Two traps worth knowing:
Unknown or unsupported query parameters are ignored silently, not rejected. A filter that does nothing looks exactly like a filter that matched everything, so verify against the returned items.
totalreports the unfiltered count, so it does not tell you how many rows matched a filter.
No working sort parameter was found.
Per-account custom fields (cf_<id> / cf_<alias>) are absent from the spec because they vary per tenant. They still come back in responses and can be sent in body.
Develop
npm run dev # rebuild the bundle on change
npm run build # tsc (type-check) + esbuild bundle
npm test # smoke + e2enpm run build type-checks with tsc and then bundles the server and its dependencies into dist/index.js with esbuild (see build.mjs). The MCP SDK, zod and dotenv are therefore devDependencies: they are compiled in, not installed by users. Their license texts are collected into dist/THIRD_PARTY_LICENSES.txt.
Neither suite hits the network. npm run smoke stubs fetch and asserts that the bundled spec parses, that mutating operations are classified correctly (including GET-served deletes), that search finds the expected endpoints, that URLs are built correctly, that the API key never appears in a tool result or error, and that oversized responses are capped. npm run e2e starts the built server over stdio with a real MCP client and checks the exposed tools, their annotations, and that ASPRO_READ_ONLY actually withholds aspro_write.
Project layout
src/
index.ts MCP server (tool registration + entry point)
config.ts environment loading and validation
client.ts HTTP client (URL building, redaction, form-urlencoded POSTs, timeouts, size caps)
spec.ts OpenAPI indexer (modules / entities / methods / search / describe)
smoke.ts offline unit tests
e2e.ts stdio round-trip against a real MCP client
spec/
openapi.json bundled Aspro.Cloud OpenAPI spec
build.mjs esbuild bundling + third-party license collectionContributing
Issues and PRs welcome. Please run npm run build && npm run smoke before submitting.
License
MIT — see LICENSE.
aspro-mcp is an unofficial third-party connector and is not affiliated with Aspro.Cloud.
Available Tools
7 toolsaspro_callARead-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.
Inputs: entity (required), method (required), module (required), id, +2 more.
aspro_describeARead-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.
Inputs: entity (required), method (required), module (required), include_raw_response_schema.
aspro_list_entitiesARead-only
List entities inside a given module along with the methods available on each entity.
Inputs: module (required).
aspro_list_methodsARead-only
List operations (HTTP method + path + short description) for a given module and optional entity.
Inputs: module (required), entity.
aspro_list_modulesARead-only
List all top-level Aspro.Cloud API modules (crm, fin, agile, task, etc.) with entity and operation counts.
Inputs: no named parameters.
aspro_searchARead-only
Search operations by keyword across module/entity/method/path/description/tags. Handles Russian inflection and multi-word queries ('создать задачу', 'сделки').
Inputs: query (required), limit.
aspro_writeADestructive
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.
Inputs: entity (required), method (required), module (required), id, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
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.
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.
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.
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
Related MCP Connectors
Discover, compare, route, and execute machine-accessible capabilities for AI agents.
Connect your AI agent to 300+ methods and 100+ live tools
AI-callable tools for API mocking, testing, monitoring, security, and automation.
Turn any task into the right API calls: discover, evaluate, and integrate public APIs.
Related MCP Servers
- FlicenseBqualityDmaintenanceExposes Zoho CRM v6 REST API as structured tools for LLM agents via MCP, enabling CRUD operations, search, COQL queries, and more.113-
- AlicenseBqualityDmaintenanceEnables AI assistants to manage CRM deals and tasks on Aspro Cloud, including CRUD operations on deals, tasks, users, pipelines, and workflows.16MIT
- FlicenseNot gradedqualityDmaintenanceEnables 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 npm1-
- AlicenseAqualityDmaintenanceExposes OpenAPI/Swagger API documentation as MCP tools, enabling AI agents to search, inspect, and call API endpoints through natural language.518 npmMIT