Skip to main content
Glama
DanWahlin

Marvel MCP

by DanWahlin

마블 MCP 서버

GitHub Codespaces에서 프로젝트 열기노드 버전대장간 배지 특허

기능 • 도구 • 설정 • MCP 호스트 구성

Marvel Developer API 용 MCP 서버로, 캐릭터 및 만화 데이터와의 상호작용을 지원합니다. 이 프로젝트의 주요 목표는 MCP 서버를 사용하여 API와 상호작용하는 방법을 보여주는 것입니다.

참고 : 이 MCP 서버에서 사용하는 모든 데이터는 공식 Marvel API 에서 가져오며 Marvel의 소유입니다. 이 프로젝트는 Marvel과 어떠한 제휴 관계도 없습니다.

🔧 특징

  • 마블 캐릭터 목록 : nameStartsWith , limit , comics , series 등의 필터를 지원합니다.

  • ID로 Marvel 캐릭터 가져오기 : characterId 사용하여 모든 캐릭터에 대한 자세한 정보를 가져옵니다.

  • 특정 캐릭터의 만화 가져오기 : format , dateRange 등 다양한 필터를 적용하여 특정 캐릭터가 등장하는 만화 목록을 가져옵니다.

  • 도구 기반 MCP 통합 : 이 서버를 MCP(Model Context Protocol) 도구(VS Code, Claude 등)에 등록합니다.

  • 환경 구성 : .env 파일을 사용하여 MARVEL_PUBLIC_KEY , MARVEL_PRIVATE_KEY 및 MARVEL_API_BASE 와 같은 환경 변수를 관리합니다.

Related MCP server: MyAnimeList MCP Server

🧰 도구

1. get_characters 🔍🦸‍♂️

  • 설명 : 선택적 필터를 적용하여 Marvel 캐릭터를 가져옵니다.

  • 입력 :

    • name (선택적 문자열): 전체 캐릭터 이름.

    • nameStartsWith (선택적 문자열): 지정된 문자열로 시작하는 이름을 가진 문자입니다.

    • modifiedSince (선택적 문자열): 이 날짜 이후 수정된 문자를 필터링하기 위한 ISO 8601 날짜 문자열입니다.

    • comics , series , events , stories (선택적 문자열): 관련 엔터티로 필터링할 ID의 쉼표로 구분된 목록입니다.

    • orderBy (선택적 문자열): name 또는 -modified 등 결과를 정렬할 필드입니다.

    • limit (선택적 숫자): 반환할 결과의 최대 개수(1~100).

    • offset (선택적 숫자): 페이지 나누기를 위해 건너뛸 결과의 수입니다.

  • 반환 : 일치하는 문자가 포함된 JSON 응답입니다. 자세한 내용은 src/schemas.ts 의 CharacterDataWrapperSchema 참조하세요.

2. get_character_by_id 🆔🧑‍🎤

  • 설명 : 고유 ID로 Marvel 캐릭터를 가져옵니다.

  • 입력 :

    • characterId (숫자): 캐릭터의 고유 ID입니다.

  • 반환값 : 캐릭터 세부 정보가 포함된 JSON 응답입니다. 자세한 내용은 src/schemas.ts 의 CharacterDataWrapperSchema 참조하세요.

3. get_comics_for_character 📚🎭

  • 설명 : 특정 캐릭터가 등장하는 만화를 가져오며, 선택적인 필터도 적용 가능합니다.

  • 입력 :

    • characterId (숫자): 캐릭터의 고유 ID입니다.

    • 선택 필터:

      • format , formatType (문자열): 만화 형식(예: comic , hardcover )으로 필터링합니다.

      • noVariants , hasDigitalIssue (부울): 변형을 제외할지 또는 디지털 이슈만 포함할지 여부를 나타내는 플래그입니다.

      • dateDescriptor (문자열): thisWeek , nextWeek 와 같은 미리 정의된 날짜 범위.

      • dateRange (문자열): YYYY-MM-DD,YYYY-MM-DD 형식의 사용자 지정 날짜 범위.

      • title , titleStartsWith (문자열): 제목 또는 제목 접두사로 필터링합니다.

      • startYear , issueNumber , digitalId (숫자): 숫자 필터.

      • diamondCode , upc , isbn , ean , issn (문자열): 식별자 필터.

      • creators , series , events , stories , sharedAppearances , collaborators (문자열): 관련 엔터티 ID의 쉼표로 구분된 목록입니다.

      • orderBy (문자열): title 또는 -modified 등 결과를 정렬할 필드입니다.

      • limit , offset (숫자): 페이지 번호 옵션.

  • 반환값 : 지정된 캐릭터가 등장하는 만화를 JSON으로 반환합니다. 자세한 내용은 src/schemas.ts 의 ComicDataWrapperSchema 참조하세요.

4. get_comics 📖🕵️‍♂️

  • 설명 : 선택적 필터를 적용한 Marvel 만화 목록을 가져옵니다.

  • 입력 :

    • format (선택적 문자열): 문제 형식(예: comic , digital comic , hardcover )으로 필터링합니다.

    • formatType (선택적 문자열): 이슈 포맷 유형( comic 또는 collection )으로 필터링합니다.

    • noVariants (선택적 부울): 결과 집합에서 변형(대체 표지, 2차 인쇄, 감독판 등)을 제외합니다.

    • dateDescriptor (선택적 문자열): 미리 정의된 날짜 범위( lastWeek , thisWeek , nextWeek , thisMonth ) 내의 만화를 반환합니다.

    • dateRange (선택 문자열): 사용자 지정 날짜 범위 내의 만화를 반환합니다. 날짜는 YYYY-MM-DD,YYYY-MM-DD 형식으로 지정해야 합니다.

    • title (선택적 문자열): 제목이 입력과 일치하는 시리즈의 이슈만 반환합니다.

    • titleStartsWith (선택적 문자열): 제목이 입력으로 시작하는 시리즈의 문제만 반환합니다.

    • startYear (선택적 숫자): 입력과 일치하는 시작 연도를 가진 시리즈의 문제만 반환합니다.

    • issueNumber (선택적 숫자): 입력과 일치하는 이슈 번호가 있는 시리즈의 이슈만 반환합니다.

    • diamondCode , digitalId , upc , isbn , ean , issn (선택 문자열): 다양한 식별자로 필터링합니다.

    • hasDigitalIssue (선택적 부울): 디지털로 제공되는 결과만 포함합니다.

    • modifiedSince (선택적 문자열): 지정된 날짜 이후에 수정된 만화만 반환합니다(ISO 8601 형식).

    • creators , characters , series , events , stories , sharedAppearances , collaborators (선택적 문자열): 관련 엔터티로 필터링할 ID의 쉼표로 구분된 목록입니다.

    • orderBy (선택 문자열): 결과 집합을 필드별로 정렬합니다. 내림차순으로 정렬하려면 값에 "-"를 추가합니다(예: title , -modified ).

    • limit (선택적 숫자): 결과 집합을 지정된 리소스 수로 제한합니다(기본값: 20, 최대값: 100).

    • offset (선택적 숫자): 결과 집합에서 지정된 수의 리소스를 건너뜁니다.

  • 반환 : 일치하는 만화가 포함된 JSON 응답입니다. 자세한 내용은 src/schemas.ts 의 ComicDataWrapperSchema 참조하세요.

5. get_comic_by_id 🆔📘

  • 설명 : 고유 ID로 Marvel 만화책 한 권을 가져옵니다.

  • 입력 :

    • comicId (숫자): 만화의 고유 ID입니다.

  • 반환값 : 만화 세부 정보가 포함된 JSON 응답입니다. 자세한 내용은 src/schemas.ts 의 ComicDataWrapperSchema 참조하세요.

