@theyahia/getcourse-mcp
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., "@@theyahia/getcourse-mcpList users created in the last 7 days."
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.
🗄 Repository archived
Development has moved to theYahia/WWmcp — a monorepo of MCP servers for non-Western APIs: CIS, MENA, Africa, LATAM, Southeast Asia. Shared core
@theyahia/mcp-core, unified CI, unified release pipeline.The current version of what was here:
servers/getcourse/The npm package is the same —
@theyahia/getcourse-mcp, installs and works as before. Nothing is updated here anymore. Issues and pull requests — in WWmcp.Archived — development moved to theYahia/WWmcp, a monorepo of MCP servers for non-Western APIs. The current version of this package now lives at
servers/getcourse/. The npm package@theyahia/getcourse-mcpis unchanged. Please open issues and pull requests there.
@theyahia/getcourse-mcp
MCP server for GetCourse LMS API. 3 tools for users, deals, and user creation.
Related MCP server: Gong MCP Server
Quick Start
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"getcourse": {
"command": "npx",
"args": ["-y", "@theyahia/getcourse-mcp"],
"env": {
"GETCOURSE_DOMAIN": "myschool.getcourse.ru",
"GETCOURSE_API_KEY": "your-api-key"
}
}
}
}Claude Code
claude mcp add getcourse -- npx -y @theyahia/getcourse-mcpSet env: GETCOURSE_DOMAIN + GETCOURSE_API_KEY.
Cursor / Windsurf
{
"getcourse": {
"command": "npx",
"args": ["-y", "@theyahia/getcourse-mcp"],
"env": {
"GETCOURSE_DOMAIN": "myschool.getcourse.ru",
"GETCOURSE_API_KEY": "your-api-key"
}
}
}Tools
Tool | Description |
| List users with optional status/date filters |
| Create or update a user, add to group/deal |
| List deals (orders) with status/date filters |
Auth
Variable | Required | Description |
| Yes | Account domain (e.g. myschool.getcourse.ru) |
| Yes | API secret key from account settings |
HTTP Transport
HTTP_PORT=3000 npx @theyahia/getcourse-mcp
# or
npx @theyahia/getcourse-mcp --http 3000Endpoints: POST /mcp (JSON-RPC), GET /health (status).
Skills
skill-students -- query and manage GetCourse students
skill-deals -- query GetCourse deals/orders by status and date
License
MIT
Available Tools
3 toolscreate_userB
Создание или обновление пользователя в GetCourse.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Город | |
| Yes | Email пользователя | ||
| phone | No | Телефон | |
| last_name | No | Фамилия | |
| first_name | No | Имя | |
| group_name | No | Название группы для добавления | |
| deal_offer_code | No | Код предложения для создания заказа |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description is the only source of behavioral information. It discloses that the operation can both create and update a user, but it does not state the upsert key, side effects, required permissions, or what happens on conflict. This is inadequate for a mutating tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short, front-loaded sentence with no filler. Every word contributes to stating the operation and target system.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is too sparse for a 7-parameter write operation with no annotations or output schema. Missing context includes the identity/email key for update behavior, when to prefer this over get_users/get_deals, and expected response or failure modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters already have individual descriptions. The tool description adds no parameter-level meaning beyond confirming the action, matching the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact operation (create or update) and resource (user in GetCourse), making the tool's purpose immediately clear. The sibling tools are read-oriented (get_users, get_deals), so this write/upsert tool is conceptually distinct without needing extra wording.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus the sibling get_users/get_deals, nor any conditions or exclusions. The only implied context is 'GetCourse', which is not enough to help an agent decide between creating/updating and reading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dealsC
Получение списка заказов (сделок) GetCourse.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Фильтр по статусу заказа | |
| created_to | No | Дата создания до (YYYY-MM-DD) | |
| created_from | No | Дата создания от (YYYY-MM-DD) |
TDQS
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 does convey that this is a read-style 'list' operation, but it does not mention response format, pagination, authentication requirements, side effects, or any limits. This is a significant gap for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the core purpose: retrieving a list of orders. There is no filler or redundant wording, so every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations and an output schema, the description is too thin to be fully actionable. It explains what the tool returns conceptually but not how the result is shaped, whether the filters combine, or what operational constraints apply. Low parameter complexity helps, but the lack of contextual detail remains a clear gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters already have meaningful descriptions in the input schema. The tool description adds no additional parameter semantics, which matches the baseline of 3; the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action and resource: 'Получение списка заказов (сделок) GetCourse' (getting a list of orders/deals). This is unambiguous about what the tool does, though it does not explicitly differentiate it from the sibling tools get_users and create_user.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance about when to use this tool versus alternatives, no context about prerequisites, and no explicit use-case framing. The intended usage is only implied by the tool name and the phrase 'list of orders', but no practical selection guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usersC
Получение списка пользователей GetCourse.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Фильтр по статусу пользователя | |
| created_to | No | Дата регистрации до (YYYY-MM-DD) | |
| created_from | No | Дата регистрации от (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden, but it only states that the tool retrieves a list of users. It does not mention pagination, default filtering behavior, response format, volume limits, or whether an empty list vs. an error occurs on no results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no wasted words, and the core purpose is front-loaded. It is appropriately sized for a simple read tool, though it contains no additional supporting details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has three optional filter parameters and no output schema, yet the description provides only a one-line purpose statement. Given the absence of annotations, an agent lacks sufficient context about how filters interact, what data is returned, and what caveats apply.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all three parameters (status, created_to, created_from) already documented in the schema. The description itself adds no extra meaning about parameter usage, combination rules, or formatting nuances, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear purpose: 'Получение списка пользователей GetCourse' (Getting a list of GetCourse users), which is a specific verb+resource pairing. However, it does not distinguish itself from any sibling tools, and no sibling names were provided to allow for differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool, what scenarios it fits, or which alternatives might be better suited. An agent gets no context about conditions that would make this tool the right choice.
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.
3 tool updates
v1.1.0- First observed
create_user - First observed
get_deals - First observed
get_users
TDQS
Scored across 3 tools
Each tool targets a distinct resource and action: getting users, creating/updating users, and getting deals. There is no overlap or ambiguity between the tools.
All tools follow a consistent verb_noun pattern with get_ or create_ prefixes (get_users, create_user, get_deals). Naming is predictable and uniform.
With exactly 3 tools, the count falls within the well-scoped 3-15 range. Each tool serves a clear core function for GetCourse integration without unnecessary bloat.
The tool surface covers listing users, upserting users, and listing deals, but notable operations are missing: no delete for users and no create/update/delete for deals. This creates partial CRUD coverage with gaps.
Maintenance
Related MCP Connectors
Read deals, persons, organizations, activities and pipelines; create and update CRM records.
List and create Keap contacts, companies, tasks, opportunities, orders, tags and campaigns.
Create, search, update, and manage data in OnePageCRM.
GestãoClick ERP (business management for SMBs) via the official API: customers, suppliers, products
Related MCP Servers
- AlicenseCqualityCmaintenanceEnables interaction with HubSpot CRM through a standardized API interface. Supports managing contacts, companies, deals, engagements, products, and associations with batch operations and advanced search capabilities.10061 npmMIT
- AlicenseAqualityAmaintenanceProvides access to Gong.io sales conversation data, enabling users to query calls, retrieve transcripts, list users, and search calls with date filtering and pagination.15366 npm21MIT
- AlicenseNot gradedqualityDmaintenanceEnables interaction with the Klaviyo API for marketing automation, including managing lists, campaigns, and customer data.1MIT
- FlicenseAqualityDmaintenanceEnables interaction with the Runrun.it API for task management, including retrieving task details, listing tasks with filters, and fetching current user information.5-