Simple MCP Server - Star Wars 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., "@Simple MCP Server - Star Wars APIsearch for Darth Vader"
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.
Simple MCP Server - Star Wars API
📋 Sobre o Projeto
Este é um micro projeto para demonstração da criação de um Model Context Protocol (MCP) Server utilizando a API aberta SWAPI (Star Wars API) para fins de ilustração e portfólio.
O projeto demonstra como criar um servidor MCP funcional que pode ser integrado ao Claude Desktop ou testado através do MCP Inspector, fornecendo acesso a dados do universo Star Wars através de ferramentas e recursos estruturados.
Related MCP server: SWAPI MCP Server
🚀 Funcionalidades
Tools Disponíveis
search_characters - Busca personagens por nome
search_planets - Busca planetas por nome
search_films - Busca filmes por título
search_characters_byId - Busca personagem específico por ID
Resources Disponíveis
all_films - Lista todos os filmes ordenados por episódio
🛠️ Tecnologias Utilizadas
TypeScript - Linguagem principal
Node.js - Runtime
Model Context Protocol (MCP) SDK - Framework para criação do servidor
Axios - Cliente HTTP para requisições à API
Zod - Validação de esquemas
SWAPI API - Fonte de dados (Star Wars)
📦 Instalação
Pré-requisitos
Node.js (versão 18 ou superior)
npm ou yarn
Passos para Instalação
Clone o repositório:
git clone https://github.com/RamosJSouza/simple-mcp-server.git cd simple-mcp-serverInstale as dependências:
npm installCompile o projeto:
npm run build
🎯 Como Usar
Opção 1: MCP Inspector (Recomendado para Testes)
O MCP Inspector é uma ferramenta web que permite testar e interagir com servidores MCP de forma visual e intuitiva.
Execute o inspector:
npm run inspectorAcesse a interface:
Abra seu navegador em:
http://localhost:6274Use o token fornecido no terminal para autenticação
Teste as funcionalidades:
Explore os tools disponíveis na aba "Tools"
Visualize os resources na aba "Resources"
Execute consultas e veja os resultados em tempo real
🖼️ Interface do MCP Inspector