6. get_characters_for_comic 🦸‍♀️📖

  • 설명 : 특정 만화에 등장하는 Marvel 캐릭터를 가져옵니다.

  • 입력 :

    • comicId (숫자): 만화의 고유 ID입니다.

    • 선택 필터:

      • name (선택적 문자열): 전체 이름으로 문자를 필터링합니다.

      • nameStartsWith (선택적 문자열): 지정된 문자열로 시작하는 이름의 문자를 필터링합니다.

      • modifiedSince (선택적 문자열): 이 날짜 이후 수정된 문자를 필터링하기 위한 ISO 8601 날짜 문자열입니다.

      • series , events , stories (선택적 문자열): 필터링 기준으로 사용할 관련 엔터티 ID의 쉼표로 구분된 목록입니다.

      • orderBy (선택적 문자열): name 또는 -modified 등 결과를 정렬할 필드입니다.

      • limit (선택적 숫자): 반환할 결과의 최대 개수(1~100).

      • offset (선택적 숫자): 페이지 나누기를 위해 건너뛸 결과의 수입니다.

  • 반환값 : 지정된 만화에 등장하는 캐릭터가 포함된 JSON 응답입니다. 자세한 내용은 src/schemas.ts 의 CharacterDataWrapperSchema 참조하세요.

🛠️ 설정

Marvel Developer API 계정에 가입하고 공개 및 비공개 API 키를 받으세요.

MCP 호스트에서 직접 실행하려면 Claude Desktop과 함께 사용 또는 GitHub Copilot과 함께 사용 섹션으로 이동하세요.

MCP Inspector를 사용하여 로컬로 서버 실행

서버를 테스트하기 위해 MCP Inspector를 로컬로 실행하려면 다음 단계를 따르세요.

  1. 이 저장소를 복제하세요:

    지엑스피1

  2. .env.template``.env 로 이름을 바꾸세요.

  3. Marvel API 공개 키와 개인 키를 .env 파일에 추가합니다.

    MARVEL_PUBLIC_KEY=YOUR_PUBLIC_KEY
    MARVEL_PRIVATE_KEY=YOUR_PRIVATE_KEY
    MARVEL_API_BASE=https://gateway.marvel.com/v1/public
  4. 필요한 종속성을 설치하고 프로젝트를 빌드합니다.

    npm install
    npm run build
  5. (선택 사항) MCP Inspector를 사용하여 서버를 시험해 보려면 다음 명령을 실행하세요.

    # Start the MCP Inspector
    npx @modelcontextprotocol/inspector node build/index.js

    브라우저 콘솔에 표시된 MCP Inspector URL로 이동합니다. Arguments``dist/index.js 로 변경하고 Connect 선택합니다. List Tools 선택하면 사용 가능한 도구가 표시됩니다.

MCP 호스트 구성

Claude Desktop과 함께 사용

claude_desktop_config.json 에 다음을 추가하세요.

{
  "mcpServers": {
    "marvel-mcp": {
      "type": "stdio",
      "command": "npx",
      // "command": "node",
      "args": [
        "-y",
        "@codewithdan/marvel-mcp"
        // "/PATH/TO/marvel-mcp/dist/index.js"
      ],
      "env": {
        "MARVEL_PUBLIC_KEY": "YOUR_PUBLIC_KEY",
        "MARVEL_PRIVATE_KEY": "YOUR_PRIVATE_KEY",
        "MARVEL_API_BASE": "https://gateway.marvel.com/v1/public"
      }
    }
  }
}

Smithery를 통해 설치

Smithery를 통해 Claude Desktop에 Marvel MCP Server를 자동으로 설치하려면:

npx -y @smithery/cli install @DanWahlin/marvel-mcp --client claude

GitHub Copilot과 함께 사용

참고 : Claude Desktop에서 MCP 서버를 이미 활성화한 경우 VS Code 설정에 chat.mcp.discovery.enabled: true 추가하면 기존 MCP 서버 목록을 검색합니다.

settings.json 파일에 다음을 추가합니다(특정 저장소에 필요한 경우 .vscode/mcp.json 파일에도 추가할 수 있습니다).

