MCP Fusion/Integrations and federation/AWS connectors

AWS connectors

Ask AI about Vinkius

Expose tagged AWS Lambda functions and Step Functions as MCP tools with typed adapters, deterministic discovery and MVA interception around the payload.

AWS is often where the real business logic already runs. MCP Fusion's AWS package gives an agent a typed MCP surface over Lambda functions and Step Functions, while keeping discovery, annotations and response shaping in one connector boundary.

Lambda discovery

typescript
import { LambdaClient } from '@aws-sdk/client-lambda';
import { createAwsConnector, createLambdaAdapter } from '@mcpfusion/aws';

const aws = await createAwsConnector({
  lambdaClient: await createLambdaAdapter(
    new LambdaClient({ region: 'us-east-1' }),
  ),
  pollInterval: 60_000,
  onChange: () => server.notification({
    method: 'notifications/tools/list_changed',
  }),
});

for (const tool of aws.tools()) {
  registry.register(defineTool(tool.name, tool.config));
}

The verified connector config accepts an optional Lambda client, Step Functions client, tag filter, enableLambda (default true), enableStepFunctions (default false), pollInterval, onChange and onError. Discovery is deliberately opt-in by tag: the default filter requires mcp:expose=true.

Tags are the AWS allowlist

The package defines tag keys for exposure, group, action, read-only, destructive behavior and Step Functions type:

TagMeaning
mcp:expose=trueeligible for discovery
mcp:groupMCP namespace
mcp:actionaction name inside the namespace
mcp:readOnlyread-only annotation
mcp:destructivedestructive annotation
mcp:sfn-typeStep Functions execution mode

LambdaDiscovery and StepFunctionDiscovery produce summaries, then synthesizeLambdaTools and synthesizeStepFunctionTools produce tool configurations. synthesizeAll combines the discovered set, and toToolName gives it a stable MCP name.

Manual AWS tools

Discovery is not the only path. For a critical function with a contract that should not change when tags change, define it directly:

typescript
import { defineAwsTool } from '@mcpfusion/aws';

const charge = defineAwsTool({
  name: 'payments.charge',
  arn: 'arn:aws:lambda:us-east-1:123:function:charge',
  description: 'Charge an approved payment',
  annotations: {
    readOnlyHint: false,
    destructiveHint: true,
  },
});

The manual config requires the ARN and accepts a description and MCP annotations. The returned config still needs the normal registry, Presenter and middleware composition.

Step Functions

Set enableStepFunctions: true and provide the Step Functions client. The adapter exposes synchronous or asynchronous execution according to the discovered mcp:sfn-type tag. The MVA boundary intercepts the AWS payload before it becomes model-visible: the generated action can attach a Presenter and redact fields just like a handwritten tool.

AWS credentials and tenant boundaries

The AWS package does not decide your IAM policy or tenant mapping. Create the client with the credentials and region your deployment is allowed to use, resolve tenant identity in contextFactory, and keep account-specific identifiers out of model-controlled arguments. If the function needs a buyer-provided vendor key, use BYOC credentials, not a field in the tool schema.

The README contains older examples using non-exported discovery names. The source barrel is authoritative: use createAwsConnector, defineAwsTool, the adapters, discovery classes and synthesis functions listed above.

Next steps