Skip to main content
Glama

mcp-toolkit

AI 에이전트를 위한 범용 MCP 서버입니다. Python 3.13, FastMCPPlaywright로 구축되었습니다.

사용 가능한 도구

도구

설명

web_search

DuckDuckGo에서 검색하고 Playwright로 웹 콘텐츠 추출

fetch_url

직접 URL에서 주요 콘텐츠 추출

http_request

Playwright 없이 일반 HTTP 요청 실행

time_now

특정 시간대의 현재 날짜 및 시간 반환

date_utils

시간대 변환 및 날짜/기간 계산

memory_set

SQLite에 영구 값 저장

memory_get

저장된 값 검색

memory_delete

키 삭제

memory_list

모든 키 나열 (선택적 접두사 필터 포함)

memory_clear

모든 메모리 삭제 (복구 불가!)

memory_search

저장된 키와 값에서 텍스트 검색

run_python

타임아웃이 있는 샌드박스에서 Python 코드 실행

run_js

타임아웃이 있는 샌드박스에서 Node.js로 JavaScript 코드 실행


Related MCP server: MCP Server

설치

사전 요구 사항

  • UV 설치됨

  • Python 3.13 (설치되어 있지 않으면 UV가 자동으로 다운로드)

  • Node.js (선택 사항, run_js용)

옵션 A — 로컬 폴더에서 설치

git clone https://github.com/YoshiLoL0526/mcp-toolkit
cd mcp-toolkit
uv tool install --python 3.13 .

옵션 B — GitHub에서 직접 설치

uv tool install --python 3.13 git+https://github.com/YoshiLoL0526/mcp-toolkit

필수 단계: Playwright용 Chromium 설치

패키지를 설치한 후, 이 명령어를 한 번만 실행하세요:

# Obtener la ruta del entorno virtual creado por uv tool
uv tool run --from mcp-toolkit python -m playwright install chromium

또는 환경 경로를 알고 있는 경우:

~/.local/share/uv/tools/mcp-toolkit/bin/python -m playwright install chromium

MCP 클라이언트 설정

Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json)

{
  "mcpServers": {
    "mcp-toolkit": {
      "command": "mcp-toolkit"
    }
  }
}

Windows의 경우 경로는 %APPDATA%\Claude\claude_desktop_config.json입니다.

Cursor / VS Code (.cursor/mcp.json 또는 .vscode/mcp.json)

{
  "servers": {
    "mcp-toolkit": {
      "type": "stdio",
      "command": "mcp-toolkit"
    }
  }
}

HTTP 서버 (원격 액세스 또는 다중 클라이언트용)

mcp-toolkit --transport http --host 0.0.0.0 --port 8080

서버는 streamable-http 전송(현재 MCP 표준)을 사용하여 http://<host>:<port>/mcp에서 대기합니다. --path /otra-ruta를 사용하여 경로를 변경할 수 있습니다.

--transport sse 전송은 이전 클라이언트와의 호환성을 위해 유지되지만, FastMCP 2.3부터는 더 이상 사용되지 않습니다(deprecated).


도구 사용법

Parámetros:
  query        (str)  — texto a buscar
  max_results  (int)  — resultados a devolver, default 5, máximo 10
  deep         (bool) — si True, extrae el contenido completo de cada página
  language     (str)  — idioma para las cabeceras HTTP, default "es-ES"

예시 (에이전트):

Busca las últimas noticias sobre Python 3.13 con deep=True

fetch_url

Parámetros:
  url (str) — URL absoluta HTTP o HTTPS a leer

예시 (에이전트):

Lee https://example.com/articulo con fetch_url

http_request

Parámetros:
  method  (str)  — método HTTP: GET, POST, PUT, PATCH, DELETE, HEAD u OPTIONS
  url     (str)  — URL absoluta HTTP o HTTPS
  headers (dict) — cabeceras opcionales
  body    (str)  — cuerpo opcional como texto
  timeout (int)  — segundos máximos, default 10, máximo 60

예시 (에이전트):

Haz un POST a https://api.example.com/items con http_request

time_now / date_utils

time_now(timezone_name="UTC")