"mcp": {
  "inputs": [
      {
          "type": "promptString",
          "id": "marvel-public-api-key",
          "description": "Marvel public API Key",
          "password": true
      },
      {
          "type": "promptString",
          "id": "marvel-private-api-key",
          "description": "Marvel private API Key",
          "password": true
      }
  ],
  "servers": {
    "marvel-mcp": {
        "command": "npx",
        // "command": "node",
        "args": [
            "-y",
            "@codewithdan/marvel-mcp"
            // "/PATH/TO/marvel-mcp/dist/index.js"
        ],
        "env": {
            "MARVEL_PUBLIC_KEY": "${input:marvel-public-api-key}",
            "MARVEL_PRIVATE_KEY": "${input:marvel-private-api-key}",
            "MARVEL_API_BASE": "https://gateway.marvel.com/v1/public"
        }
    }
  }
}

GitHub Copilot의 도구 사용

  1. 이제 mcp 서버를 검색할 수 있으므로 GitHub Copilot을 열고 Agent 모드( Ask 또는 Edits 아님)를 선택합니다.

  2. Copilot 채팅 텍스트 필드에서 "새로 고침" 버튼을 선택하여 서버 목록을 새로 고칩니다.

  3. 이 저장소의 도구를 포함하여 가능한 모든 도구를 보려면 "🛠️" 버튼을 선택하세요.

  4. 예를 들어, 다음과 같이 도구 중 하나를 자연스럽게 불러올 질문을 채팅에 입력하세요.

    List 10 marvel characters.
    
    What comics is Wolverine in?
    
    Give me details about villains in the Marvel universe.
    
    Which characters appear in the Avengers comics?
    
    What characters are in the Hedge Knight II: Sworn Sword (2007) comic?
    
    List 10 characters from Ant-Man comics.

    참고 : "죄송합니다. 응답은 Responsible AI Service에서 필터링되었습니다."라는 메시지가 표시되면 다시 실행하거나 메시지를 다시 작성해 보세요.

Available Tools

7 tools
generate_comics_htmlC

Create an HTML page displaying Marvel comics with their images

ParametersJSON Schema
NameRequiredDescriptionDefault
charactersNo
collaboratorsNo
creatorsNo
dateDescriptorNo
dateRangeNo
diamondCodeNo
digitalIdNo
eanNo
eventsNo
formatNo
formatTypeNo
hasDigitalIssueNo
isbnNo
issnNo
issueNumberNo
limitNoLimit results (max 100)
modifiedSinceNo
noVariantsNo
offsetNo
orderByNo
seriesNo
sharedAppearancesNo
startYearNo
storiesNo
titleNoCustom title for the HTML page
titleStartsWithNo
upcNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Create an HTML page' implies a write/generation operation, it doesn't specify whether this requires authentication, where the HTML is saved/displayed, whether it's a one-time generation or overwrites existing files, or what happens if parameters are invalid. For a tool with 27 parameters and no annotation coverage, this is insufficient.

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 sentence that efficiently communicates the core purpose. There's no wasted language or unnecessary elaboration. It's appropriately sized for what it does convey.

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?

For a tool with 27 parameters, no annotations, no output schema, and minimal schema descriptions, the description is inadequate. It doesn't explain what the HTML output looks like, where it goes, how comics are selected/filtered, or provide any guidance on the numerous parameters. The description fails to address the complexity of the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 7% (only 'limit' and 'title' have descriptions), leaving 25 parameters undocumented in the schema. The description mentions 'Marvel comics' which provides some context for the parameters, but doesn't explain what any specific parameters mean or how they filter the comics. It doesn't compensate for the poor schema coverage.

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's purpose: 'Create an HTML page displaying Marvel comics with their images.' It specifies the action (create), resource (HTML page), and content (Marvel comics with images). However, it doesn't distinguish this from sibling tools like 'get_comics' which likely retrieve raw data rather than generate HTML output.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_comics' or explain that this tool is for presentation/formatting purposes rather than data retrieval. There's no context about prerequisites or when this tool would be preferred.

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