Interface do MCP Inspector mostrando a busca por "anakin" e o resultado detalhado do personagem Anakin Skywalker com todas as informações (nome, altura, massa, ano de nascimento, gênero, cor dos olhos, cor do cabelo e cor da pele). A ferramenta permite testar todos os tools disponíveis de forma interativa.
Documentação oficial do MCP Inspector: Model Context Protocol Inspector
Opção 2: Claude Desktop
Para integrar com o Claude Desktop:
Configure o arquivo de configuração:
{ "mcpServers": { "simple-mcp-server": { "command": "node", "args": ["C:\\caminho\\para\\seu\\projeto\\build\\index.js"], "env": { "NODE_ENV": "development" } } } }Localização do arquivo de configuração:
Windows:
C:\Users\[SEU_USUARIO]\AppData\Roaming\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Reinicie o Claude Desktop para carregar a nova configuração
📚 Scripts Disponíveis
npm run build # Compila o projeto TypeScript
npm run watch # Compila em modo watch (desenvolvimento)
npm run inspector # Executa o MCP Inspector para testes🏗️ Estrutura do Projeto
simple-mcp-server/
├── src/
│ ├── index.ts # Servidor MCP principal
│ └── types.ts # Definições de tipos TypeScript
├── build/ # Código compilado (gerado)
├── package.json # Configurações e dependências
├── tsconfig.json # Configurações do TypeScript
└── README.md # Este arquivo🔧 Configuração e Personalização
Adicionando Novos Tools
Para adicionar novos tools ao servidor:
Defina o schema no arquivo
types.tsImplemente o tool no método
setupTools()Compile o projeto com
npm run build
Exemplo de Tool
this.server.registerTool(
"nome_do_tool",
{
title: "Título do Tool",
description: "Descrição do que o tool faz",
inputSchema: {
parametro: z.string().describe("Descrição do parâmetro"),
},
},
async ({ parametro }) => {
// Implementação do tool
return {
content: [
{
type: "text" as const,
text: "Resultado do tool",
}
]
};
}
);🐛 Solução de Problemas
Problemas Comuns
Porta em uso no Inspector:
# Erro: "Proxy Server PORT IS IN USE at port 6277" # Solução: Aguarde alguns segundos e tente novamenteClaude Desktop não detecta o MCP:
Verifique se o caminho no arquivo de configuração está correto
Reinicie completamente o Claude Desktop
Verifique se o projeto foi compilado (
npm run build)
Erros de compilação:
Execute
npm installpara garantir que todas as dependências estão instaladasVerifique se está usando Node.js versão 18 ou superior
📖 Documentação Adicional
👨💻 Desenvolvedor
RAMOS DE SOUZA JANONES
Desenvolvedor Full Stack
LinkedIn: linkedin.com/in/ramos-souza
GitHub: github.com/RamosJSouza
Resumo Profissional
Desenvolvedor Full Stack com mais de 14 anos de experiência em arquiteturas escaláveis, microserviços e soluções cloud-native. Especialista em Node.js, React, Angular e DevOps, com histórico de liderança técnica e redução de 20% no tempo de entrega em projetos críticos. Focado em inovação, performance e mentoria de equipes ágeis.
Habilidades Técnicas
Linguagens: JavaScript, TypeScript, Python, PHP
Frontend: React, React Native, Next.js, Angular, Redux, Styled Components, Storybook
Backend: Node.js, NestJS, Express, GraphQL, REST
Bancos de Dados: PostgreSQL, MongoDB, MySQL
Cloud & DevOps: AWS, Serverless, GCP, Azure, Docker, Kubernetes, CI/CD (GitHub Actions, Azure DevOps)
Mensageria: Kafka, RabbitMQ
Testes: Cypress, Jest, TDD (Test-Driven Development)
Outras Ferramentas: Power BI, Pentaho ETL
Desenvolvimento com IA: Cursor AI, GitHub Copilot, Model Context Protocol (MCP), Prompt Engineering, Context Engineering, Desenvolvimento de Agentes de IA
Soft Skills: Liderança técnica, mentoria, resolução de problemas, colaboração ágil
⚠️ Nota Importante
Este projeto foi desenvolvido 100% manualmente, sem utilização de IA para geração de código. Todo o desenvolvimento foi realizado através de conhecimento técnico próprio e experiência profissional, mesmo sendo um simples MCP Server.
📄 Licença
Este projeto é de código aberto e está disponível sob a licença MIT.
Projeto criado para fins educacionais e demonstração de habilidades técnicas em desenvolvimento de servidores MCP.
Available Tools
4 toolssearch_charactersSearch characters Star WarsB
Search characters Star Wars, in API by name
| Name | Required | Description | Default |
|---|---|---|---|
| search | Yes | Name os an caracters os Star Wars Films |
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 only states that it searches 'by name' and does not mention return format, pagination, or confirm that this is a read-only operation, leaving significant gaps for a tool with no annotation support.
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 very short and front-loaded, but it is grammatically awkward ('Search characters Star Wars') and duplicates the title. It is concise but lacks structure and fails to add meaningful detail beyond the basic purpose.
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 one-parameter, read-only search tool with a fully descriptive schema, the description is minimally sufficient. However, it does not explicitly differentiate from sibling tools or describe what the response contains, and the low complexity only partially compensates for these omissions.
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% for the single 'search' parameter, so the baseline is 3. The description's 'by name' merely restates the schema's intent and adds no extra detail about matching behavior, case sensitivity, or expected input format.
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 uses the verb 'Search' with the resource 'characters Star Wars' and specifies 'by name', which distinguishes it from the sibling tool search_characters_byId. However, the phrasing is awkward and repeats the title, and it does not explicitly mention the alternative of searching by ID.
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 phrase 'by name' implies this tool is for name-based character searches, giving some usage context. However, there is no explicit mention of when to use this tool versus search_characters_byId or the other sibling tools, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_characters_byIdSearch character by ID Star WarsB
Search a specific Star Wars character by ID
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Star Wars character |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. 'Search' implies a read-only operation, which is transparent. However, it does not disclose what happens if the ID is not found, the return format, or any potential side effects. For a simple lookup this may be sufficient, but more detail would improve clarity.
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 verb and resource. It contains no filler, repetition, or unnecessary context, making it highly efficient.
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 one-parameter lookup tool with no output schema and no annotations, the description adequately conveys the tool's purpose and scope. It could mention not-found behavior or the expected response, but given the tool's simplicity, the current description is nearly complete.
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 fully describes the single parameter 'id' as 'ID of the Star Wars character', giving 100% schema coverage. The description only adds the redundant word 'specific', which is already implied by fetching by ID, so it provides no additional semantic value beyond the schema.
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 'Search a specific Star Wars character by ID' clearly states a verb ('search'), resource ('Star Wars character'), and scope ('by ID'), which is useful. However, it does not explicitly distinguish this from the sibling tool 'search_characters', which likely searches across characters generally.
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 provides no guidance on when to use this tool versus alternatives. It does not mention that this should be used when you have a known ID, nor does it exclude it for other search scenarios. There is no explicit context or alternative naming.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_filmsSearch films Star WarsD
Search films Star Wars, in API by title
| Name | Required | Description | Default |
|---|---|---|---|
| search | Yes | Title of a Star Wars film |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It does not state whether the search is case-sensitive, supports partial matches, returns a list or a single result, or any details about pagination or error handling. This is a critical gap for a search 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 extremely short but under-specified, with awkward phrasing ('in API by title') that does not earn its place. It lacks informative content, making it more of an under-specification than a concise summary.
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 no output schema and no annotations, so the description must explain return values and behavior. It fails to mention what the search returns, whether it returns a collection or a single object, or any constraints on the search. The description is inadequate for a simple search tool.
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 provides 100% coverage for the single parameter 'search' with a clear description ('Title of a Star Wars film'). The description's 'by title' is redundant, adding no new meaning beyond the schema. Baseline of 3 is appropriate since 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 'Search films Star Wars, in API by title' largely restates the tool name and title without adding meaningful specificity. It conveys a verb+resource but fails to clarify scope or behavior, distinguishing it from siblings only by resource name, which is already evident from the tool name.
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 provided on when to use this tool versus alternatives like search_characters or search_planets. There is no mention of prerequisites, exclusions, or typical use cases, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_planetsSearch planets Star WarsB
Search planets Star Wars, in API by name
| Name | Required | Description | Default |
|---|---|---|---|
| search | Yes | Name of a planet in Star Wars Films |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral disclosure burden. It only states 'by name' but does not reveal return format, matching behavior (exact vs partial), pagination, or case sensitivity. This is minimal transparency for a search tool, though it is not misleading.
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 gets to the point, though the phrasing 'in API' is slightly awkward and the 'Star Wars' mention is redundant with the title. It is efficient without being overly verbose.
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 one-parameter search tool with no output schema, the description provides the core purpose but lacks details about return values or limitations. It is adequate for basic use but leaves gaps around expected results and edge cases, making it a minimum viable score.
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 schema already provides a clear description for the 'search' parameter ('Name of a planet in Star Wars Films'), giving 100% coverage. The description's 'by name' reiterates this without adding new details, so the baseline 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 action (search) and resource (planets in Star Wars), with the parameter 'by name' adding specificity. It does not explicitly distinguish from sibling search tools like search_films or search_characters, but the resource focus on planets makes the purpose clear.
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; you would use this tool to search for Star Wars planets by name. However, it provides no explicit guidance on when to choose this over sibling tools (e.g., 'use search_characters for characters') or any exclusions, so it falls short of a 4.
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. Dates show when Glama detected each change.
4 tool updates
v1.0.0- First observed
search_characters - First observed
search_characters_byId - First observed
search_films - First observed
search_planets
TDQS
Each tool targets a distinct resource or query type: films by title, planets by name, characters by name or ID. The two character tools are clearly separated by their ID/name parameter, leaving no ambiguity.
All tools follow the verb 'search_' followed by a resource name, which is consistent. The single exception is 'search_characters_byId', which mixes camelCase for 'Id' while other names use all lowercase and underscores, a minor deviation from the pattern.
With 4 tools, the server is well-scoped for a simple search-focused API. The count is within the ideal range and each tool covers a unique, necessary operation.
The server covers three core resources (films, characters, planets) but omits other common Star Wars categories like starships, vehicles, and species. Additionally, films and planets only support search by name, lacking ID-based lookups that characters have, which leaves notable gaps for users needing specific items.
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
SWAPI MCP — wraps the Star Wars API (swapi.dev, free, no auth)
Star Wars API (SWAPI) as a remote MCP server: films, people, planets, species, starships, vehicles.
Search and fetch Wikidata entities, execute SPARQL queries, and resolve external identifiers.
Look up Pokémon, moves, abilities, items, natures, and type matchups from PokéAPI v2.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides access to the SWAPI Star Wars API, enabling users to query characters, planets, films, species, vehicles, and starships with automatic pagination and caching.4010MIT
- AlicenseNot gradedqualityCmaintenanceEnables LLMs and clients to search for Star Wars characters, planets, and films by exposing SWAPI as MCP tools.1MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for querying the Star Wars universe via the SWAPI API, providing access to characters, films, starships, vehicles, species, and planets.ISC
- AlicenseNot gradedqualityAmaintenanceMCP server that provides access to Star Wars data (people, films, planets, species, starships, vehicles) through tools like list, get, random, and search.3Apache 2.0
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/RamosJSouza/simple_mcp_server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server