Skip to main content
Glama

MCP Lambda Server

by markvp

MCP 람다 SAM

AWS Lambda와 SAM을 사용한 MCP(Model Context Protocol) 구현.

개요

이 프로젝트는 두 가지 고유한 인터페이스를 갖춘 모델 컨텍스트 프로토콜의 서버리스 구현을 제공합니다.

  1. 시스템 구성 (관리):
    • MCP 도구, 리소스 및 프롬프트 등록
    • IAM 권한 관리
    • 인프라 설정 및 구성
  2. 시스템 사용 (클라이언트):
    • SSE 연결 설정
    • 명령 보내기
    • 스트리밍 응답 수신

건축학

인어 다이어그램

다음 Mermaid 구문을 사용하여 시스템을 시각화할 수 있습니다.

지엑스피1

  • MCP Lambda는 시작 시와 요청을 처리할 때 등록 테이블에서 등록을 읽습니다.
  • 세션 상태를 유지하기 위해 세션 테이블을 사용합니다.
  • 등록 테이블에 저장된 ARN을 사용하여 등록된 Lambda 도구를 동적으로 호출합니다 .

시스템 구성 가이드(관리자)

이 섹션은 MCP 서버를 구성하고 관리해야 하는 시스템 관리자를 위한 것입니다.

전개

npx @markvp/mcp-lambda-sam deploy

이 명령을 실행하면 관리 구성을 묻는 대화형 메시지가 표시됩니다.

  • 스택 이름(여러 인스턴스의 경우)
  • AWS 지역
  • VPC 구성(선택 사항)

권한 개요

MCP 엔드포인트에 액세스하려면 사용자와 클라이언트에게 관련 함수 URL을 호출할 수 있는 IAM 권한이 있어야 합니다.

  • 관리자 : mcp-registration 함수 URL을 호출할 수 있어야 합니다.
  • 클라이언트 : mcp 함수 URL을 호출할 수 있어야 합니다.

IAM 정책이나 aws lambda add-permission 사용하여 액세스 권한을 부여할 수 있습니다(아래 참조).

AWS CLI를 통한 권한 할당

등록 기능 호출에 대한 권한을 부여하려면 URL을 사용 하세요.

aws lambda add-permission \ --function-name <registration-function-name> \ --statement-id allow-registration \ --action lambda:InvokeFunctionUrl \ --principal "*" \ --function-url-auth-type IAM

MCP 기능 URL (SSE 및 메시지)을 호출할 수 있는 권한을 부여하려면 다음을 수행합니다.

aws lambda add-permission \ --function-name <mcp-function-name> \ --statement-id allow-mcp \ --action lambda:InvokeFunctionUrl \ --principal "*" \ --function-url-auth-type IAM

<registration-function-name><mcp-function-name> 실제 Lambda 함수 이름으로 바꾸세요.

등록 API

다음 엔드포인트를 사용하여 MCP 도구, 리소스 및 프롬프트를 관리하세요.

새 도구 등록
awscurl -X POST ${REGISTRATION_URL}/register \ --region ap-southeast-2 \ --service lambda \ -H "Content-Type: application/json" \ -d '{ "type": "tool", "name": "example", "description": "Example tool", "lambdaArn": "arn:aws:lambda:region:account:function:name", "parameters": { "input": "string" } }'
등록 업데이트
awscurl -X PUT ${REGISTRATION_URL}/register/{id} \ --region ap-southeast-2 \ --service lambda \ -d '...'
등록 삭제
awscurl -X DELETE ${REGISTRATION_URL}/register/{id} \ --region ap-southeast-2 \ --service lambda
등록 목록
awscurl ${REGISTRATION_URL}/register \ --region ap-southeast-2 \ --service lambda

필수 IAM 권한

관리자를 위한

관리자는 등록을 관리하기 위해 다음과 같은 권한이 필요합니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "lambda:InvokeFunctionUrl", "Resource": "arn:aws:lambda:${region}:${account}:function:${stack-id}-mcp-registration", "Condition": { "StringEquals": { "lambda:FunctionUrlAuthType": "AWS_IAM" } } }] }

시스템 사용 가이드(클라이언트)