date_utils(
  action="convert_timezone",
  value="2026-04-21T12:00:00+00:00",
  target_timezone="America/New_York"
)

date_utils에서 지원하는 작업: parse, convert_timezone, add, diff. 오프셋이 없는 날짜에는 timezone_name이 사용됩니다. 시간대는 UTC, America/New_York, Europe/Madrid와 같은 IANA 이름이어야 합니다.

memory_set / memory_get

memory_set(key="usuario_nombre", value="Carlos", namespace="default")
memory_get(key="usuario_nombre", namespace="default")
memory_list(prefix="usuario_", namespace="default")
memory_search(query="Carlos", namespace="default")

데이터는 ~/.local/share/mcp-toolkit/memory.db에 저장됩니다. 모든 메모리 도구는 프로젝트, 클라이언트 또는 대화별로 데이터를 분리하기 위해 namespace를 허용합니다. 지정하지 않으면 default가 사용됩니다.

run_python

Parámetros:
  code     (str) — código Python a ejecutar
  timeout  (int) — segundos máximos, default 10, máximo 60
  stdin    (str) — entrada estándar opcional

보안 제한 사항:

  • 최소 환경: 호스트 프로세스의 비밀 정보나 임의의 변수를 상속하지 않음

  • 실행당 임시 작업 디렉토리

  • 환경 변수에 의해 무효화된 HTTP 프록시

  • 메모리 제한: 256 MB (Linux/macOS)

  • 엄격한 타임아웃: 시간이 초과되면 프로세스가 종료됨

  • Windows에서는 Python에서 적용되는 프로세스당 메모리 제한이 없음

  • 네트워크 차단이 강력한 격리를 보장하지는 않음; 신뢰할 수 없는 코드의 경우 네트워크 정책이 적용된 컨테이너나 VM 내에서 서버를 실행하는 것을 권장함

run_js

run_python과 동일한 매개변수. 시스템에 Node.js가 설치되어 있어야 합니다.


개발

git clone https://github.com/YoshiLoL0526/mcp-toolkit
cd mcp-toolkit
uv sync
uv run python -m playwright install chromium

# Ejecutar en modo desarrollo
uv run mcp-toolkit

# Tests
uv run pytest

새 도구 추가

  1. async def mi_tool(...) -> str 함수를 포함하는 mcp_toolkit/tools/mi_tool.py 생성

  2. server.py에서 mcp.tool()(mi_tool)로 가져오고 등록

  3. 재설치: uv tool install --python 3.13 . --reinstall


프로젝트 구조

mcp-toolkit/
├── pyproject.toml
├── README.md
├── mcp_toolkit/
│   ├── server.py              # FastMCP app + registro
│   ├── tools/
│   │   ├── web_search.py      # Playwright: buscar + extraer
│   │   ├── fetch_url.py       # Extraer una URL directa
│   │   ├── http_request.py    # Cliente HTTP genérico
│   │   ├── date_time.py       # Fechas, zonas horarias y duraciones
│   │   ├── memory.py          # SQLite KV store con namespaces
│   │   ├── run_python.py      # Sandbox Python
│   │   └── run_js.py          # Sandbox Node.js
│   └── utils/
│       ├── browser.py         # Singleton Playwright
│       └── sandbox.py         # Helpers de subprocess y timeout
└── tests/

라이선스

MIT

Available Tools

8 tools
memory_clearA

Elimina TODAS las claves de la memoria persistente. Usar con precaución: esta acción no se puede deshacer.

Returns: Número de entradas eliminadas.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well: it discloses the irreversible nature ('no se puede deshacer'), which is a critical behavioral trait for a destructive operation. It also mentions the return value format. However, it doesn't cover potential side effects like impact on other tools or error conditions.

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 perfectly concise: three sentences with zero waste. The first states the purpose, the second gives a critical warning, and the third specifies the return value. Each sentence earns its place by adding essential information.

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 tool's high complexity (destructive, irreversible operation) and no annotations, the description does well by covering purpose, warning, and return value. With an output schema present, it doesn't need to detail return values further. A minor gap is the lack of explicit prerequisites or error handling, but it's largely complete.

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?

