mcp-github-explorer-server
Allows AI agents to fetch public GitHub user profiles, list a user's most-starred repositories, and compute language usage statistics via the GitHub API.
Click on "Install 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., "@mcp-github-explorer-serverWhat are the top 5 most starred repos by torvalds?"
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.
mcp-github-explorer-server — PoC de Agente de IA com MCP
Servidor MCP (Model Context Protocol) que expõe dados públicos do GitHub como ferramentas que qualquer agente de IA compatível com MCP pode descobrir e invocar dinamicamente — sem nenhuma integração hardcoded.
Este documento é o mini-tutorial de reprodução: qualquer colega da turma consegue rodar esta PoC do zero em ~10 minutos.
1. O que esta PoC demonstra
Como um MCP Server anuncia suas capacidades (
tools) a um host de IA.Como o host descobre essas ferramentas (
tools/list) e as invoca (tools/call) via JSON-RPC 2.0 sobre o transporte stdio.Como o modelo decide sozinho, a partir da linguagem natural do usuário, quais ferramentas chamar e com quais parâmetros — sem o desenvolvedor escrever nenhum "if/else" de roteamento de intenção.
Três ferramentas expostas:
Tool | O que faz |
| Retorna dados públicos de um usuário/organização do GitHub |
| Lista os repositórios mais estrelados de um usuário |
| Calcula a distribuição de linguagens usadas pelo usuário |
Related MCP server: github-mcp
2. Pré-requisitos
Node.js 18 ou superior (
node --version)Um host MCP para testar. Recomendamos dois caminhos, do mais simples ao mais completo:
MCP Inspector (não exige instalar nada além do Node — ótimo para validar rápido)
Claude Desktop ou Claude Code (para a demonstração "de verdade", com o modelo decidindo quando chamar as tools)
3. Instalação e build
# dentro da pasta do projeto
npm install
npm run buildIsso compila src/index.ts (TypeScript) para build/index.js (JavaScript),
que é o arquivo que qualquer host vai executar como subprocesso.
4. Teste rápido com o MCP Inspector (sem precisar do Claude Desktop)
npm run inspectIsso abre uma interface web local onde dá pra ver as 3 tools registradas,
chamar cada uma manualmente (ex: get_github_profile com username: torvalds)
e inspecionar a troca de mensagens JSON-RPC em tempo real. É o jeito mais
rápido de provar pro professor/turma que o protocolo está funcionando,
mesmo sem um modelo de IA no meio.
Nota sobre rate limit: a API pública do GitHub sem autenticação permite 60 requisições/hora por IP. Se aparecer esse erro, é isso — normal em redes compartilhadas (ex: Wi-Fi da faculdade), não é bug. Na sua máquina pessoal costuma funcionar sem problema.
Bônus didático: o arquivo
test-client.mjsna raiz do projeto é um cliente MCP mínimo, escrito à mão (sem SDK de cliente), que faz o handshakeinitialize→tools/list→tools/calle imprime as mensagens JSON-RPC cruas. Rode comnode test-client.mjspara mostrar na apresentação exatamente o que trafega "por baixo do capô" do protocolo, sem a camada visual do Inspector.
5. Conectando ao Claude Desktop
Abra o arquivo de configuração do Claude Desktop:
Linux:
~/.config/Claude/claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Adicione (use o caminho absoluto do
build/index.jscompilado):
{
"mcpServers": {
"github-explorer": {
"command": "node",
"args": ["/caminho/absoluto/para/mcp-github-poc/build/index.js"]
}
}
}Feche o Claude Desktop completamente (não só a janela) e reabra.
Verifique o ícone de ferramentas (martelo 🔨) na caixa de mensagem — ele confirma que pelo menos um MCP server está ativo.
Teste com um prompt em linguagem natural, por exemplo:
"Usa o github-explorer pra ver o perfil do usuário torvalds e me diz quais são as 3 linguagens que ele mais usa."
O modelo vai decidir sozinho chamar
get_github_profilee depoisget_language_stats— essa decisão automática é o ponto central da demonstração.
6. Alternativa: conectando ao Claude Code (CLI)
claude mcp add github-explorer -- node /caminho/absoluto/para/mcp-github-poc/build/index.js
claude mcp list # confirma que o servidor foi registradoDentro de uma sessão do Claude Code, use /mcp para checar o status da
conexão a qualquer momento.
7. Estrutura do projeto
mcp-github-poc/
├── src/index.ts # código-fonte do servidor MCP (comentado)
├── build/ # gerado pelo `npm run build`
├── package.json
├── tsconfig.json
└── README.md # este arquivo8. Possíveis extensões (para quem quiser ir além)
Trocar o transporte
stdiopor Streamable HTTP, permitindo que o servidor rode remotamente e sirva vários clientes ao mesmo tempo.Adicionar um Resource (ex: expor o
README.mdde um repo como contexto navegável, em vez de só umatool).Adicionar autenticação via
GITHUB_TOKENpara elevar o rate limit de 60 para 5.000 requisições/hora.
Available Tools
3 toolsget_github_profilePerfil do GitHubA
Busca informacoes publicas de um usuario ou organizacao do GitHub: nome, bio, empresa, localizacao, numero de seguidores e de repositorios publicos.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Nome de usuario (login) do GitHub, ex: 'Bruno-GabrielDev' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool accesses public information and lists the returned fields, but it does not disclose error handling, rate limits, or confirmation that it is read-only. This is adequate but leaves some gaps.
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, focused sentence that front-loads the core purpose and lists the output fields efficiently. Every word contributes meaning, and it is appropriately sized for the tool's simplicity.
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?
For a simple profile lookup tool with one parameter and no output schema, the description is sufficiently complete by enumerating the returned data fields. It adds context that is not present in the schema, though it could mention behavior for nonexistent users or error conditions.
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?
The input schema already provides full documentation for the single 'username' parameter with a clear description and example. The tool description does not add additional parameter behavior or syntax beyond what the schema covers, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches public GitHub user or organization information, and enumerates the specific fields returned (name, bio, company, location, followers, public repos). This distinguishes it from sibling tools like list_top_repos and get_language_stats, which focus on repositories and language statistics.
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 implies usage for fetching profile data, but it does not explicitly mention when to use this tool over alternatives. No exclusion criteria or alternatives are provided, though the scoped description makes the use case fairly evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_language_statsEstatisticas de linguagensA
Calcula a distribuicao percentual das linguagens de programacao usadas nos repositorios publicos (nao-fork) de um usuario do GitHub, com base na linguagem principal de cada repositorio.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Nome de usuario (login) do GitHub |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key behavior: it only includes public non-fork repositories and uses the main language of each repo. This goes beyond the schema, though it doesn't describe edge cases (e.g., repos without a language) or return format specifics.
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 one concise sentence, front-loaded with the main action and object. Every phrase earns its place—no redundant details or filler.
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?
For a simple 1-parameter tool with no output schema, the description provides adequate details on scope and method. It could mention whether the result is a list/map or whether it includes all languages, but the core purpose is clear.
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 coverage is 100% for the single 'username' parameter. The description adds no new meaning beyond the schema, which already describes it as a GitHub username (login). Baseline 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 specific verb ('Calcula' / calculates), a precise resource (percentage distribution of programming languages in public non-fork repositories of a GitHub user), and the methodology (based on each repo's primary language). This clearly differentiates it from siblings like get_github_profile and list_top_repos.
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?
It gives clear context: use when you need language distribution for a user's public, non-fork repos. It does not explicitly mention when not to use it or name alternatives, but the distinct purpose makes usage straightforward.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_top_reposTop repositorios do GitHubA
Lista os repositorios publicos mais estrelados de um usuario do GitHub, com linguagem principal e contagem de estrelas.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Quantidade maxima de repositorios a retornar (1-20, padrao 5) | |
| username | Yes | Nome de usuario (login) do GitHub |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It specifies that it returns public repositories with main language and star count, which is useful, but it does not mention pagination, rate limits, authentication, or error behavior. The description adds some context but is not rich.
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, effective sentence that is front-loaded with the verb 'Lista' and clearly communicates the tool's purpose. It contains no unnecessary words or repetition, making it both concise and well-structured.
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?
For a simple read-only list tool with 2 parameters and full schema coverage, the description is adequate. It states the output fields (language and star count) and implies a list structure, though it lacks an explicit output schema. It does not mention potential edge cases like user not found, but overall it provides enough context for typical use.
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 both 'username' and 'limit' parameters having descriptive text. The tool description does not add additional parameter meaning beyond what the schema already provides, so a baseline score of 3 is appropriate.
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 it lists the most starred public repositories of a GitHub user with language and star count, which is a specific verb+resource+scope. It distinguishes itself from sibling tools like get_github_profile and get_language_stats by focusing on repositories rather than profile or language statistics.
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 implies its usage (for listing a user's top repos) but provides no explicit guidance on when to use this tool versus alternatives like get_github_profile or get_language_stats. It does not mention any exclusions or prerequisites, so it offers only implied usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct aspect of GitHub data: profile info, top repositories, and language distribution. No overlap in purpose, making selection unambiguous.
All tool names follow the verb_noun pattern with snake_case: get_github_profile, list_top_repos, get_language_stats. Consistent and predictable.
Three tools is a well-scoped set for a focused GitHub explorer server. Each tool serves a clear function without redundancy or bloat.
The server covers common GitHub exploration needs: profile, top repos, and language stats. Minor gaps like detailed repo info or follower lists exist but are not critical for the apparent purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
Hosted MCP server for live public-data APIs and Skills for AI agents.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseBqualityBmaintenanceMCP server that exposes GitHub operations as tools for AI agents, enabling code search, issue management, and PR review.12MIT
- FlicenseNot gradedqualityCmaintenanceA read-only MCP server that exposes GitHub user profiles, repository info, and search via tools for AI assistants like Claude.
- FlicenseAqualityCmaintenanceMCP server for AI agents to securely access GitHub data, including listing repositories and user profile info via the GitHub API.2
- FlicenseAqualityCmaintenanceMCP server that wraps GitHub REST API to allow AI agents to search repositories, get repository details, list issues, and read READMEs.4
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Bruno-GabrielDev/mcp-github-explorer-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server