get_character_by_idC

Fetch a Marvel character by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
characterIdYes

TDQS

C2.8/5.0
Behavior2/5

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 states the tool fetches data, implying a read-only operation, but doesn't specify whether it requires authentication, has rate limits, returns errors for invalid IDs, or provides pagination details. For a tool with zero annotation coverage, this is insufficient behavioral context.

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 sentence with zero wasted words. It's appropriately sized for a simple lookup tool and front-loaded with the essential action and resource. Every word earns its place, making it highly concise and well-structured.

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?

Given the tool's simplicity (1 parameter, no output schema, no annotations), the description is incomplete. It doesn't explain what data is returned (e.g., character details, comics list), error handling, or usage context relative to siblings. For a tool in a Marvel API context with multiple related tools, more guidance is needed to be fully helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 1 parameter with 0% description coverage, so the schema provides no semantic information. The description mentions 'by ID' but doesn't explain what a character ID is (e.g., numeric identifier, format, source). It adds minimal value beyond the schema, failing to compensate for the coverage gap.

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 action ('fetch') and resource ('Marvel character by ID'), making the purpose understandable. It distinguishes from siblings like 'get_characters' (which likely fetches multiple characters) by specifying the single-ID lookup. However, it doesn't explicitly mention what data is returned about the character, which prevents a perfect score.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over 'get_characters' (e.g., for a specific character vs. listing), nor does it address prerequisites like needing a valid character ID. This leaves the agent without contextual usage instructions.

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

get_charactersC

Fetch Marvel characters with optional filters

ParametersJSON Schema
NameRequiredDescriptionDefault
comicsNo
eventsNo
limitNo
modifiedSinceNo
nameNo
nameStartsWithNo
offsetNo
orderByNo
seriesNo
storiesNo

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states 'Fetch' which implies a read operation, but doesn't disclose behavioral traits such as rate limits, authentication needs, pagination behavior (implied by limit/offset but not explained), or what happens with invalid filters. For a tool with 10 parameters and no annotations, this is a significant gap.

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, efficient sentence that front-loads the core purpose. Every word earns its place, with no redundancy or unnecessary elaboration. It's appropriately sized for a basic tool description.

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?

Given the complexity (10 parameters, 0% schema coverage, no annotations, no output schema), the description is inadequate. It doesn't explain parameter meanings, return values, error handling, or usage context. For a filtering tool with many options, more detail is needed to be complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It only mentions 'optional filters' generically without explaining any of the 10 parameters (e.g., what 'comics', 'events', 'orderBy' mean). This adds minimal value beyond the schema, failing to address the coverage gap.

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 action ('Fetch') and resource ('Marvel characters'), and mentions optional filtering. However, it doesn't explicitly differentiate from sibling tools like 'get_character_by_id' or 'get_characters_for_comic', which would require a 5. The purpose is clear but lacks sibling distinction.

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?

The description provides no guidance on when to use this tool versus alternatives like 'get_character_by_id' or 'get_characters_for_comic'. It mentions optional filters but doesn't specify scenarios or exclusions. This leaves the agent without clear usage context.

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

get_characters_for_comicC

Fetch Marvel characters for a given comic

ParametersJSON Schema
NameRequiredDescriptionDefault
comicIdYes
eventsNo
limitNo
modifiedSinceNo
nameNo
nameStartsWithNo
offsetNo
orderByNo
seriesNo
storiesNo

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states 'Fetch' (implying a read operation) but doesn't disclose behavioral traits like pagination (offset/limit parameters), rate limits, authentication needs, error conditions, or response format. The description adds minimal context beyond the basic action.

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?

Extremely concise single sentence with zero waste. It's front-loaded with the core purpose and efficiently communicates the essential action and target.

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?

