Skip to main content
Glama
SilverHi

DDNet MCP Server

by SilverHi

DDNet MCP Server

一个基于FastMCP的Model Context Protocol服务器,提供DDNet游戏进程管理和配置文件操作功能。

功能

  • 游戏进程管理:获取DDNet游戏状态、启动和关闭DDNet游戏

  • 配置文件操作:检查按键绑定、添加和删除按键绑定

Related MCP server: MCP Configurator Server

安装

使用uv安装

uv install ddnet-mcpserver

使用方法

使用uv运行

uv run -m ddnet_mcpserver

在MCP客户端中配置

在您的MCP客户端配置文件中添加以下配置:

{
  "mcpServers": {
    "ddnet": {
      "command": "uvx",
      "args": ["ddnet-mcpserver"],
      "env": {},
      "disabled": false
    }
  }
}

可用工具

  • get_ddnet_game_status(): 获取DDNet进程状态

  • stop_ddnet_game(): 关闭DDNet进程

  • start_ddnet_game(): 启动DDNet进程

  • check_bind(bindkey: str): 检查按键是否被占用

  • add_bind(bindkey: str, bindvalue: str): 增加按键绑定

  • delete_bind(bindkey: str): 删除按键绑定

开发

设置开发环境

git clone https://github.com/silverhi/ddnet-mcpserver.git
cd ddnet-mcpserver
uv pip install -e .

本地开发指南

使用uv运行服务器

uv run -m ddnet_mcpserver

使用MCP Inspector调试

npx -y @modelcontextprotocol/inspector uv run -m ddnet_mcpserver

安装Node.js(Windows环境)

winget install jasongin.nvs
nvs add lts
nvs use lts

使用pre-commit进行代码检查

uv pip install pre-commit
pre-commit install

构建和发布包

python -m build
twine upload dist/*

许可证

MIT

Available Tools

5 tools
add_bindD

增加bind

ParametersJSON Schema
NameRequiredDescriptionDefault
bindkeyYes
bindvalueYes

TDQS

D1.3/5.0
Behavior1/5

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

No annotations exist and the description lacks any behavioral context such as side effects, permissions, or return behavior, leaving the agent uninformed about the tool's impact.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short but this is under-specification rather than conciseness; it fails to convey necessary information that would justify its brevity.

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

Completeness1/5

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

Given the low schema coverage, no output schema, and lack of annotations, the description is completely inadequate for an agent to understand and use the tool effectively.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain what 'bindkey' and 'bindvalue' represent, providing no additional meaning beyond the schema.

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

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description '增加bind' is a tautology with the tool name 'add_bind' and does not specify the resource or context, offering no meaningful differentiation from siblings like 'check_bind' or 'delete_bind'.

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 usage guidelines provided; no information on 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.

check_bindC

检查按键是否被占用

ParametersJSON Schema
NameRequiredDescriptionDefault
bindkeyYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral traits. It implies a read-only operation ('check'), but does not explicitly state that no modifications occur, what happens if the key is occupied, or any side effects. The absence of such details is a gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no unnecessary words. It is concise, but the brevity sacrifices necessary detail, making it slightly less effective.

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 lack of output schema and annotations, the description should explain return values or outcomes. It only describes the action, not what the tool returns (e.g., boolean, message). This incompleteness significantly hinders an agent's ability to use the tool correctly.

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

Parameters1/5

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

With 0% schema description coverage, the description does not add any meaning to the single parameter 'bindkey'. It fails to explain the format, possible values, or examples, leaving the agent with no guidance on how to provide valid input.

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 checks if a key is occupied, which is a specific verb+resource. However, it does not explicitly differentiate from sibling tools like add_bind or delete_bind, but the purpose is still unambiguous.

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 on when to use this tool versus alternatives such as add_bind or delete_bind. The description lacks any context for appropriate use cases or prerequisites.

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

delete_bindD

删除bind

ParametersJSON Schema
NameRequiredDescriptionDefault
bindkeyYes

TDQS

D1.9/5.0
Behavior2/5

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

With no annotations, the description fails to disclose any behavioral traits such as irreversibility, scope of deletion, or potential side effects; it only states the action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely brief but at the expense of completeness; the single sentence is tautological and provides no useful information, making it under-specified rather than concise.

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 simple delete tool with one parameter, the description should at least clarify what 'bindkey' represents and the effect of deletion; it does neither, leaving the agent uninformed.

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

Parameters1/5

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

The parameter 'bindkey' is completely unexplained despite 0% schema coverage; the description adds no meaning beyond the raw JSON schema.

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

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description '删除bind' is a direct tautology of the tool name 'delete_bind', restating the verb and resource without adding new information.

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 on when to use this tool versus siblings like add_bind or check_bind; no context for when deletion is appropriate or what prerequisites exist.

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

get_ddnet_game_statusB

获取ddnet进程状态

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

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

No annotations present; description fails to disclose behavioral traits such as whether it is a read-only operation, side effects, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded, no redundant information. However, it may be too terse for completeness.

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 no parameters and no output schema, the description is minimal and does not explain what the returned status includes, any edge cases, or expected behavior.

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?

Tool has zero parameters and schema coverage is 100% (vacuously). Description does not need to add parameter meaning; baseline score of 4 applies.

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?

Description clearly states the tool retrieves ddnet process status, using a specific verb and resource. It distinguishes from siblings which are about binds and friends, but could be more specific about what 'status' entails.

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 on when to use this tool vs alternatives, no prerequisites or usage context provided.

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

get_friend_listD

获取好友列表

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1.6/5.0
Behavior1/5

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

No annotations exist, and the description does not disclose behavioral traits such as whether it is a read operation, authentication requirements, or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely brief (one phrase), but it lacks informative content. Conciseness without substance is under-specification.

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

Completeness1/5

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

Given no output schema, no parameters, and no annotations, the description is critically incomplete. It does not explain what the tool returns or its behavior.

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?

There are no parameters, so the description does not need to add meaning beyond the schema. Baseline 4 applies per rules for 0 parameters.

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

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is a direct translation of the tool name ('Get friend list'), providing no additional information about the resource or scope. It is a tautology.

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

Usage Guidelines1/5

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

No usage guidance is provided. There is no indication of when to use this tool versus siblings like add_bind or get_ddnet_game_status.

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

TDQS

C2.7/5.0
Disambiguation5/5

All tools have distinct purposes: three bind operations (add, check, delete), one game status, and one friend list. No overlap.

Naming Consistency5/5

All tools follow consistent snake_case verb_noun pattern (e.g., add_bind, get_ddnet_game_status), making predictions easy.

Tool Count5/5

5 tools is appropriate for this domain, covering both bind management and game status without being too few or too many.

Completeness4/5

Covers core bind lifecycle (add, check, delete) but misses update/edit. Status and friend list are present, so only a minor gap.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

  • F
    license
    A
    quality
    A
    maintenance
    Manages llama.cpp llama-server instances with tools for lifecycle management, configuration CRUD, and orphan detection, enabling LLM agents to control local or remote inference servers.
    15
    2
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables management of long-running development processes (such as dev servers, compilers, and watchers) from MCP hosts. Provides tools to start, stop, restart, check status, view logs, and send input to managed processes.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Central daemon for managing local app processes, enabling multiple Claude Code sessions to coordinate starts, stops, and restarts with conflict resolution and a web dashboard.
    1
    MIT

Latest Blog Posts

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/SilverHi/ddnet-mcpserver'

If you have feedback or need assistance with the MCP directory API, please join our Discord server