Skip to main content
Glama

Geo-Explorer

Geo-Explorer is a learning-track exploration tool that gives you structured study plans, hands-on code challenges, and printable certificates for three technologies: JavaScript, Python, and TypeScript — each at beginner (iniciante) or advanced (avancado) level.

All track data lives in a local JSON file (data/tracks.json). There are no external API calls — everything is static and self-contained.

The project exposes its functionality through two surfaces:

  • CLI — run commands directly from the terminal with npm run cli

  • MCP Server — register it in any MCP-compatible client (e.g. Claude Desktop) and call the same three tools via natural language


Prerequisites

  • Node.js 18+ (tested on v24)

  • npm 8+


Related MCP server: Learning Assistant MCP Server

Installation

git clone https://github.com/your-username/geo-explorer.git
cd geo-explorer
npm install

CLI Usage

All CLI commands use the npm run cli -- prefix followed by a sub-command and its arguments.

trilha — Study plan

Prints an ordered list of modules for a given technology and level.

npm run cli -- trilha javascript iniciante
npm run cli -- trilha python avancado
npm run cli -- trilha typescript iniciante

desafio — Code challenge

Prints the challenge title, description, and a starter code block for a given track.

npm run cli -- desafio javascript iniciante
npm run cli -- desafio python avancado
npm run cli -- desafio typescript avancado

certificado — Certificate

Generates an ASCII certificate for a learner's name, technology, and level.

npm run cli -- certificado "Maria Silva" javascript iniciante
npm run cli -- certificado "João Costa" python avancado
npm run cli -- certificado "Ana Lima" typescript iniciante

Help

npm run cli -- help

MCP Server

The MCP server exposes the same three commands (trilha, desafio, certificado) as MCP tools over stdio, so any MCP-compatible client can call them.

Build the project first:

npm run build

This compiles TypeScript to dist/ and produces dist/mcp-server.js.

Run the server:

npm start

The server stays running and listens for MCP messages on stdin/stdout. See docs/mcp-setup.md for instructions on registering it in Claude Desktop or another MCP client.


Running Tests

npm test

Runs all 9 Vitest tests across three test files (track, challenge, certificate). Tests run against the real data/tracks.json — no mocking required.

Available Tools

3 tools
certificadoC

Gera um certificado de conclusão para o aprendiz.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNome do aprendiz
levelYesNível: iniciante ou avancado
technologyYesNome da tecnologia

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description must carry behavioral transparency, but it only states that a certificate is generated. It does not specify side effects, persistence, permissions, or return behavior, which is especially relevant for an action that may create or deliver a file.

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, clear, front-loaded sentence with no filler or redundancy.

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

Completeness2/5

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

The description leaves out what the tool returns or does with the generated certificate (e.g., create a file, return a URL, persist to a system). Since there are no annotations and no output schema, this behavioral gap is significant for an agent deciding whether this is the right call and what to expect.

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 description coverage is 100%, so the parameters are already documented. The tool description adds no extra semantics beyond stating the purpose, 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.

Purpose4/5

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

The description uses a specific verb ('Gera' / 'generates') and a clear object ('certificado de conclusão para o aprendiz'), making the tool's purpose obvious. It does not explicitly differentiate from the sibling tools 'trilha' and 'desafio', though the certificate-generation intent is distinct enough.

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

Usage Guidelines2/5

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 tools, nor any conditions, prerequisites, or contexts. The description is purely a definition of function, so an agent has no help choosing between this and 'trilha' or 'desafio'.

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

desafioA

Retorna o desafio de código para uma tecnologia e nível.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelYesNível: iniciante ou avancado
technologyYesNome da tecnologia

TDQS

A3.5/5.0
Behavior3/5

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

The description makes the read-only nature clear ('Retorna...') and there are no warnings about side effects. However, it provides no detail about response format, limits, or failure behavior, and there are no annotations to help.

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?

One short, front-loaded sentence with no filler. The purpose is immediately clear.

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

Completeness3/5

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

For a simple two-parameter retrieval tool, the description plus schema provide the essential calling context. It lacks examples of valid technology values and any indication of the response shape, but the tool appears low-complexity.

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 high: both parameters are documented. The description itself adds little beyond the schema; 'level' gives allowed examples ('iniciante ou avancado'), and 'technology' remains a generic name.

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?

The description clearly states the tool "returns a code challenge for a technology and level," with a specific verb and object. It does not explicitly contrast with sibling tools like 'certificado', but the scope is understandable.

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?

Usage context is implied—call it when you need a code challenge for a given technology and skill level—but there is no explicit guidance about when to prefer an alternative tool or avoid using it.

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

trilhaB

Retorna o plano de estudos para uma tecnologia e nível.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelYesNível: iniciante ou avancado
technologyYesNome da tecnologia (ex: javascript)

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are present, so the description carries the full behavioral burden. 'Retorna' implies a read-only operation and makes the core behavior clear, but it does not state side-effect freedom, response shape, or any constraints (e.g., technology format). For a simple retrieval tool this is adequate but minimal.

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 that efficiently conveys the resource and scope with no filler. It is immediately readable and contains all essential purpose information. Nothing could be removed without losing meaning.

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

Completeness3/5

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

The tool is simple, with two well-documented parameters and no output schema, so the description does not need to explain return values in detail. However, the description omits context about what the study plan contains, how it relates to the sibling tools (desafio, certificado), and whether any ordering or prerequisites apply. It is acceptable for a basic query but not fully complete for an agent navigating the tool landscape.

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 description coverage is 100%: each parameter already has a meaningful description with an example (e.g., 'javascript' and 'iniciante ou avancado'). The tool description only restates 'tecnologia e nível' without adding value beyond the schema, so the baseline of 3 applies.

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?

The description uses a specific verb ('Retorna') and a clear resource ('plano de estudos') scoped by technology and level, so an agent can tell what the tool does. It does not explicitly contrast with the sibling tools (desafio, certificado), but the names and resource type make the distinction fairly evident.

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

Usage Guidelines2/5

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 alternatives (desafio, certificado). There are no when-to-use hints, exclusions, or context about whether this should be used before or after a challenge/certificate. The agent is left to infer usage from the name and sibling tool names.

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 updatesv1.0.0
    • First observedcertificado
    • First observeddesafio
    • First observedtrilha

TDQS

A3.5/5.0

Scored across 3 tools

Disambiguation5/5

Each tool targets a distinct artifact: study plan, code challenge, and certificate. There is no overlap or ambiguity between the three.

Naming Consistency5/5

All tool names follow the same pattern: single lowercase Portuguese nouns (trilha, desafio, certificado). The naming is uniform and predictable.

Tool Count4/5

Three tools is slightly minimal but appropriate for a focused learning-oriented server. The count is not bloated, though more tools could expand the scope.

Completeness4/5

The core journey of study plan, coding challenge, and certificate is covered. Minor gaps exist, such as no tool for listing available technologies/levels or tracking progress, but they are not fatal.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers