Skip to main content
Glama
Citrus086

mcporter-bridge

by Citrus086

mcporter-bridge

Expose your local MCPorter registry as one stable MCP server for coding clients.

mcporter-bridge is a small FastMCP server that turns your existing mcporter setup into a single, reusable entry point for clients like Codex, Claude Code, Cline, and Cursor.

Why

If you use multiple coding clients, your MCP setup usually fragments fast:

  • Codex has one config format

  • Claude Code has another

  • Cline and Cursor add their own

  • mcporter already knows your real server registry, auth state, and runtime

mcporter-bridge keeps mcporter as the source of truth and gives clients one stable MCP server instead of another pile of duplicated configs.

Related MCP server: Agent Aggregator

What It Does

  • Reads your local mcporter registry at runtime

  • Lists configured MCP servers and their health

  • Inspects a specific server and its tool schemas

  • Calls any tool on any configured server through mcporter

  • Lazy loading: Activate/deactivate heavy MCPs on demand to save context

  • Optionally exposes local agent-reach diagnostics as helper tools

This is not a transport proxy and not an enterprise gateway. It is a local-first bridge for client integration.

Tools

Core Tools

Tool

Description

mcporter_list_servers

【MCP 全景】列出所有已加载(active)和可激活(available)的 MCP 服务器,包含类型区分(small/heavy)

mcporter_help

探索 MCP 服务器的工具列表和参数格式,支持 raw=true 获取完整技术定义

mcporter_call_tool

调用指定 MCP 的某个工具

Lazy Loading Tools (按需加载)

Tool

Description

mcporter_activate_mcp

激活一个大型 MCP(如 chrome-devtools, playwright)

mcporter_deactivate_mcp

停用大型 MCP 释放上下文

Utility Tools

Tool

Description

mcporter_status

检查 mcporter 状态(config doctor / version)

All tools return structured output with:

  • ok

  • timed_out

  • command

  • timeout_ms

  • returncode

  • stdout

  • stderr

  • parsed_json

Install

pip

pip install mcporter-bridge

pipx

pipx install mcporter-bridge

After installation, you get two commands:

  • mcporter-bridge to run the MCP server

  • mcporter-bridge-config to generate or install client snippets

local development

git clone https://github.com/Citrus086/mcporter-bridge.git
cd mcporter-bridge
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

Requirements

  • mcporter installed and available on PATH

  • at least one configured MCP server in your local mcporter registry

Optional:

Quick Check

mcporter-bridge

In another shell:

mcporter list --stdio "python3 -m mcporter_bridge" --json

Client Setup

Ready-made templates live in examples/.

Codex

Add this to ~/.codex/config.toml:

[mcp_servers.mcporter-bridge]
type = "stdio"
command = "python3"
args = ["-m", "mcporter_bridge"]
startup_timeout_ms = 30000

Or install it automatically:

mcporter-bridge-config install --client codex

Notes:

  • OpenAI’s docs confirm that Codex reads MCP config from ~/.codex/config.toml using the mcp_servers.<name> structure for MCP servers.

  • The stdio form here is also verified locally with codex mcp add --help, which accepts codex mcp add <name> -- <command...> for stdio servers.

Claude Code / Claude Desktop

Add this to your MCP config:

{
  "mcpServers": {
    "mcporter-bridge": {
      "command": "python3",
      "args": ["-m", "mcporter_bridge"]
    }
  }
}

Automatic install using the default ~/.claude.json path:

mcporter-bridge-config install --client claude

Notes:

  • Anthropic’s Claude Code docs confirm that user-scoped MCP servers live in ~/.claude.json.

  • The same docs show project-scoped servers stored in .mcp.json at the project root.

  • The documented JSON shape uses mcpServers with command, args, and env for stdio servers.

Cline

Use the same stdio shape:

{
  "mcpServers": {
    "mcporter-bridge": {
      "command": "python3",
      "args": ["-m", "mcporter_bridge"]
    }
  }
}

Generate snippets:

mcporter-bridge-config snippet --client cline

Write to an explicit config path:

mcporter-bridge-config install --client cline --config-path /path/to/mcp.json

Notes:

  • Cline’s docs confirm that MCP settings are stored in cline_mcp_settings.json.

  • For local stdio servers, the documented JSON shape uses mcpServers with command, args, env, alwaysAllow, and disabled.

  • Cline’s docs use type for remote transport config such as streamableHttp, but not in the local stdio example, so the bridge does not emit type for Cline.

Cursor

Cursor uses mcp.json with mcpServers, and for stdio servers the bridge emits type: "stdio" explicitly.

Global config example:

{
  "mcpServers": {
    "mcporter-bridge": {
      "type": "stdio",
      "command": "python3",
      "args": ["-m", "mcporter_bridge"]
    }
  }
}

Install into the default global path:

mcporter-bridge-config install --client cursor

Or write to an explicit config path:

mcporter-bridge-config install --client cursor --config-path /path/to/mcp.json

Config Helper

Print a snippet:

mcporter-bridge-config snippet --client codex

Customize the launcher:

mcporter-bridge-config snippet \
  --client claude \
  --python-command /opt/homebrew/bin/python3.13 \
  --module-name mcporter_bridge

Install directly into a config file:

mcporter-bridge-config install --client codex
mcporter-bridge-config install --client claude

When an existing config file is updated, the helper writes a sibling backup with a .bak suffix first.

Example Prompts

  • "列出所有可用的 MCP 服务器"

  • "查看 xiaohongshu 服务器的工具"

  • "调用 xiaohongshu 的 check_login_status"

  • "激活 playwright 浏览器工具"

  • "查看 xiaohongshu 的原始工具定义(raw=true)"

Lazy Loading (按需加载)

大型 MCP 如 chrome-devtools (29 tools) 或 playwright (22 tools) 会消耗大量上下文。默认保持未加载状态,需要时再激活。

MCP 类型

  • small - 小型 MCP,通常已加载,可直接使用

  • heavy - 大型 MCP,默认未加载,需先激活

Setup

  1. 创建 heavy MCP 目录:

mkdir -p ~/.mcporter/heavy/available
  1. 将大型 MCP 从 mcporter.json 移到单独文件:

# 示例:将 playwright 移到 heavy
echo '{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["-y", "@playwright/mcp@latest"],
      "description": "浏览器自动化",
      "tags": ["浏览器"]
    }
  }
}' > ~/.mcporter/heavy/available/playwright.json
  1. 从主 mcporter.json 中移除该 MCP。

Workflow

1. mcporter_list_servers()
   ↓ 返回 active(已加载)和 available(可激活)两个列表
   ↓ 需要的 MCP 在 available 中?
2. mcporter_activate_mcp(name="playwright")
   ↓
3. mcporter_list_servers()  # 确认已出现在 active 列表
   ↓
4. 使用 playwright 工具...
   ↓
5. mcporter_deactivate_mcp(name="playwright")  # 用完即释放

这让上游 LLM 能够自我管理上下文,按需加载/卸载大型 MCP。

Server Descriptions (服务器描述)

mcporter-bridge 会为每个 MCP 服务器提供功能描述,帮助 LLM 了解每个服务是干什么的。

描述来源(优先级从高到低)

  1. 用户配置 - 在 ~/.mcporter/mcporter.json 中添加

  2. 内置映射 - 常见 MCP 的预设描述

  3. 名字推断 - 从服务器名称猜测功能

在 mcporter.json 中配置描述

{
  "mcpServers": {
    "my-custom-mcp": {
      "command": "...",
      "args": [...],
      "description": "自定义 MCP 的功能描述",
      "tags": ["标签1", "标签2"],
      "best_for": "最适合的使用场景"
    }
  }
}

内置描述的常见 MCP

服务器名

描述

用途

exa

AI 搜索引擎

搜索网页内容、代码、新闻

xiaohongshu

小红书操作

搜索/发布小红书笔记

douyin

抖音操作

解析抖音视频、下载无水印视频

web-search-prime

智谱网页搜索

搜索中文网页内容

web-reader

网页阅读器

读取并解析网页内容

context7

技术文档查询

查询编程库的官方文档

zread

GitHub 仓库阅读

搜索/阅读 GitHub 仓库内容

zai-mcp-server

Z.AI 多模态工具

图像分析、视频分析、OCR

notion

Notion 笔记操作

读写 Notion 页面

figma

Figma 设计工具

读取 Figma 设计稿

github

GitHub 官方 MCP

创建/更新文件、管理 Issues/PRs、搜索代码

linkedin-scraper

LinkedIn 数据抓取

获取个人/公司资料、搜索职位和人才

wechat-article

微信文章处理

转换微信文章格式

名字推断规则

如果服务器不在内置列表中,会从名称推断:

  • 包含 search → 搜索相关

  • 包含 browser / chrome → 浏览器相关

  • 包含 github / git → 代码仓库相关

  • 包含 xiaohongshu → 小红书相关

  • ...

Environment Variables

  • MCPORTER_BRIDGE_MCPORTER_BIN: override the mcporter binary path

  • MCPORTER_BRIDGE_MAX_OUTPUT_CHARS: cap captured stdout/stderr length

