Skip to main content
Glama
Ramakrishna-Gedala

MCP Chess Server

MCP Chess Server

Overview

This repository provides a Model Context Protocol (MCP) server that exposes Chess.com data through Anthropic's FastMCP framework. The server runs over stdio and can be launched locally or directly from Claude Desktop.

Related MCP server: Chess.com MCP Server

Capabilities

  • get_chess_player_profile: Returns the public profile for a Chess.com username by calling https://api.chess.com/pub/player/{username} via requests.

  • get_chess_player_stats: Retrieves rating history and performance metrics from https://api.chess.com/pub/player/{username}/stats.

Both tools are registered with FastMCP('Chess.com') in chess.server and are available to any MCP-compatible client once the server is running.

Prerequisites

  • Python 3.13 or newer

  • Git

  • uv for dependency management

  • Claude Desktop (or another MCP client)

Setup

1. Clone the repository

git clone <your-repo-url>
cd mcp-build-chess

2. Install dependencies in editable mode

uv pip install -e .

Tip: create an isolated environment with uv venv .venv and activate it before installing.

3. Validate the server locally

uv run python -m chess.server

The server will start and wait on stdio. Use Ctrl+C to stop it once you've confirmed it launches without errors.

Claude Desktop Integration

Update claude_desktop_config.json so Claude Desktop can launch the server from this repository:

claude coinfiguration form local

{
  "mcpServers": {
    "Chess_Server": {
      "command": "uv",
      "args": [
        "--directory",
        "W:\\ITversity\\MCP Claude\\code\\mcp-build-chess\\src\\chess",
        "run",
        "chess"
      ]
    }
  }
}

##claude configuration from git repo

{
  "mcpServers": {
    "Chess_Server_git": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/Ramakrishna-Gedala/mcp_chess.git@main",
        "chess-server"
      ]
    }
  }
}

Replace the cwd value with the absolute path to your cloned repository. macOS and Linux users should specify their own path syntax (for example, /Users/you/src/mcp-build-chess). After saving the config, restart Claude Desktop so it picks up the new server configuration.

Available Tools

2 tools
get_chess_player_profileB

Get the public profile for a Chess.com player by username.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. The word 'public' implies read-only access and no authentication, which is useful behavioral context. However, it does not disclose rate limits, error behavior, or response shape, so transparency is only 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 concise sentence with no wasted words. The action and resource are front-loaded, making it easy to parse quickly.

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 one-parameter read-only lookup, the description is adequate for invocation. However, with no output schema or sibling guidance, an agent would not know what the profile contains or why to choose this over get_chess_player_stats, leaving notable gaps.

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 schema has 0% description coverage, and the only parameter, 'username', is documented only by its name and type. The description's phrase 'by username' confirms the parameter's role but adds no format, validation, or additional meaning beyond what the schema already shows.

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 ('Get') and the exact resource ('public profile for a Chess.com player') with the lookup mechanism ('by username'). It is specific and unambiguous, though it does not explicitly differentiate from the sibling tool get_chess_player_stats beyond the resource type itself.

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 provided about when to use this tool versus get_chess_player_stats. There are no conditions, exclusions, or alternative scenarios mentioned, leaving the agent to infer selection purely from the tool name.

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

get_chess_player_statsB

Get the stats for a Chess.com player by username.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes

TDQS

B3.1/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 only says 'get' which implies a read operation, but it gives no detail about required authentication, rate limits, response behavior, or any side effects. This is thin for a remote API tool.

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 economical sentence, with the key action and resource front-loaded. There is no unnecessary repetition or padding.

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 single-parameter read tool with no output schema, the description provides the minimum needed to understand the core call. However, it lacks any context about what 'stats' include, whether there are any prerequisites, or how this differs from the sibling tool, leaving some gaps for a fully informed decision.

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 description confirms that the single parameter 'username' is the player's Chess.com username, adding a small amount of meaning beyond the schema's bare property title. However, with 0% schema description coverage, it does not elaborate on expected format, case sensitivity, or potential validation, so the added value is limited.

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 states a specific verb ('get'), resource ('stats'), and scope ('by username'), making the function clear. It is distinguishable from the sibling tool get_chess_player_profile because 'stats' and 'profile' are different resources, though the sibling is not explicitly referenced.

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 on when to use this tool versus get_chess_player_profile, and there are no exclusions or alternative routing. The only usage cue is the implicit difference between 'stats' and 'profile', which is left for the agent to infer.

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. 2 tool updatesv0.1.0
    • First observedget_chess_player_profile
    • First observedget_chess_player_stats

TDQS

B3.1/5.0

Scored across 2 tools

Disambiguation4/5

The two tools have distinct purposes: one retrieves a player's profile (likely general info), and the other retrieves stats (likely performance data). While both target the same resource (a Chess.com player), the actions are clearly differentiated, making misselection unlikely. However, the overlap in domain could cause minor confusion if an agent needs both types of data, but descriptions help clarify.

Naming Consistency5/5

Both tools follow a consistent verb_noun pattern with 'get_chess_player_' as a prefix, followed by 'profile' or 'stats'. This predictable naming scheme makes it easy for agents to understand and navigate the tool set without ambiguity or mixed conventions.

Tool Count3/5

With only 2 tools, the server feels thin for a chess domain, as it lacks operations like creating games, making moves, or accessing game history. While it might be narrowly scoped to player data retrieval, the limited count suggests incomplete coverage for typical chess-related tasks, bordering on under-scoped.

Completeness2/5

The tool set is severely incomplete for a chess server, as it only provides read-only access to player data with no ability to interact with games, boards, or other chess elements. There are significant gaps in CRUD/lifecycle coverage, such as missing create, update, or delete operations, which will likely cause agent failures in broader chess-related workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Provides Chess.com player data integration, enabling AI assistants to fetch real-time chess player profiles and comprehensive statistics including ratings, game counts, and performance metrics from Chess.com's public API.
    2
    MIT
  • F
    license
    B
    quality
    D
    maintenance
    Provides tools to interact with the Chess.com Public API for fetching real-time player profiles and detailed game statistics. It enables LLMs to access information like player ratings, win/loss records, and current online status.
    2
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to explore player profiles, ratings, game archives, leaderboards, clubs, and puzzles via the Chess.com API.
    1
    MIT
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides access to Chess.com's public API, allowing AI assistants to fetch player information and statistics.
    -