The tool has 0 parameters with 100% schema coverage, so the schema fully documents the absence of inputs. The description adds no parameter information, which is appropriate. A baseline of 4 is applied for zero-parameter tools, as no compensation is needed.

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 specific action ('Elimina TODAS las claves') and resource ('de la memoria persistente'), distinguishing it from siblings like memory_delete (which likely deletes specific keys) and memory_list (which lists keys). The verb 'Elimina' (deletes/removes) is precise and unambiguous.

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

Usage Guidelines5/5

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

The description provides explicit guidance with 'Usar con precaución: esta acción no se puede deshacer' (Use with caution: this action cannot be undone), clearly indicating when to be careful. It implicitly distinguishes from memory_delete by specifying 'TODAS las claves' (ALL keys), suggesting alternatives for partial deletion.

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

memory_deleteB

Elimina una clave de la memoria persistente.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesNombre de la clave a eliminar.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/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 deletes a key but doesn't mention what happens if the key doesn't exist (e.g., error, silent failure), whether the deletion is permanent, any permission requirements, or rate limits. For a destructive operation with zero annotation coverage, this is a significant gap in 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?

The description is a single, efficient sentence in Spanish that directly states the tool's purpose with zero waste. It's appropriately sized and front-loaded, making it easy to understand at a glance without unnecessary elaboration.

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?

Given the tool's complexity (destructive operation with 1 parameter), the description is minimally adequate but incomplete. With no annotations and an output schema present (which likely describes the return value), the description doesn't need to explain returns. However, it lacks critical behavioral details for a delete operation, such as error handling or side effects, leaving gaps in understanding.

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 adds no parameter semantics beyond what the input schema provides. The schema has 100% coverage with a clear description for the 'key' parameter ('Nombre de la clave a eliminar'), so the baseline is 3. The tool description doesn't elaborate on key format, constraints, or examples, relying entirely on the schema.

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 ('Elimina' - deletes) and the resource ('una clave de la memoria persistente' - a key from persistent memory). It distinguishes itself from siblings like memory_get (retrieve) and memory_set (store), though it doesn't explicitly mention sibling differentiation. The purpose is specific and 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. While the purpose is clear, there's no mention of prerequisites (e.g., the key must exist), when not to use it, or how it differs from memory_clear (which likely clears all keys). The description assumes context but offers no explicit usage instructions.

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

memory_getB

Recupera el valor almacenado bajo una clave.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesNombre de la clave a recuperar.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/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 the retrieval action but doesn't disclose behavioral traits: whether it returns null/error for non-existent keys, requires authentication, has rate limits, or what the output format is. The description is minimal and lacks operational 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, efficient sentence in Spanish that directly states the tool's function. It is front-loaded with the core action and resource, with zero wasted words. Every word earns its place.

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?

Given the tool's low complexity (single parameter, read-only operation) and the presence of an output schema (which handles return values), the description is minimally adequate. However, with no annotations and simple schema, it lacks context on error handling or behavioral nuances, making it incomplete for robust agent use.

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?

Schema description coverage is 100%, with the parameter 'key' fully documented in the schema. The description adds no additional meaning beyond the schema's 'Nombre de la clave a recuperar.' Baseline 3 is appropriate as the schema does the heavy lifting, but the description doesn't compensate with extra context like key format examples.

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 'Recupera el valor almacenado bajo una clave' clearly states the action (retrieves) and resource (value stored under a key). It distinguishes from siblings like memory_set (stores) and memory_delete (removes), but doesn't explicitly differentiate from memory_list (lists all keys). The purpose is specific and 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. The description doesn't mention prerequisites (e.g., key must exist), when not to use it, or refer to sibling tools like memory_list for discovering available keys. Usage is implied from the name and purpose alone.

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

memory_listA

Lista todas las claves almacenadas, con filtro opcional por prefijo.

