专栏名称: 阿里云开发者
阿里巴巴官方技术号,关于阿里的技术创新均将呈现于此
目录
相关文章推荐
51好读  ›  专栏  ›  阿里云开发者

自主构建MCP,轻松实现云端部署!

阿里云开发者  · 公众号  · 科技公司  · 2025-04-24 18:00

正文

请到「今天看啥」查看全文


https://bailian.console.aliyun.com/?tab=api#/api/?type=app ,官方API实现对百炼应用的调用如下:

curl -X POST https://dashscope.aliyuncs.com/api/v1/apps/YOUR_APP_ID/completion \--header "Authorization: Bearer $DASHSCOPE_API_KEY" \--header 'Content-Type: application/json' \--data '{    "input": {        "prompt""你是谁?"    },    "parameters":  {},    "debug": {}}'

我们只需要将上述的API封装为MCP即可。

1.2、将应用的API封装为MCP应用,参考如下代码

index.ts 当中写入如下内容

#!/usr/bin/env node
import { Server } from "@modelcontextprotocol/sdk/server/index.js";import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";import {  CallToolRequestSchema,  ListToolsRequestSchema,from "@modelcontextprotocol/sdk/types.js";const MARKET_RESEARCH_ASSISTANT = {  name"market_research_tool",  description:  "This is an intelligent market research report generation assistant, specifically designed to efficiently and professionally build research plans.",  inputSchema: {    type"object",    properties: {      query: {        type"string",        description"Search query (max 400 chars, 50 words)"      }    },    required: ["query"],  },};// Server implementationconst server = new Server(    {      name"bailian-mcp-workflow-server",      version"0.1.0",    },    {      capabilities: {        tools: {},      },    });// Check for API keyconst DASHSCOPE_API_KEY = process.env.DASHSCOPE_API_KEY!;if (!DASHSCOPE_API_KEY) {  console.error("Error: DASHSCOPE_API_KEY environment variable is required");  process.exit(1);}const APP_ID = process.env.APP_ID!;if (!APP_ID) {  console.error("Error: APP_ID environment variable is required");  process.exit(1);}async function performWebMarketResearch(query: any){  const url = 'https://dashscope.aliyuncs.com/api/v1/apps/'+APP_ID+'/completion';  // 构造请求体x`x`x`x`  const requestBody = {    "input": {        "prompt": query    },    "parameters":  {},    "debug": {}  };  const response = await fetch(url, {    method'POST'// 修改为 POST 请求    headers: {      'Content-Type''application/json'// 指定请求体为 JSON 格式      'Authorization'"Bearer "+DASHSCOPE_API_KEY    },    bodyJSON.stringify(requestBody) // 将请求体序列化为 JSON 字符串  });
  if (!response.ok) {    thrownew Error(`Bailian API error: ${response.status} ${response.statusText}\n${await response.text()}`);  }  const descriptionsData = await response.json(); // 解析响应 JSON 数据  const strjson = JSON.stringify(descriptionsData)  return strjson;}// Tool handlersserver.setRequestHandler(ListToolsRequestSchemaasync () => ({  tools: [MARKET_RESEARCH_ASSISTANT],}));server.setRequestHandler(CallToolRequestSchemaasync (request) => {  try {    const { name, arguments: args } = request.params;    if (!args) {      thrownew Error("No arguments provided");    }    switch (name) {      case"market_research_tool": {        const { query } = args;        const results = await performWebMarketResearch(query);        return {          content: [{ type"text"text: results }],          isErrorfalse,        };      }      default:        return {          content: [{ type"text"text`Unknown tool: ${name}` }],          isErrortrue,        };    }  } catch (error) {    return {      content: [        {          type"text",          text`Error: ${error instanceof Error ? error.message : String(error)}`,        },      ],      isErrortrue,    };  }});async function runServer(){  const transport = new StdioServerTransport();  await server.connect(transport);  console.error("Bailian Mcp Workflow Server running on stdio");}runServer().catch((error) => {  console.error("Fatal error running server:", error);  process.exit(1);});

1.3、解释一下上述代码

核心功能

  • 提供一个名为 market_research_tool 的市场研究工具。

  • 支持通过 API 调用执行市场研究任务。

  • 基于用户输入的查询(Query),调用阿里云 DashScope API 获取市场研究结果。

  • 以 JSON 格式返回研究结果,便于后续处理。

初始化 Server

代码首先创建了一个 Server 实例,该实例基于







请到「今天看啥」查看全文