Troubleshooting / 一个跨三层的隐蔽 bug

如果你在 macOS + Anaconda Python 环境下遇到 ModuleNotFoundError: No module named mcporter_bridge,或者 Claude 一直报 Failed to reconnect,问题可能来自一个跨三层的隐蔽 bug

pip 写入 .pth 文件
    ↓
macOS 自动给该文件打上 UF_HIDDEN flag(因为父目录 .venv 被标记为隐藏)
    ↓
Anaconda Python 的 site.py 读取 .pth 时,检测到 UF_HIDDEN 就直接跳过
    ↓
Editable install 失效,import mcporter_bridge 失败

这会导致 python3 -m mcporter_bridge 直接起不来进程,Claude 等 MCP 客户端自然无法重连。

我们已经做的修复

  • __main__.py 里加了 bootstrap fallback:如果模块加载失败,会自动探测 src/ 目录并注入 sys.path

  • mcporter-bridge-config 在生成客户端配置时,自动检测 editable install 并写入 PYTHONPATH,同时写入 FASTMCP_SHOW_SERVER_BANNER=false 保证 stdio 干净。

  • show_banner=False:确保 FastMCP 的启动 banner 不会污染 stdio 的 JSON-RPC 输出。

临时 workaround

如果你不想重新安装,可以手动去掉 hidden flag:

chflags nohidden /path/to/your/.venv/lib/python3.12/site-packages/_mcporter_bridge.pth

或者直接给 Claude/Codex 等客户端的 env 加上:

"env": {
  "PYTHONPATH": "/absolute/path/to/mcporter-bridge/src",
  "FASTMCP_SHOW_SERVER_BANNER": "false"
}

这个 bug 的诡异之处在于:pip、macOS、Python 三层单独看都没错,但串在一起就把 editable install 干掉了。更让人意外的是,我们项目的 build backend hatchling 目前并不支持 symlink editable mode,所以即使想绕过 .pth 文件也做不到——它只能生成 .pth 文件。目前 Python 和 macOS 官方 issue tracker 里似乎还没有人专门报告这一现象。

Roadmap

  • higher-level convenience tools for common MCPs

  • optional tool allowlists / denylists

  • more client-specific path discovery

  • richer auth and diagnostics helpers

License

MIT

Available Tools

6 tools
mcporter_activate_mcpA

激活一个大型 MCP。激活后需重新调用 mcporter_list_servers 确认。

参数:name - 从 mcporter_list_servers().available 中获取的名称

示例:mcporter_activate_mcp(name="playwright")

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
timeout_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It states 'activate' (a mutation) and mentions a confirmation step, but it does not disclose side effects, reversibility, permissions, or what the activation actually changes. This is minimal behavioral disclosure.

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 brief and front-loaded: purpose, a post-requisite, parameter explanation, and an example—all in three concise sentences with no filler. Every sentence 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?

The tool is simple and there is an output schema (so return values need not be described). The description covers purpose and the name parameter, but leaves timeout_ms unexplained and lacks details on activation behavior. It is adequate but has clear gaps.

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 coverage is 0%. The description explains that 'name' is taken from mcporter_list_servers().available, which adds meaning. However, the timeout_ms parameter is not addressed at all, leaving one of two parameters undocumented. Partial compensation only.

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: '激活一个大型 MCP' (activate an MCP), which is a specific verb+resource. It distinguishes from siblings like mcporter_deactivate_mcp and mcporter_list_servers. The example also reinforces the intended use.

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 usage context: the name parameter must be obtained from mcporter_list_servers().available, and after activation, one should re-call mcporter_list_servers to confirm. It does not explicitly exclude alternatives, but the post-activation step gives actionable guidance.

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

mcporter_call_toolB

调用指定服务器的工具。

参数:

  • server_name: 服务器名(如 xiaohongshu、douyin)

  • tool_name: 工具名(如 search_feeds)

  • arguments: JSON 对象,不是字符串

示例:mcporter_call_tool(server_name="xiaohongshu", tool_name="search_feeds", arguments={"keyword": "GLM"})

⚠️ 先用 mcporter_help 查询参数格式

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
tool_nameYes
timeout_msNo
server_nameYes
output_formatNojson

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/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 responsibility for behavioral disclosure. It clarifies that arguments must be a JSON object and directs to help, but does not disclose side effects, permissions, error behavior, or whether the call is read-only or mutating.

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 concise, with a compact parameter list, an example, and a critical warning. Every sentence adds value and there is no redundant 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 generic nature of a remote tool-call function, the description provides the essential information: server and tool names, arguments formatting, and a pointer to details via mcporter_help. The output schema exists for return values, so lack of return details is acceptable. It does not mention timeout or output format, but these are covered by schema defaults.

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 0%, so the description must compensate. It adds meaning for server_name, tool_name, and arguments, including an example and the JSON-object requirement. However, it omits timeout_ms and output_format, which are only documented via schema defaults.

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 calls a tool on a specified server, using a specific verb and resource. It is distinct from sibling tools like listing servers or managing activation, but does not explicitly differentiate itself by naming an alternative.

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 gives a clear prerequisite: use mcporter_help to query parameter format. It also provides an example, but lacks explicit when-not-to-use instructions or mention of alternative tools.

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