ParametersJSON Schema
NameRequiredDescriptionDefault
prefixNoFiltrar claves que comiencen con este texto (vacío = todas).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/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. It describes the listing behavior and optional filtering, which covers basic functionality. However, it lacks details on behavioral traits such as pagination, rate limits, authentication needs, or what happens if no keys exist (e.g., returns empty list). The description is adequate but minimal for a read-only 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, efficient sentence in Spanish that front-loads the main action ('Lista todas las claves almacenadas') and adds the optional filter detail. There is no wasted text, and it's appropriately sized for a straightforward tool with one parameter.

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 tool's low complexity (1 optional parameter, no annotations, but has an output schema), the description is reasonably complete. It covers the purpose and basic usage, and the output schema likely handles return values, so the description doesn't need to explain them. However, it could benefit from more behavioral context, such as response format or error cases, to be fully comprehensive.

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?

The schema description coverage is 100%, so the schema already documents the single parameter 'prefix' with its default and purpose. The description adds marginal value by mentioning the filter in Spanish ('filtro opcional por prefijo'), but doesn't provide additional semantics beyond what the schema states. With 0 required parameters, the baseline is 4, as the tool is simple and the schema handles parameter documentation well.

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 ('Lista') and resource ('todas las claves almacenadas'), making the purpose understandable. It distinguishes itself from siblings like memory_get (retrieve specific key) and memory_set (store key) by focusing on listing all keys. However, it doesn't explicitly contrast with memory_clear or memory_delete, which are destructive operations.

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 implies usage through the optional prefix filter, suggesting it's for browsing keys, but doesn't explicitly state when to use this tool versus alternatives. For example, it doesn't clarify that memory_get is for retrieving a specific key's value, or that this tool is for discovery purposes. The guidance is functional but not comparative.

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

memory_setB

Guarda un valor en memoria persistente bajo una clave.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesNombre único de la clave (ej: "usuario_preferencias").
valueYesValor a guardar. Puede ser texto, número, lista u objeto JSON.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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. While it indicates this is a write operation ('Guarda'), it doesn't mention persistence characteristics (e.g., durability, expiration), permissions required, or potential side effects. This leaves significant gaps for a mutation 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, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded with the core functionality.

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?

Given that this is a mutation tool with no annotations but with a complete input schema and an output schema (which handles return values), the description is minimally adequate. However, it lacks important behavioral context about persistence and side effects that would be expected for a storage operation.

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 100%, so the schema already documents both parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't clarify key uniqueness constraints or value serialization details). Baseline 3 is appropriate when the schema does the heavy lifting.

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 ('Guarda un valor') and resource ('en memoria persistente bajo una clave'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like memory_get or memory_delete, which would require a 5.

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 memory_get (for retrieval) or memory_delete (for removal). It states what the tool does but offers no context about appropriate use cases or exclusions.

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

run_jsA

Ejecuta un fragmento de código JavaScript con Node.js y devuelve su salida.

El código corre en un subproceso separado con:

  • Timeout configurable (por defecto 10 segundos).

  • Sin acceso a red (variables de entorno anuladas).

  • Node.js debe estar instalado en el sistema.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesCódigo JavaScript a ejecutar.
timeoutNoTiempo máximo de ejecución en segundos (máximo 60).
stdinNoTexto a pasar como entrada estándar al programa.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/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 does an excellent job describing key behavioral traits: timeout configuration (default 10 seconds, maximum 60), execution in a separate subprocess, security constraints (no network access, overridden environment variables), and the prerequisite of Node.js installation. The only minor gap is not explicitly mentioning whether this is a read-only or destructive operation, though 'ejecuta' implies execution rather than data modification.

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 perfectly structured and concise. The first sentence states the core purpose, followed by bullet points that efficiently detail the execution environment and constraints. Every sentence earns its place with essential information, and there's no redundant or unnecessary content.

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

Completeness5/5

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

Given that this is a code execution tool with no annotations but with comprehensive input schema (100% coverage) and an output schema (confirmed in context signals), the description provides excellent contextual completeness. It covers the execution environment, security constraints, prerequisites, and behavioral characteristics, making it complete enough for an agent to understand when and how to use this tool effectively.

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?

With 100% schema description coverage, the schema already documents all three parameters thoroughly. The description doesn't add any additional parameter semantics beyond what's in the schema - it mentions timeout configuration generally but doesn't provide extra details about the code, timeout, or stdin parameters. This meets the baseline expectation when schema coverage is complete.

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 with a specific verb ('Ejecuta' - executes) and resource ('un fragmento de código JavaScript con Node.js'), distinguishing it from sibling tools like run_python (different language) and memory_* tools (different functionality). It precisely defines what the tool does without being tautological.

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 provides clear context about when to use this tool by specifying the execution environment (Node.js, separate subprocess) and constraints (no network access, overridden environment variables). However, it doesn't explicitly state when NOT to use it or mention alternatives like run_python for Python code execution, which would be helpful for sibling tool differentiation.

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

run_pythonA

Ejecuta un fragmento de código Python y devuelve su salida.

El código corre en un subproceso separado con:

  • Timeout configurable (por defecto 10 segundos).

  • Sin acceso a red (variables de entorno anuladas).

  • Límite de memoria de 256 MB en Linux.

  • El módulo sys.exit() termina el proceso sin errores.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesCódigo Python a ejecutar.
timeoutNoTiempo máximo de ejecución en segundos (máximo 60).
stdinNoTexto a pasar como entrada estándar al programa.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/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 and does so excellently. It clearly describes the execution environment: separate subprocess, configurable timeout, no network access, memory limits, and how sys.exit() is handled. This provides crucial behavioral context beyond what the input schema covers.

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 perfectly structured and concise. The first sentence states the core purpose, followed by bullet points detailing the execution environment. Every sentence earns its place by providing essential information without redundancy. The information is front-loaded with the most important details first.

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

Completeness5/5

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

Given that this is a code execution tool with security implications, the description provides excellent completeness. With no annotations but an output schema present, the description thoroughly covers the execution environment constraints (timeout, network access, memory limits) and behavioral characteristics. This is complete enough for an agent to understand the tool's capabilities and limitations.

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 100%, so the baseline is 3. The description doesn't add specific parameter semantics beyond what's already in the schema descriptions. It mentions timeout configuration generally but doesn't provide additional details about the code, timeout, or stdin parameters beyond what the schema already documents.

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 with specific verb+resource: 'Ejecuta un fragmento de código Python y devuelve su salida' (Executes a Python code fragment and returns its output). It distinguishes from sibling tools like run_js (JavaScript execution) and memory_* tools (memory operations). The description is specific about what the tool does without being tautological.

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 provides clear context about when to use this tool: for executing Python code in a sandboxed environment. It implicitly distinguishes from run_js for JavaScript execution and memory_* tools for memory operations. However, it doesn't explicitly state when NOT to use it or mention specific alternatives beyond what's obvious from sibling names.

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.

  1. 8 tool updatesv0.1.0
    • First observedmemory_clear
    • First observedmemory_delete
    • First observedmemory_get
    • First observedmemory_list
    • First observedmemory_set
    • First observedrun_js
    • First observedrun_python
    • First observedweb_search

TDQS

A3.8/5.0
Disambiguation5/5

Every tool has a clearly distinct purpose with no ambiguity. The five memory_* tools handle different CRUD operations for persistent storage, while run_js and run_python execute code in different languages, and web_search performs internet searches. There is no overlap in functionality between these categories.

Naming Consistency5/5

Tool names follow a consistent verb_noun pattern throughout. The memory tools use clear action verbs (clear, delete, get, list, set) paired with 'memory', while the execution tools use 'run_' followed by the language, and web_search follows the same convention. All names are in snake_case with no deviations.

Tool Count4/5

With 8 tools, the count is reasonable for a toolkit server. However, the scope feels slightly broad, combining memory management, code execution in two languages, and web search into one server, which might be better split. The tools earn their place, but the domain is not tightly focused.

Completeness4/5

For the memory domain, the tools provide complete CRUD coverage (set, get, delete, list, clear). For code execution, both JavaScript and Python are covered. The web_search tool adds internet capability. Minor gaps include no update operation for memory (though set can overwrite) and no tool for executing other languages, but agents can work around these.

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

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/YoshiLoL0526/mcp-toolkit'

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