Given the complexity (10 parameters, 1 required), lack of annotations, and no output schema, the description is incomplete. It doesn't address parameter usage, behavioral expectations, or return values, making it inadequate for a tool with this many undocumented parameters and no structured guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate but doesn't. It mentions 'for a given comic' which hints at the required 'comicId', but doesn't explain the purpose of the other 9 parameters (e.g., 'events', 'modifiedSince', 'orderBy'). This leaves most parameters undocumented in both schema and description.

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 action ('Fetch') and target resource ('Marvel characters for a given comic'), distinguishing it from siblings like 'get_characters' (general character list) and 'get_comics_for_character' (reverse relationship). However, it doesn't specify the exact scope (e.g., all characters appearing in that comic vs. filtered subset).

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 explicit guidance on when to use this tool versus alternatives like 'get_characters' or 'get_character_by_id'. The description implies usage for comic-specific character queries but doesn't mention prerequisites, limitations, or comparative scenarios with sibling tools.

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

get_comic_by_idC

Fetch a single Marvel comic by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
comicIdYes

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 carries the full burden of behavioral disclosure. It states the tool fetches data, implying a read-only operation, but doesn't address critical aspects like authentication needs, rate limits, error handling, or what happens with invalid IDs. This leaves significant gaps in understanding how the tool behaves beyond its basic function.

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 extremely concise—a single sentence with no wasted words—and front-loads the key information ('Fetch a single Marvel comic by ID'). Every word earns its place, making it easy to parse quickly.

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?

Given the tool's simplicity (one parameter, no output schema) and lack of annotations, the description is incomplete. It doesn't cover behavioral traits (e.g., error cases), parameter details, or output expectations, leaving the agent with insufficient context to use the tool effectively beyond its basic purpose.

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?

