MCP服务器生成器

面向Adobe I/O Runtime的MCP服务器生成模板,帮助开发者快速创建并部署基于TypeScript的Model Context Protocol服务器,使AI助手能够通过标准化协议连接自定义工具、资源和提示词。

  • by adobe
  • JavaScript
  • 混合部署
  • 11 星标
  • 更新于
在 GitHub 查看 adobe/generator-app-remote-mcp-server-generic

使用说明

generator-app-remote-mcp-server-generic

Adobe App Builder template for creating Model Context Protocol (MCP) servers using the official MCP TypeScript SDK and Adobe I/O Runtime.

What is this template?

Generate MCP servers that run on Adobe I/O Runtime. Connect AI assistants like Cursor, Claude Desktop, and other AI tools to your custom functions, data, and prompts through the standardized MCP protocol.

Key Features

  • 🔧 Official MCP TypeScript SDK: Built with @modelcontextprotocol/sdk v1.17.4
  • 📝 Type Safety: Zod schema validation for all parameters
  • 🚀 Serverless Ready: Deploy to Adobe I/O Runtime with auto-scaling
  • 🛠️ Complete MCP Implementation: Tools, Resources, and Prompts support
  • 🎨 MCP App UI: The weather tool renders an interactive, themed card (via @modelcontextprotocol/ext-apps) instead of plain text, as a starting example for building your own tool UIs
  • 🔐 Built-in Authentication: IMS token validation and API key support
  • 📚 Production Ready: Error handling, logging, and CORS included

Quick Start

Prerequisites

  • Node.js 20.19+, 22.13+, or 24+ for generated-app development (Adobe I/O Runtime target: Node.js 20)
  • Adobe I/O CLI: npm install -g @adobe/aio-cli
  • Adobe Developer Console project with I/O Runtime enabled

Generate Project

# Using Adobe I/O CLI , You will see template generator-app-remote-mcp-server-generic listed in the all templates list
aio app init

Deploy & Use

cd my-mcp-server
aio app use <your-workspace-config.json>
aio app deploy

Connect to your deployed MCP server in Cursor or Claude Desktop using the provided URL.

Claude Desktop Configuration

Add this to your Claude Desktop configuration file:

{
  "mcpServers": {
    "mcp-server-name": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://xxxx.adobeioruntime.net/api/v1/web/your-project/mcp-server"
      ]
    }
  }
}

Cursor configs

{
  "mcpServers": {
    "mcp-server-name": {
      "url": "https://<namespace>.adobeioruntime.net/api/v1/web/<xyz>/mcp-server",
      "type": "streamable-http"  
   }
  }
}

Example Test prompt

" Hey, Can you please ask #mcp-server-name# about weather in Noida? "

MCP Features

Tools: Interactive functions AI assistants can call (echo, calculator, weather) Resources: Static content access (documentation, data, files)
Prompts: Reusable prompt templates with parameters

All implemented using the official MCP TypeScript SDK

Weather Tool UI

The weather tool doesn't just return text - it links its result to an ui://weather/mcp-app.html resource via _meta.ui.resourceUri, so MCP Apps-capable hosts render a themed, animated weather card (sun/clouds/rain/snow) instead of a plain response. The UI source lives in actions/mcp-server/app-ui/src/weather/ (HTML/CSS/TypeScript, built with Vite) and is inlined into the deployed bundle at build time (npm run build:ui && npm run embed:ui, run automatically as part of npm run build), since Adobe I/O Runtime only deploys the single webpack bundle. Add more MCP App UIs by dropping a new app-ui/src/<name>/<name>.{html,ts,css} - the build scripts pick it up automatically.

Authentication

The generated MCP servers include built-in authentication support to secure your endpoints:

IMS Token Validation (Adobe Users)

Validate Bearer tokens via Adobe IMS userinfo endpoint. Ideal for Adobe employee or partner authentication.

Setup:

# Set in .env or app.config.yaml
AUTH_VALIDATE_IMS=true

Client Configuration (Cursor):

{
  "mcpServers": {
    "my-mcp": {
      "url": "https://namespace.adobeioruntime.net/api/v1/web/pkg/mcp-server",
      "type": "streamable-http",
      "headers": {
        "Authorization": "Bearer YOUR_IMS_TOKEN"
      }
    }
  }
}

Client Configuration (Claude Desktop):

{
  "mcpServers": {
    "my-mcp": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://namespace.adobeioruntime.net/api/v1/web/pkg/mcp-server",
        "--header",
        "Authorization:${IMS_TOKEN}"
      ],
      "env": {
        "IMS_TOKEN": "Bearer YOUR_IMS_TOKEN"
      }
    }
  }
}

API Key Authentication (Service-to-Service)

Simple key-based authentication for service-to-service communication.

Setup:

# Set in .env or app.config.yaml
SERVICE_API_KEY=your-secret-key-here

Client Configuration (Cursor):

{
  "mcpServers": {
    "my-mcp": {
      "url": "https://namespace.adobeioruntime.net/api/v1/web/pkg/mcp-server",
      "type": "streamable-http",
      "headers": {
        "x-api-key": "your-secret-key-here"
      }
    }
  }
}

Client Configuration (Claude Desktop):

{
  "mcpServers": {
    "my-mcp": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://namespace.adobeioruntime.net/api/v1/web/pkg/mcp-server",
        "--header",
        "x-api-key:${API_KEY}"
      ],
      "env": {
        "API_KEY": "your-secret-key-here"
      }
    }
  }
}

No Authentication (Development Only)

Leave both variables unset for open access during development. Not recommended for production.

Security Best Practices:

  • Always enable authentication in production deployments
  • Use strong random values for SERVICE_API_KEY
  • Never commit secrets to version control
  • Rotate API keys regularly

Development

Testing the Generator

# Run unit tests
npm test

# Test end-to-end generation
npm run e2e

Customizing the Template

  1. Modify Templates: Edit files in src/templates/
  2. Update Generator: Modify src/index.js for prompts/logic
  3. Extend Features: Add capabilities in src/templates/actions/mcp-server/tools.js

👥 Contributors

Resources

License

Apache V2 License - see LICENSE for details.