Skip to main content
Glama
karkir0003

MyPlayground

by karkir0003

levels-fyi-mcp

levels.fyi에서 보상 데이터를 조회하기 위한 MCP 서버입니다.

이 서버가 제공하는 기능

서버 이름: MyPlayground

도구:

  • calculate_addition(a: int, b: int) -> int

  • get_mock_weather(city: str) -> str (모의 날씨, 실제 API 데이터 아님)

  • generate_username(base_name: str, add_numbers: bool = true) -> str

Related MCP server: FastMCP Demo Server

최종 사용자 설치 (Cursor에서 사용)

이 섹션은 Cursor에서 MCP 서버를 설치하고 실행하려는 사용자 전용입니다.

요구 사항

  • Python >=3.11

  • uv

Cursor MCP 구성 (권장)

Cursor가 프로젝트 환경을 직접 사용하도록 uv run을 사용하세요.

{
  "mcpServers": {
    "user-MyPlayground": {
      "command": "uv",
      "args": ["run", "python", "main.py"],
      "cwd": "/absolute/path/to/levels-fyi-mcp"
    }
  }
}

사용 시작하기

  1. Cursor MCP 설정을 열고 위의 서버 구성을 추가합니다.

  2. cwd가 이 저장소의 로컬 복제본을 가리키는지 확인합니다.

  3. Cursor에서 MCP 서버를 시작/재로드합니다.

  4. calculate_addition, get_mock_weather, generate_username과 같은 도구를 호출합니다.

선택 사항: 직접 fastmcp 명령

Cursor에서 command: "fastmcp"를 선호하는 경우, 전역 도구로 설치하세요:

uv tool install fastmcp

Cursor가 fastmcp를 찾을 수 없는 경우, 위에서 권장하는 uv run 구성을 사용하세요.

개발자 설정

이 섹션은 코드 변경 작업을 하는 기여자들을 위한 것입니다.

종속성 설치

프로젝트 루트에서:

uv sync

로컬에서 서버 실행

uv run python main.py

종속성 추가 또는 업데이트

uv add <package>
uv sync

빠른 환경 확인

uv run python -c "import fastmcp; print('fastmcp ok')"

프로젝트 구조

.
├── main.py
├── pyproject.toml
└── README.md

문제 해결

Failed to spawn: fastmcp (os error 2)

원인: Cursor가 fastmcp 실행 파일을 찾을 수 없습니다.

해결 방법:

  1. uv run python main.py를 사용하는 Cursor 구성을 선호하거나,

  2. uv tool install fastmcp로 전역 도구를 설치하고 PATH에 uv 도구 bin(일반적으로 ~/.local/bin)이 포함되어 있는지 확인합니다.

도구 인수 유형 오류

  • generate_username.add_numbers는 숫자나 문자열이 아닌 불리언(true/false)이어야 합니다.

참고 사항

  • get_mock_weather는 데모를 위해 무작위 모의 데이터를 반환합니다.

  • 도구 로그는 main.py에서 출력되며 서버 출력에 나타납니다.

Available Tools

2 tools
get_level_mappingA

REQUIRED: Call this tool FIRST to find the company's specific level names (e.g., '63', 'L5', 'E4') versus the industry 'Standard' ladder. 'role' must be the full name: 'Software Engineer', 'Product Manager', etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
company_nameYes
roleNoSoftware Engineer

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/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 discloses that the tool should be called first (a behavioral trait) but does not mention side effects, permissions, rate limits, or output structure beyond 'find level names'. The lack of behavioral details reduces transparency.

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?

Two sentences with no fluff. The first sentence front-loads the requirement and purpose. The second gives a concrete parameter rule. Every word earns its place.

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

Completeness4/5

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

Given the presence of an output schema (though not shown), the description adequately covers the tool's role as a prerequisite mapping function. It explains the core action and parameter requirements, sufficient for an agent to use it correctly in context with its sibling.

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

Parameters4/5

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

Schema coverage is 0%, so description must compensate. It adds meaning for 'role' (must be full name, gives examples) and implies 'company_name' as the company. This provides significant guidance beyond the raw schema, though company_name is not explicitly described.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/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: 'find the company's specific level names versus the industry Standard ladder.' It uses a specific verb 'find' and resource 'level mapping', distinguishing it from the sibling tool 'get_recent_offers'.

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

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Call this tool FIRST' and specifies that 'role must be the full name'. It implies a prerequisite relationship to other tools, but does not explicitly state when not to use or provide alternatives.

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

get_recent_offersB

Fetch the most recent specific salary offers for a given role to gauge current market trends. Example: company_name='Amazon', role='Software Engineer', level='SDE II'

Location must be a single city name (e.g., 'Seattle'). If the city is ambiguous, the most major tech hub will be chosen by default

ParametersJSON Schema
NameRequiredDescriptionDefault
company_nameYes
roleYes
levelYes
locationNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/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 mentions location ambiguity handling but fails to disclose any other behavioral traits like data freshness, number of offers returned, or authorization needs.

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 two concise sentences plus an example, with no redundant information. It is front-loaded and gets straight to the point.

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?

Despite having an output schema, the description lacks important context such as how 'recent' is defined, the number of offers fetched, and any default behavior for the optional location parameter.

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%, yet the description only adds meaning for 'location' (single city name) and indirectly for the other parameters through the example. It provides minimal additional semantics beyond the parameter names.

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 verb 'Fetch' and the resource 'specific salary offers' with a purpose 'to gauge current market trends'. It distinguishes from the sibling 'get_level_mapping' by focusing on offers for a given role.

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?

The description provides an example and a note on location format and ambiguity resolution, but does not explicitly state when to use this tool versus alternatives or any prerequisites.

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. 5 tool updatesv1.0.0
    • Removedcalculate_addition
    • Removedgenerate_username
    • Addedget_level_mapping
    • Removedget_mock_weather
    • Addedget_recent_offers
  2. 3 tool updatesv0.1.0
    • First observedcalculate_addition
    • First observedgenerate_username
    • First observedget_mock_weather

TDQS

A3.5/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have completely distinct purposes: one maps company-specific levels to standard ladders, the other fetches recent salary offers. No overlap in functionality.

Naming Consistency5/5

Both tools use a consistent verb_noun pattern in snake_case: get_level_mapping and get_recent_offers, following the same style.

Tool Count3/5

With only 2 tools, the server feels underdeveloped for its likely domain (compensation research). More tools like search by company or role would be expected, but the set is not extreme.

Completeness3/5

The surface covers level mapping and recent offers but lacks tools for discovering companies, roles, or historical salary trends. Some standard operations are missing, but core use cases are addressed.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    A simple demonstration project for the Model Control Protocol (MCP) server that provides tools for AI assistants to fetch news articles, perform calculations, retrieve weather data, and generate personalized greetings.
    3
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides utility tools including random jokes, current weather, and name-based age prediction.
    3
    MIT