The schema description coverage is 0%, but the description adds minimal semantic context by specifying that the parameter 'comicId' is used to fetch a single comic. However, it doesn't clarify the format (e.g., numeric ID), valid ranges, or examples, which is insufficient to fully compensate for the lack of schema documentation. The baseline is adjusted upward due to only one parameter.

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 action ('Fetch') and resource ('a single Marvel comic by ID'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'get_comics' (which likely fetches multiple comics), leaving room for minor ambiguity about when to choose this specific tool.

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?

The description provides no guidance on when to use this tool versus alternatives like 'get_comics' or 'get_comics_for_character'. It lacks context about prerequisites (e.g., needing a valid comic ID) or exclusions, leaving the agent to infer usage from the tool name alone.

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

get_comicsC

Fetches lists of Marvel comics with optional filters

ParametersJSON Schema
NameRequiredDescriptionDefault
charactersNo
collaboratorsNo
creatorsNo
dateDescriptorNo
dateRangeNo
diamondCodeNo
digitalIdNo
eanNo
eventsNo
formatNo
formatTypeNo
hasDigitalIssueNo
isbnNo
issnNo
issueNumberNo
limitNo
modifiedSinceNo
noVariantsNo
offsetNo
orderByNo
seriesNo
sharedAppearancesNo
startYearNo
storiesNo
titleNo
titleStartsWithNo
upcNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states it 'fetches' with 'optional filters.' It doesn't disclose whether this is a read-only operation, pagination behavior (despite limit/offset parameters), rate limits, authentication requirements, error conditions, or what the return format looks like (no output schema).

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, efficient sentence that front-loads the core purpose. There's no wasted language or redundancy, making it appropriately concise for a tool with many parameters.

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?

For a complex tool with 27 parameters, no annotations, and no output schema, the description is severely incomplete. It doesn't explain the tool's behavior, parameter usage, return format, or how it relates to sibling tools, leaving critical gaps for an agent to understand and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 27 parameters and 0% schema description coverage, the description provides no parameter semantics beyond 'optional filters.' It doesn't explain what any parameter does, their formats (e.g., dateRange format), relationships, or default values. The description fails to compensate for the massive schema coverage gap.

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 action ('fetches lists') and resource ('Marvel comics') with the scope of optional filtering. It distinguishes from siblings like 'get_comic_by_id' (single comic) and 'get_comics_for_character' (character-specific), but doesn't explicitly differentiate from other list tools like 'get_characters'.

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?

The description provides no guidance on when to use this tool versus alternatives like 'get_comic_by_id' for single comics or 'get_comics_for_character' for character-specific comics. It mentions optional filters but doesn't explain when specific filters are appropriate or what the default behavior is.

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

get_comics_for_characterC

Fetch Marvel comics filtered by character ID and optional filters

ParametersJSON Schema
NameRequiredDescriptionDefault
characterIdYes
collaboratorsNo
creatorsNo
dateDescriptorNo
dateRangeNo
diamondCodeNo
digitalIdNo
eanNo
eventsNo
formatNo
formatTypeNo
hasDigitalIssueNo
isbnNo
issnNo
issueNumberNo
limitNo
modifiedSinceNo
noVariantsNo
offsetNo
orderByNo
seriesNo
sharedAppearancesNo
startYearNo
storiesNo
titleNo
titleStartsWithNo
upcNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but lacks behavioral details. It doesn't disclose whether this is a read-only operation, potential rate limits, authentication needs, pagination behavior (implied by 'limit' and 'offset' parameters but not explained), or what the response format looks like (no output schema). The description only states the basic filtering capability.

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, efficient sentence that front-loads the core purpose. Every word earns its place—no redundancy or fluff. It's appropriately sized for a tool with many parameters but could benefit from additional explanatory sentences.

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?

Given the high complexity (27 parameters, 0% schema coverage, no output schema, no annotations), the description is severely incomplete. It doesn't explain parameter usage, response format, error conditions, or behavioral constraints. For a tool with extensive filtering options, this minimal description leaves the agent guessing about implementation details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 27 parameters and 0% schema description coverage, the description fails to compensate for the massive documentation gap. It mentions 'optional filters' generically but doesn't explain any specific parameters (e.g., what 'dateDescriptor' or 'formatType' mean, how 'collaborators' should be formatted). The description adds minimal value beyond the schema's structure.

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 action ('fetch'), resource ('Marvel comics'), and primary filter ('by character ID'). It distinguishes from siblings like 'get_comics' (which likely lacks character filtering) and 'get_comic_by_id' (which fetches a single comic). However, it doesn't explicitly differentiate from 'get_characters_for_comic' (which has an inverse relationship).

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?

The description mentions 'optional filters' but provides no guidance on when to use this tool versus alternatives. It doesn't specify when to choose this over 'get_comics' (for broader searches) or 'get_comic_by_id' (for single comic details), nor does it mention prerequisites like needing a character ID from 'get_character_by_id' first.

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. 7 tool updatesv1.0.0
    • First observedgenerate_comics_html
    • First observedget_character_by_id
    • First observedget_characters
    • First observedget_characters_for_comic
    • First observedget_comic_by_id
    • First observedget_comics
    • First observedget_comics_for_character

TDQS

B3.4/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct purpose targeting specific resources and actions: character vs. comic operations, with clear separation between fetching by ID, listing with filters, and cross-referencing relationships. No ambiguity exists between tools like get_characters and get_comics, or between get_character_by_id and get_characters.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with snake_case, using 'get_' for fetch operations and 'generate_' for creation. The naming is predictable and readable, with clear patterns like get_character_by_id, get_characters, get_comics, and get_comics_for_character.

Tool Count5/5

Seven tools is well-scoped for a Marvel API server, covering core operations for characters and comics without bloat. Each tool earns its place by providing distinct functionality, from basic fetches to cross-referencing and HTML generation, making it efficient for agent use.

Completeness4/5

The tool set covers essential read operations for characters and comics comprehensively, including filtering, cross-references, and HTML generation. A minor gap exists in lacking update/delete operations, but this is typical for an API wrapper focused on data retrieval, and agents can work around it for the domain.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An Azure Functions-based MCP server that enables interaction with Marvel characters and comics data through the official Marvel Developer API.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for querying the Star Wars universe via the SWAPI API, providing access to characters, films, starships, vehicles, species, and planets.
    ISC