mcp-this
一个MCP服务器,通过YAML配置文件动态公开CLI/bash命令作为工具和提示模板。
mcp-this 允许您将任何命令行工具转换为MCP工具,并创建任何MCP客户端(例如Claude Desktop)都可以使用的结构化提示模板。您只需在YAML文件中定义命令、提示及其参数,而不是编写代码,MCP服务器就可以将它们提供给像Claude Desktop这样的MCP客户端。
核心价值观: 将CLI命令转换为MCP工具,并使用简单的YAML配置创建可重用的提示模板。
______________________________________________________________________
运作原理
定义 工具 (CLI命令)和 鼓励 YAML中的(AI模板):
tools:
get-current-time:
description: |
Display the current date and time in various formats.
Examples:
- get_current_time(format="iso") → 2025-05-18T17:17:39Z
- get_current_time(format="readable") → Friday, May 18, 2025 5:17 PM
execution:
command: >-
if [ ">" = "iso" ]; then
date -u +"%Y-%m-%dT%H:%M:%SZ";
elif [ ">" = "readable" ]; then
date "+%A, %B %d, %Y %I:%M %p";
else
echo "ISO: $(date -u +"%Y-%m-%dT%H:%M:%SZ")";
echo "Readable: $(date "+%A, %B %d, %Y %I:%M %p")";
fi
parameters:
format:
description: "Time format: iso, readable, or empty for both"
required: false
system-info:
description: Get basic system information
execution:
command: uname -a && echo "CPU: $(nproc) cores"
parameters: {}
prompts:
code-reviewer:
description: Perform a thorough code review with best practices focus
template: |
Please review the following code with a focus on:
- Code quality and best practices
- Security vulnerabilities
- Performance considerations
{{#if focus_area}}- Special attention to: {{focus_area}}{{/if}}
Code to review:
{{code}}
{{#if context}}Additional context: {{context}}{{/if}}
arguments:
code:
description: Code to review
required: true
focus_area:
description: Specific area to focus on (e.g., security, performance)
required: false
context:
description: Additional context about the code
required: false在Claude Desktop中使用:
{
"mcpServers": {
"mcp-this-custom": {
"command": "uvx",
"args": ["mcp-this", "--config-path", "/path/to/your-tools.yaml"]
}
}
}就是这样!克劳德现在可以:
- 执行自定义CLI工具 (获取当前时间、系统信息)
- 使用结构化提示模板 (带引导参数的代码审阅者)
______________________________________________________________________
快速开始
1.安装uvx
# Install uv (includes uvx)
curl -LsSf https://astral.sh/uv/install.sh | sh2.创建你的第一个工具
创建 my-tools.yaml:
tools:
web-scraper:
description: Fetch a webpage and convert it to clean, readable text
execution:
command: curl -s '>' | lynx -dump -stdin
parameters:
url:
description: URL of the webpage to fetch
required: true
find-large-files:
description: Find files larger than specified size in a directory
execution:
command: find '>' -type f -size +> -exec ls -lh {} \;
parameters:
directory:
description: Directory to search
required: true
size:
description: Minimum file size (e.g., 100M, 1G)
required: true2.1.添加AI提示模板(可选)
增强您的 my-tools.yaml 使用结构化提示模板:
tools:
# ... your tools above ...
prompts:
summarize-webpage:
description: Generate a structured summary of webpage content
template: |
Please analyze the following webpage content and provide:
1. **Main Topic**: What is this page about?
2. **Key Points**: {{num_points}} most important points
3. **Target Audience**: Who is this content for?
{{#if focus}}4. **{{focus}} Analysis**: Specific insights about {{focus}}{{/if}}
Content:
{{content}}
arguments:
content:
description: Webpage content to summarize
required: true
num_points:
description: Number of key points to extract (default 5)
required: false
focus:
description: Specific aspect to focus on (e.g., technical, business, educational)
required: false
file-analysis:
description: Analyze files for specific purposes
template: |
Analyze the following files for {{analysis_type}}:
{{#if criteria}}Focus on: {{criteria}}{{/if}}
{{files}}
Please provide:
- Summary of findings
- Recommendations
- {{#if format}}Output in {{format}} format{{/if}}
arguments:
files:
description: File contents or paths to analyze
required: true
analysis_type:
description: Type of analysis (security, performance, quality, etc.)
required: true
criteria:
description: Specific criteria or standards to check against
required: false
format:
description: Output format (markdown, JSON, report, etc.)
required: false在Claude Desktop中使用提示:
- 点击
+消息输入中的图标 - 选择“从mcp添加此自定义项”
- 选择您的提示(例如,“摘要网页”)
- 填写参数-Claude将指导您完成必填和可选字段
3.配置克劳德桌面
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"my-tools": {
"command": "uvx",
"args": ["mcp-this", "--config-path", "/path/to/my-tools.yaml"]
}
}
}4.重新启动克劳德桌面
您的工具和提示现在可用!克劳德可以:
- 获取web内容并查找大文件 使用自定义CLI工具
- 使用结构化提示模板 用于指导分析和总结
______________________________________________________________________
配置格式
工具定义
tools:
tool-name:
description: "Description with usage examples"
execution:
command: "command-template >"
parameters:
parameter1:
description: "Parameter description"
required: true
optional_param:
description: "Optional parameter description"
required: false要点:
- 使用 `` 命令中的占位符
- 标记的参数
required: false如果没有提供,则从命令中删除 - 使用
command: >-对于多行命令(不是command: |)
快速定义
prompts:
prompt-name:
description: "Prompt description"
template: |
Template with {{argument}} placeholders.
{{#if optional_arg}}Conditional: {{optional_arg}}{{/if}}
arguments:
argument:
description: "Argument description"
required: true
optional_arg:
description: "Optional argument"
required: false提示与工具:
- 工具 执行命令并使用 `` 语法
- 提示 生成文本模板并使用
{{argument}}使用Handlebars的语法
______________________________________________________________________
配置方法
| 方法 | 用法 | 示例 |
|---|---|---|
| YAML文件 | `--config-path | |
| ` | --config-path ./my-tools.yaml | |
| JSON字符串 | --config-value | --config-value '{"tools":{...}}' |
| 环境变量 | MCP_THIS_CONFIG_PATH | export MCP_THIS_CONFIG_PATH=./tools.yaml |
| 内置预设 | --preset | --preset default |
预构建工具和提示集合(预设)
为了方便起见, mcp-this 包括现成的工具和提示集合:
default-安全的只读工具(文件探索、网络抓取)editing-文件操作工具(创建、编辑、删除)github-GitHub集成工具(PR分析、存储库操作)+专业提示(代码审查、创建PR描述)
快速使用:
{
"mcpServers": {
"mcp-this": {
"command": "uvx",
"args": ["mcp-this", "--preset", "default"]
}
}
}看 README_PRESETS.md 获取完整的预设文档、工具列表、依赖关系和高级设置。
______________________________________________________________________
真实世界的例子
开发工作流工具
tools:
git-status-summary:
description: Get a concise overview of git repository status
execution:
command: >-
echo "=== Branch ===" && git branch --show-current &&
echo "=== Status ===" && git status --porcelain &&
echo "=== Recent Commits ===" && git log --oneline -5
parameters: {}
test-runner:
description: Run tests with optional pattern matching
execution:
command: >-
if [ -n "" ]; then
npm test -- --grep ""
else
npm test
fi
parameters:
pattern:
description: Test pattern to match (optional)
required: false
docker-container-logs:
description: Get logs from a Docker container
execution:
command: docker logs > --tail
parameters:
container_name:
description: Name or ID of the Docker container
required: true
lines:
description: Number of log lines to show (default 100)
required: false
default: "100"AI驱动的工作流提示
prompts:
refactor-code:
description: Guide code refactoring with specific goals and constraints
template: |
Please refactor the following code with these objectives:
{{#if goals}}
**Goals:**
{{goals}}
{{/if}}
**Constraints:**
- Maintain existing functionality
- {{#if language}}Follow {{language}} best practices{{/if}}
- {{#if performance}}Optimize for {{performance}}{{/if}}
{{#if additional_constraints}}
- {{additional_constraints}}
{{/if}}
**Code to refactor:**{{code}}
Please provide:
1. Refactored code with explanations
2. Summary of changes made
3. Potential risks or considerations
arguments:
code:
description: Code to refactor
required: true
goals:
description: Specific refactoring goals (e.g., improve readability, reduce complexity)
required: false
language:
description: Programming language for best practices
required: false
performance:
description: Performance optimization target (speed, memory, etc.)
required: false
additional_constraints:
description: Any additional constraints or requirements
required: false
technical-documentation:
description: Generate comprehensive technical documentation
template: |
Create {{doc_type}} documentation for:
{{content}}
**Requirements:**
- Target audience: {{audience}}
{{#if style}}- Documentation style: {{style}}{{/if}}
{{#if sections}}- Include sections: {{sections}}{{/if}}
- {{#if detail_level}}Detail level: {{detail_level}}{{/if}}
{{#if examples}}**Include examples:** {{examples}}{{/if}}
Please structure the documentation with clear headings, examples, and actionable information.
arguments:
content:
description: Code, API, or system to document
required: true
doc_type:
description: Type of documentation (API, user guide, technical spec, etc.)
required: true
audience:
description: Target audience (developers, end-users, administrators, etc.)
required: true
style:
description: Documentation style (formal, conversational, tutorial, reference)
required: false
sections:
description: Specific sections to include
required: false
detail_level:
description: Level of detail (high-level, detailed, comprehensive)
required: false
examples:
description: Types of examples to include
required: false系统管理工具
tools:
port-checker:
description: Check what process is using a specific port
execution:
command: lsof -i :
parameters:
port:
description: Port number to check
required: true
service-status:
description: Check the status of a system service
execution:
command: systemctl status >
parameters:
service_name:
description: Name of the service to check
required: true
disk-usage-analyzer:
description: Analyze disk usage and find largest directories
execution:
command: >-
echo "=== Disk Usage Summary ===" &&
df -h &&
echo "=== Largest Directories ===" &&
du -h | sort -hr | head -10
parameters:
path:
description: Path to analyze (default current directory)
required: false
default: "."______________________________________________________________________
Python API用法
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
# Using custom configuration
server_params = StdioServerParameters(
command='uvx',
args=['mcp-this', '--config-path', '/path/to/tools.yaml'],
)
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
# List available tools
tools = await session.list_tools()
print([tool.name for tool in tools.tools])
# Use a tool
result = await session.call_tool(
'git-status-summary',
{}
)
print(result.content[0].text)______________________________________________________________________
安装选项
通过uvx(推荐)
# No installation needed - uvx runs tools in isolated environments
uvx mcp-this --config-path ./my-tools.yaml通过pip
pip install mcp-this
mcp-this --config-path ./my-tools.yaml来源
git clone https://github.com/your-username/mcp-this.git
cd mcp-this
uv sync
python -m mcp_this --config-path ./my-tools.yaml______________________________________________________________________
安全考虑
⚠️ 重要提示: mcp-this 根据您的配置执行shell命令。始终:
- 仅使用受信任的配置文件
- 验证生产环境中的用户输入
- 以最低限度的必要权限运行
- 考虑集装箱化以提高安全性
- 审查危险操作的命令
请参阅 安全部分 详细的安全指导。
______________________________________________________________________
发展
设置
git clone https://github.com/your-username/mcp-this.git
cd mcp-this
uv sync测试
make tests # Run all tests
make unittests # Unit tests only
make linting # Linting only
make open_coverage # View coverage report建筑
make package-build # Build package
make package-publish # Publish (requires UV_PUBLISH_TOKEN)______________________________________________________________________
