App2Chat MCP模板
公共模板 用于创建与兼容的MCP(模型上下文协议)服务器 应用2帽子 市场
此模板提供了开发MCP服务器的结构和兼容性要求,这些服务器可以集成到 应用2帽子 平台。
🌟 什么是App2Chat?
应用2帽子 是一个人工智能驱动的对话式API平台,使任何API都有可能在WhatsApp、Telegram、Discord和其他消息平台上作为对话联系人运行。
App2Chat MCP市场
这 MCP市场 是一个精心策划的第三方API集成集合,扩展了App2Chat机器人程序的功能。用户可以通过MCP服务器增强其人工智能机器人中集成的机器人第三方API,而不仅仅是调用自己的API端点。
设置很简单: 上传OpenAPI文件→ 选择市场MCP→ 获得一个AI驱动的聊天机器人,可以通过自然对话与多个API进行交互。
应用2帽子 处理所有部署、基础设施和传输协议—您将重点放在API集成上。
🎯 此模板提供什么
- ✅ 应用2帽子 兼容结构 -遵循市场整合的确切要求
- ✅ 传输协议兼容性 -与合作 应用程序2 内部传输层
- ✅ 标准化错误处理 -正确的错误格式和分类
- ✅ 工具命名约定 -工具发现所需的命名模式
- ✅ 测试框架 -提交前验证兼容性
- ✅ 无基础设施复杂性 -纯粹关注您的API逻辑
🚀 快速开始
1.使用此模板
git clone https://github.com/app2chat/public-marketplace-mcp-template.git your-api-mcp
cd your-api-mcp2.自定义您的集成
将这些占位符替换为 src/mcp-server.js:
| 占位符 | 描述 | 示例 |
|---|---|---|
{{API_NAME}} | API名称(小写,无空格) | weather, finance, notebook |
{{API_BASE_URL}} | API的基本URL | https://api.mydomain.com |
3.实施API工具
在 createTools() 方法,将示例工具替换为API端点:
createTools() {
return {
// REQUIRED: Tool names must be prefixed with your API name
[`${this.apiName}_get_repositories`]: {
description: "List user repositories",
inputSchema: {
type: "object",
properties: {
user: { type: "string", description: "GitHub username" },
type: { type: "string", enum: ["public", "private", "all"] }
},
required: ["user"]
},
handler: async (params) => {
try {
const response = await this.makeAPIRequest('GET', `/users/${params.user}/repos`, params);
return this.formatSuccessResponse(response);
} catch (error) {
return this.formatErrorResponse(`${this.apiName}_get_repositories`, error);
}
}
},
// Add more tools...
};
}4.配置身份验证
更新 getAuthHeaders() API身份验证的方法:
getAuthHeaders() {
return {
// Choose your API's authentication method:
'Authorization': `Bearer ${this.apiKey}`, // Bearer token
// 'X-API-KEY': this.apiKey, // API key header
// 'Authorization': `Basic ${btoa(this.apiKey + ':')}`, // Basic auth
'User-Agent': `App2Chat-${this.apiName}-MCP/${this.version}`,
'Accept': 'application/json'
};
}5.测试您的集成
npm test这验证了App2Chat兼容性要求。
📋 应用2帽子 需求
✅ 工具命名约定
- 必需:所有工具必须以API名称为前缀
- 格式:
${apiName}_action_resource - 示例:
weather_get_forecast,finance_get_balance,notebook_create_page
✅ 响应格式
- 成功响应:使用
formatSuccessResponse(data) - 错误响应:使用
formatErrorResponse(toolName, error)随着isError: true
✅ 所需方法
您的MCP类必须实现这些方法(包含在模板中):
handleMCPRequest(request)-处理JSON-RPC请求getServerInfo()-提供服务器元数据validateConfiguration()-验证设置
✅ 输入模式
所有工具都必须具有完整的输入模式:
inputSchema: {
type: "object",
properties: {
param_name: {
type: "string",
description: "Clear parameter description"
}
},
required: ["param_name"]
}🔧 模板结构
📁 your-api-mcp/
├── 📄 src/mcp-server.js # Main MCP server class
├── 📄 test/test-mcp.js # Compatibility test suite
├── 📄 package.json # Package configuration
├── 📄 README.md # This documentation
└── 📄 examples/ # Usage examples (optional)🧪 测试和验证
运行兼容性测试
npm test此测试套件验证:
- ✅ 工具命名约定
- ✅ 响应格式
- ✅ 错误处理
- ✅ 配置完整性
- ✅ JSON-RPC协议合规性
测试覆盖率
测试框架检查:
- 服务器初始化
- 工具发现(
tools/list) - 工具执行(
tools/call) - 无效工具的错误处理
- 配置验证
- 符合命名约定
🎨 API集成模式
GET端点
[`${this.apiName}_get_data`]: {
handler: async (params) => {
try {
const response = await this.makeAPIRequest('GET', '/endpoint', params);
return this.formatSuccessResponse(response);
} catch (error) {
return this.formatErrorResponse('tool_name', error);
}
}
}POST端点
[`${this.apiName}_create_resource`]: {
handler: async (params) => {
try {
const response = await this.makeAPIRequest('POST', '/endpoint', params);
return this.formatSuccessResponse(response);
} catch (error) {
return this.formatErrorResponse('tool_name', error);
}
}
}身份验证模式
承载令牌
getAuthHeaders() {
return {
'Authorization': `Bearer ${this.apiKey}`,
'Accept': 'application/json'
};
}API密钥头
getAuthHeaders() {
return {
'X-API-KEY': this.apiKey,
'Accept': 'application/json'
};
}基本身份验证
getAuthHeaders() {
return {
'Authorization': `Basic ${btoa(this.apiKey + ':')}`,
'Accept': 'application/json'
};
}🛡️ 错误处理最佳实践
API错误分析
定制 handleAPIError() 对于API的错误格式:
async handleAPIError(response) {
const errorText = await response.text();
let errorMessage;
try {
const errorJson = JSON.parse(errorText);
// Adapt to your API's error structure
errorMessage = errorJson.error?.message ||
errorJson.message ||
'Unknown error';
} catch {
errorMessage = errorText || `HTTP ${response.status} error`;
}
throw new Error(`${this.apiName} API error (${response.status}): ${errorMessage}`);
}错误响应格式
始终使用标准化的错误格式:
return {
content: [{
type: "text",
text: `Error message here`
}],
isError: true // REQUIRED for App2Chat error detection
};📤 提交至 应用2帽子 市场
先决条件
- ✅ 所有测试均通过(
npm test) - ✅ 真正的API测试完成
- ✅ 文件齐全
- ✅ 没有剩余的占位符值
提交流程
- 打包您的MCP:确保您的代码遵循此模板结构
- 通过GitHub提交:使用MCP创建公共存储库
- 应用2帽子 审查:我们的团队将审查兼容性和安全性
- 整合:一旦获得批准, 应用2帽子 处理所有部署和基础架构
- 市场:您的MCP可用于 应用2帽子 用户
什么 应用2帽子 手柄
- ✅ 部署基础设施 -Cloudflare Workers,无服务器扩展
- ✅ 传输协议 -HTTP、WebSocket和内部路由
- ✅ 认证 -用户API密钥管理和安全
- ✅ 监控 -健康检查、错误跟踪、性能指标
- ✅ 更新 -自动部署已批准的更新
你提供什么
- ✅ MCP服务器逻辑 -遵循此模板的API集成
- ✅ 工具定义 -完整的输入模式和描述
- ✅ 错误处理 -正确的错误格式和分类
- ✅ 文档 -清晰的设置和使用说明
🔍 示例实现
了解真正的API集成的外观:
class GitHubMCPServer extends App2ChatMCPServer {
constructor(apiKey) {
super(apiKey);
this.apiName = 'github';
this.baseUrl = 'https://api.github.com';
}
createTools() {
return {
github_get_user: {
description: "Get GitHub user information",
inputSchema: {
type: "object",
properties: {
username: { type: "string", description: "GitHub username" }
},
required: ["username"]
},
handler: async (params) => {
try {
const response = await this.makeAPIRequest('GET', `/users/${params.username}`);
return this.formatSuccessResponse(response);
} catch (error) {
return this.formatErrorResponse('github_get_user', error);
}
}
}
};
}
getAuthHeaders() {
return {
'Authorization': `token ${this.apiKey}`,
'Accept': 'application/vnd.github.v3+json',
'User-Agent': `App2Chat-github-MCP/${this.version}`
};
}
}❓ 常见问题
Q: 我需要处理部署吗?
A: 不! 应用2帽子 处理所有部署、基础设施和扩展。您只提供MCP服务器逻辑。
Q: 我需要支持哪些传输协议?
A: 没有! 应用程序2 传输层处理HTTP、WebSocket和内部路由。您的MCP只需实施 handleMCPRequest 方法。
Q: 用户API密钥是如何管理的?
A. 应用2帽子 处理这个。 用户在 应用2帽子 接口,它们被安全地传递给您的MCP服务器构造函数。
Q: 我可以使用外部依赖关系吗?
A: 是的,但尽量减少它们。 应用2帽子 将审查所有安全依赖关系。如果可能的话,更喜欢内置的Node.js功能。
Q: 如何更新我的MCP?
A: 通过GitHub提交更新。 应用2帽子 将自动审查和部署已批准的更新。
Q: 如果我的API有费率限制怎么办?
A: 在代码中处理它们。 在您的系统中实施适当的费率限制处理 makeAPIRequest 方法。
📚 额外资源
🆘 支持
- 模板问题: 创建问题
- 集成帮助: App2Chat文档
- 市场问题:联系App2Chat支持团队
📄 许可证
此模板根据MIT许可证提供。您的实现可以使用任何兼容的许可证。
______________________________________________________________________
准备好构建MCP集成了吗? 从自定义开始 src/mcp-server.js 跑步 npm test 验证兼容性! 🚀