mcporter_deactivate_mcpC

停用大型 MCP 释放上下文。

参数:name - 要停用的 MCP 名称

示例:mcporter_deactivate_mcp(name="playwright")

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
timeout_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only mentions 'frees context' as a high-level effect, but does not explain side effects such as impact on active sessions, permissions required, or the role of the timeout_ms parameter. This is insufficient for a mutation-like tool.

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 short and front-loaded with the primary purpose, includes a parameter explanation, and provides a concrete example. It earns high marks for brevity, though it could be slightly more structured by separating the effect from parameter details.

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 an output schema, return values need not be described. However, the description lacks key context such as the timeout parameter's function, prerequisites, or consequences of deactivation. The inclusion of sibling tools suggests a management workflow, but this description does not fully position the tool within that workflow.

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 explains the 'name' parameter and gives an example, but it completely omits the 'timeout_ms' parameter, leaving its purpose and behavior undocumented. This is a significant 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 ('deactivate MCP') and the resource, and it distinguishes from sibling tools like activate_mcp by the verb 'deactivate'. However, it adds the qualifier 'large' which is somewhat ambiguous but does not obscure the core purpose.

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 ('to free context') and provides an example, but it does not explicitly state when to use this tool versus alternatives like activate_mcp or list_servers. No exclusion criteria or alternative references are given.

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

mcporter_helpA

探索 MCP 服务器的工具和参数。

渐进式查询(推荐):

  • 无参数:返回使用指南

  • server="xxx":返回该服务器的工具列表(名称+描述)

  • server="xxx", tool="yyy":返回参数格式(类型/必填/默认值)

完整技术定义(需要原始 JSON):

  • server="xxx", raw=true:返回完整工具定义和健康状态

示例: mcporter_help(server="xiaohongshu") # 看工具有哪些 mcporter_help(server="xiaohongshu", tool="search_feeds") # 看参数格式 mcporter_help(server="xiaohongshu", raw=true) # 看原始定义

ParametersJSON Schema
NameRequiredDescriptionDefault
rawNo
toolNo
serverNo
timeout_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are present, so the description carries the full burden. It discloses what each parameter combination returns (usage guide, tool list, parameter format, raw definitions with health status), giving a good sense of the tool's read-only, exploratory nature. It does not mention error handling or timeouts, but the core behavior is well covered.

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 well structured with bullet points and a clear progression from simple to advanced usage, and every section adds value. It is somewhat longer than a minimal description, but the examples and mode breakdown justify the length. No filler or redundant content is present.

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 multiple query modes and the presence of an output schema, the description is largely complete: it covers all main invocation patterns and provides illustrative examples. It does not mention timeout_ms or potential error scenarios, but overall an agent can confidently decide when and how to invoke this tool.

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 has 0% description coverage, so the description must compensate. It explains the server, tool, and raw parameters with examples, but it completely omits the timeout_ms parameter, leaving that parameter's purpose and impact undocumented. This is a notable gap for a tool that may need to handle large MCP definitions.

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 states clearly that the tool explores MCP server tools and parameters, and it distinguishes itself from siblings by describing specific output modes (usage guide vs. tool list vs. parameter format vs. raw JSON). This is a specific verb+resource with clear differentiation from mcporter_list_servers and mcporter_call_tool.

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?

It provides explicit progressive query patterns (no args, server, server+tool, raw=true) and gives concrete examples, such as mcporter_help(server="xiaohongshu"). This tells the agent exactly when to use each level of detail and implies when not to use it (e.g., when only a server list is needed, use mcporter_list_servers).

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

mcporter_list_serversA

【MCP 全景】列出所有已加载和可激活的 MCP 服务器。

返回分区:

  • active: 当前已加载的 MCP(可直接调用)

  • available: 未加载但可激活的大型 MCP

工具分类概览:

  • 搜索类:智谱网页搜索、Exa AI 搜索

  • 社交类:小红书、抖音平台操作

  • 开发类:GitHub 仓库阅读(zread)、技术文档查询(context7)

  • 职场类:LinkedIn 招聘求职

  • 多模态:图像分析、视频分析、OCR

  • 协作类:Notion、Figma 读写

  • 网页阅读:解析网页内容