이 섹션은 MCP 서버를 사용하려는 고객을 위한 것입니다.

필수 IAM 권한

클라이언트는 MCP 서버를 사용하려면 다음 권한이 필요합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunctionUrl", "Resource": [ "arn:aws:lambda:${region}:${account}:function:${stack-id}-mcp", ], "Condition": { "StringEquals": { "lambda:FunctionUrlAuthType": "AWS_IAM" } } } ] }

서버에 연결

  1. SSE 연결 설정 :
const sse = new EventSource(SSE_URL, { headers: { Authorization: 'AWS4-HMAC-SHA256 ...', // Must be AWS SigV4 signed } }); sse.onmessage = (event) => { console.log(JSON.parse(event.data)); };

SSE에 대한 cURL 예시

awscurl -X GET "${MCP_URL}/sse" \ --region ap-southeast-2 \ --service lambda

첫 번째 이벤트에는 sessionId 포함됩니다. 메시지를 보낼 때 사용하세요.

  1. 명령 보내기 :
awscurl -X POST "${MCP_URL}/message?sessionId=session-123" \ --region ap-southeast-2 \ --service lambda \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "id": "1", "method": "example", "params": { "input": "hello" } }'

오류 처리

일반적인 클라이언트 오류
  • 401 : AWS 자격 증명이 잘못되었거나 누락되었습니다.
  • 403 : 권한이 부족합니다
  • 404 : 잘못된 세션 ID입니다.
  • 429 : 속도 제한을 초과했습니다.
문제 해결
  1. 연결 문제 :
    • AWS 자격 증명 확인
    • IAM 권한 확인
    • 네트워크 연결성 확보
  2. 명령 실행 오류 :
    • 세션 ID가 활성화되어 있는지 확인하세요
    • 명령 형식이 도구 등록과 일치하는지 확인합니다.
    • 매개변수가 스키마와 일치하는지 확인하세요.

요구 사항

  • AWS CLI 설치 및 구성
  • AWS SAM CLI 설치됨
  • Node.js 20.x 이상
  • 다음을 생성할 권한이 있는 AWS 계정:
    • 람다 함수
    • DynamoDB 테이블
    • IAM 역할
    • SQS 대기열

AWS SAM CLI 설정

AWS SAM CLI를 사용하여 이 애플리케이션을 로컬 또는 AWS에 배포하려면:

  1. AWS SAM CLI를 설치하세요: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html
  2. PATH에서 사용할 수 있는지 확인하세요.
    sam --version
  3. 애플리케이션을 빌드하고 배포합니다.
    sam build sam deploy --guided
  4. 프롬프트에 따라 스택 이름, 지역, 기능 및 매개변수 재정의를 구성합니다.

--guided 없이 sam deploy 다시 실행하면 저장된 구성을 사용할 수 있습니다.

설치

다음 네 가지 방법으로 이 애플리케이션을 설치하고 배포할 수 있습니다.

1. AWS Serverless Application Repository(SAR) 사용

MCP 서버를 배포하는 가장 쉬운 방법은 AWS Serverless Application Repository(SAR)를 사용하는 것입니다.

  • SAR 콘솔 로 이동
  • Mark Van Proctor의 mcp-lambda-sam 검색
  • 배포를 클릭하세요
  • 매개변수를 설정하세요:
    • StackIdentifier : 이 MCP 서버 인스턴스의 고유 ID
    • VpcEnabled : VPC에 배포하는 경우 true 로 설정
    • VpcIdSubnetIds : VpcEnabledtrue 인 경우에만 제공
  • 배포를 위한 프롬프트를 따르세요

또는 AWS CLI에서 배포할 수 있습니다.

aws serverlessrepo create-cloud-formation-change-set \ --application-id arn:aws:serverlessrepo:ap-southeast-2:522814717816:applications/mcp-lambda-sam \ --stack-name your-stack-name \ --capabilities CAPABILITY_IAM \ --parameter-overrides '[{"name":"StackIdentifier","value":"your-stack-id"}]'

2. npx(CLI) 사용하기

npx @markvp/mcp-lambda-sam deploy

이 명령을 실행하면 관리 구성을 묻는 대화형 메시지가 표시됩니다.

  • 스택 이름(여러 인스턴스의 경우)
  • AWS 지역
  • VPC 구성(선택 사항)

3. Install을 통한 프로그래밍 방식 사용

패키지를 설치하세요:

npm install @markvp/mcp-lambda-sam

패키지를 설치한 후에는 프로그래밍 방식으로 사용할 수 있습니다.

import { deploy } from '@markvp/mcp-lambda-sam'; // Usage example deploy();

4. 지역 개발 및 배치

패키지를 설치하세요:

npm install @markvp/mcp-lambda-sam

개발 변경 사항을 적용한 후에는 수동으로 배포할 수 있습니다.

npm run deploy

개발

# Install dependencies npm install # Lint npm run lint # Run tests npm test # Build npm run build # Deploy npm run deploy

SAR에 게시

이 프로젝트에 기여하고 SAR에 업데이트를 게시해야 하는 경우:

  1. 애플리케이션을 패키징합니다.
npm run package:sar
  1. SAR에 게시:
npm run publish:sar
  1. 애플리케이션을 공개합니다(한 번만 설정):
    • AWS 콘솔 > 서버리스 애플리케이션 저장소로 이동
    • 응용 프로그램을 선택하세요
    • "공유"를 클릭하고 "공개"를 선택하세요
    • 다음 공유 정책을 적용하세요: GXP25

특허

MIT

기여하다

  1. 저장소를 포크하세요
  2. 기능 브랜치를 생성하세요
  3. 변경 사항을 커밋하세요
  4. 지점으로 밀어 넣기
  5. 새로운 풀 리퀘스트 만들기
-
security - not tested
A
license - permissive license
-
quality - not tested

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

SSE 지원과 함께 AWS Lambda 함수에 대한 모델 컨텍스트 프로토콜 서버 인프라를 제공하는 Node.js 패키지로, 개발자가 MCP 도구와 프롬프트를 서버리스 함수로 구현할 수 있도록 합니다.

  1. 개요
    1. 건축학
      1. 인어 다이어그램
    2. 시스템 구성 가이드(관리자)
      1. 전개
      2. 권한 개요
      3. AWS CLI를 통한 권한 할당
      4. 등록 API
      5. 필수 IAM 권한
    3. 시스템 사용 가이드(클라이언트)
      1. 필수 IAM 권한
      2. 서버에 연결
      3. SSE에 대한 cURL 예시
      4. 오류 처리
    4. 요구 사항
      1. AWS SAM CLI 설정
        1. 설치
          1. AWS Serverless Application Repository(SAR) 사용
          2. npx(CLI) 사용하기
          3. Install을 통한 프로그래밍 방식 사용
          4. 지역 개발 및 배치
        2. 개발
          1. SAR에 게시
        3. 특허
          1. 기여하다

            Related MCP Servers

            • Amazon Web Services
              aws-mcp

              A
              security
              F
              license
              A
              quality
              A Model Context Protocol (MCP) server that enables AI assistants like Claude to interact with your AWS environment. This allows for natural language querying and management of your AWS resources during conversations. Think of better Amazon Q alternative.
              Last updated -
              3
              264
              TypeScript
              • Apple
            • A
              security
              A
              license
              A
              quality
              A comprehensive Model Context Protocol server that provides advanced Node.js development tooling for automating project creation, component generation, package management, and documentation with AI-powered assistance.
              Last updated -
              7
              2
              JavaScript
              MIT License
            • A
              security
              F
              license
              A
              quality
              An MCP server that provides tools for interacting with AWS S3 buckets, enabling direct access to S3 operations through the Model Context Protocol.
              Last updated -
              1
              Python
              • Apple
            • -
              security
              F
              license
              -
              quality
              A Node.js application that provides a Model Context Protocol server for interacting with Harbor container registry, supporting operations for projects, repositories, tags, and Helm charts.
              Last updated -
              TypeScript

            View all related MCP servers

            MCP directory API

            We provide all the information about MCP servers via our MCP API.

            curl -X GET 'https://glama.ai/api/mcp/v1/servers/markvp/mcp-lambda-sam'

            If you have feedback or need assistance with the MCP directory API, please join our Discord server