🤖 模板MCP服务器-AI代理
这个项目是一个 MCP(模型上下文协议)模板 将 AI 代理工具暴露为 MCP 服务器。借助它,您可以轻松创建和展示可供MCP兼容客户端(如Claude Desktop,Cursor等)使用的工具。
📋 索引
🎯 概览
此模板为构建能够:
- 显示工具 MCP客户
- 集成外部 API (例如Weather API,PokeAPI)
- 轻松扩展 具有新功能
- 通过Studio连接 遵循MCP协议
- 集中工具 通过单一服务
🔌 什么是MCP?
哦 模型上下文协议(MCP) 它是由 Anthropic 开发的一个协议,允许 AI 模型以标准化的方式访问外部工具和资源。MCP 服务器 :
- 通过通信 标准 或 超文本传输协议
- 曝光 工具(Tools) 客户可以调用
- 可以展示 资源(Resources) e 提示 也
- 遵循标准化的 JSON-RPC 协议
📁 项目结构
src/
├── mcp-server.ts # Servidor MCP principal
└── app/
└── tools/ # Ferramentas disponíveis
├── tool.service.ts # Centralizador de ferramentas
├── weather/ # Ferramentas de clima
│ ├── cityForecast.tool.ts
│ └── cityFutureForecast.tool.ts
└── pokemon/ # Ferramentas de Pokemon
└── getPokemon.tool.ts🔍 细节
/src/mcp-server.ts
- 配置 MCP 服务器
- 使用工具集中服务
- 管理工具列表和运行需求
- 通过 stdio 沟通
/src/app/tools/tool.service.ts
- 工具中心管理所有可用的工具
- 提供列出和获取工具实例的方法
- 易于添加新工具
/src/app/tools/[dominio]/
- 每个工具都是一个类:
- getTool()以 MCP 格式返回工具定义 - execute(): 执行工具逻辑
🛠️ 可用工具
1. 城市预测
获取特定城市的当前天气预报。
参数 :
city(string, 必填): 城市名称
2. 城市_未来_预测
获取特定城市的未来天气预报。
参数 :
city(string, 必填): 城市名称days(number, optional): 预测天数 (1-14)
3. get_pokemon
通过名称或ID获取有关Pokemon的信息。
参数 :
pokemon(string, 必填): Pokemon 名称或 ID
⚙️ 配置
环境变量
创建文件 .env 工程根 :
# Weather API Configuration (opcional, apenas para ferramentas de clima)
WEATHER_API_KEY=your_weather_api_key_here注: 工具 get_pokemon 不需要API密钥。
安装
# Instalar dependências
npm install
# Compilar o projeto
npm run build
# Executar o servidor MCP
npm start🚀 如何使用
1. 运行 MCP 服务器
MCP 服务器通过 stdio 运行,必须配置为兼容的 MCP 客户端。
# Desenvolvimento (com tsx)
npm run dev
# Produção (compilado)
npm run build
npm start2.配置程序无克劳德桌面
在 Claude Desktop 配置文件中添加配置:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 窗户: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"template-ai-agents": {
"command": "node",
"args": ["C:/caminho/para/seu/projeto/dist/mcp-server.js"],
"env": {
"WEATHER_API_KEY": "sua_chave_aqui"
}
}
}
}3. 在光标中配置
在 Cursor 中,您可以通过 MCP 设置配置 MCP 服务器。
4. 测试服务器
您可以直接通过命令行测试服务器:
# O servidor espera mensagens JSON-RPC via stdin
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | npm start🛠️ 创建新工具
步骤 1: 创建工具类
在创建新文件 /src/app/tools/[dominio]/[nome].tool.ts:
import { Tool } from '@modelcontextprotocol/sdk/types.js';
export class MinhaNovaTool {
getTool(): Tool {
return {
name: 'minha_nova_tool',
description: 'Descrição clara do que a ferramenta faz',
inputSchema: {
type: 'object',
properties: {
parametro: {
type: 'string',
description: 'Descrição do parâmetro',
},
},
required: ['parametro'],
},
};
}
async execute(args: { parametro: string }): Promise {
// Sua lógica aqui
// Pode chamar APIs externas, banco de dados, etc.
return { resultado: 'dados processados' };
}
}步骤 2: 在工具集中器中注册
将工具添加到 /src/app/tools/tool.service.ts:
import { MinhaNovaTool } from './dominio/minhaNovaTool.tool.js';
export class Tools {
private minhaNovaTool: MinhaNovaTool;
constructor() {
// ... outras ferramentas
this.minhaNovaTool = new MinhaNovaTool();
}
getTools(): Tool[] {
return [
// ... outras ferramentas
this.minhaNovaTool.getTool(),
];
}
getToolInstance(name: string): any {
switch (name) {
// ... outros cases
case 'minha_nova_tool':
return this.minhaNovaTool;
default:
return null;
}
}
}普罗托! 该工具将由MCP服务器通过集中器自动提供。
📜 可用脚本
# Desenvolvimento
npm run dev # Executa com tsx (hot-reload)
# Produção
npm run build # Compila TypeScript para JavaScript
npm start # Executa versão compilada
# Qualidade de Código
npm run lint # Executa ESLint
npm run format # Formata código com Prettier🔧 使用的技术
核心
- @模型上下文协议/sdkMCP 官方 TypeScript SDK
- TypeScript:超集类型do JavaScript
- Dotenv。环境变量管理
外部 API(示例)
- 天气API用于气候工具
- PokeAPI关于Pokemon的信息
🎯 下一步
- 添加自己的工具 按照例子
- 与您的内部API集成 创建特定工具
- 添加资源(Resources) 如有必要
- 添加提示 可重复使用的模板
- 实施身份验证 如有必要
- 添加日志 和 监测
- 配置CI/CD 用于自动部署
📚 额外资源
______________________________________________________________________
开发于❤️ 使用 Model Context Protocol