注:实际可用 MCP 以调用结果为准,本列表仅为示例

⚠️ 大型 MCP 占用大量上下文,请遵循:按需激活 → 用完即释放

使用流程:

  1. 调用本工具查看 active.servers 找需要的 MCP

  2. 大型 MCP 需先 mcporter_activate_mcp(name="xxx") 激活

  3. 用 mcporter_call_tool 调用具体工具

  4. 用完立即 mcporter_deactivate_mcp(name="xxx") 释放上下文

ParametersJSON Schema
NameRequiredDescriptionDefault
timeout_msNo
include_availableNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Despite having no annotations, the description discloses that the list is only an example, warns about large MCPs consuming context, and explains the active vs available distinction. This goes well beyond the schema and covers behavioral traits that an agent 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 long but very well-structured with headers and bullet points. Every section (purpose, partitions, categories, usage flow) adds value, and the main purpose is front-loaded in the first sentence.

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?

The tool is a list operation, and the description explains the return partitions, provides usage workflow with sibling tools, and includes contextual caveats. Given that an output schema exists, no return format explanation is necessary, so the description is 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?

The description does not mention the two parameters (timeout_ms, include_available) at all, and the input schema provides no descriptions (0% coverage). The param names are only weakly self-explanatory, so the description fails to compensate for the low schema coverage.

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 '列出所有已加载和可激活的 MCP 服务器' (list all loaded and activatable MCP servers), which is a specific verb+resource. It distinguishes itself from sibling tools like mcporter_activate_mcp and mcporter_call_tool by focusing on listing.

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?

It provides an explicit usage flow: call this to view active.servers, activate large MCPs first, use mcporter_call_tool, then deactivate. This tells the agent exactly when to use this tool vs the alternatives, plus context warnings.

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

mcporter_statusA

检查 mcporter 状态和配置。

action 参数:

  • "doctor":验证配置文件(默认)

  • "version":显示 mcporter 版本

示例: mcporter_status() # 验证配置 mcporter_status(action="version") # 查看版本

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNodoctor
timeout_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/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 of behavioral disclosure. It explains what each action does but does not state whether the tool makes any changes, requires specific permissions, or has side effects. The name and actions imply read-only status checks, but this is not explicitly asserted.

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 concise and well-structured: a one-sentence purpose, a clear action list, and two usage examples. Every sentence adds value without redundancy, and the front-loaded summary ensures quick comprehension.

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?

For a simple status tool with two parameters and an output schema, the description covers the primary behavior and the main action parameter adequately. The missing timeout_ms explanation is a minor gap, but overall the agent has enough context to use the tool correctly, especially since the output schema likely covers return values.

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 input schema provides no descriptions (0% coverage), so the description must compensate. It thoroughly explains the 'action' parameter's two enum values and the default, but completely omits any explanation of the 'timeout_ms' parameter, leaving its purpose and usage undocumented.

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?

Description clearly states 'check mcporter status and configuration' with a specific verb and resource. It further enumerates two distinct actions (doctor and version) with examples, making its purpose unambiguous and differentiating it from sibling tools like list_servers or call_tool.

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 for when to use the tool: to verify the configuration file (doctor, default) or show the version. It doesn't explicitly name alternatives, but the action list and examples imply the appropriate scenarios. The absence of exclusions is acceptable for a status-checking tool.

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. 6 tool updatesv0.1.0
    • First observedmcporter_activate_mcp
    • First observedmcporter_call_tool
    • First observedmcporter_deactivate_mcp
    • First observedmcporter_help
    • First observedmcporter_list_servers
    • First observedmcporter_status

TDQS

A3.8/5.0

Scored across 6 tools

Disambiguation5/5

Each tool maps to a distinct phase of the MCP lifecycle: listing, exploring, calling, status checking, and activation/deactivation. There is no functional overlap between them, making selection unambiguous.

Naming Consistency4/5

All tools share the mcporter_ prefix and most follow a verb_noun pattern (list_servers, call_tool, activate_mcp, deactivate_mcp). However, 'help' and 'status' are single verbs/nouns that deviate slightly from the pattern.

Tool Count5/5

Six tools is an ideal number for a bridge server, covering the full management lifecycle without unnecessary bloat. Each tool has a clear and necessary role.

Completeness5/5

The tool set provides a complete workflow: discover available MCPs, activate large ones on demand, inspect tool schemas, call tools, and deactivate to free context. Status diagnostics round out the surface, so no critical operations are missing.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers