Resource Template Completions

πŸ‘¨β€πŸ’Ό Now that our users have a bunch of entries and tags, they'll want to be able to search for them. Let's add some completions to our resource templates to make this possible.
This involves a simple callback as a part of our ResourceTemplate definition. For example:
import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js'

const NAMES = ['Alice', 'Bob', 'Charlie']

agent.server.registerResource(
	'hello',
	new ResourceTemplate('hello://{name}', {
		complete: {
			// this is an object with a key for each parameter in the resource template
			// it accepts the value the user has typed so far and returns a string array
			// of valid matching values
			async name(value) {
				// this is a function that returns a string array of valid matching values
				// for the `name` parameter
				return NAMES.filter((name) => name.includes(value))
			},
		},
		list: async () => {
			// ...
		},
	}),
	{
		title: 'Hello',
		description: 'Say hello to anyone by name!',
	},
	async (uri, { name }) => {
		// ...
	},
)
You'll also want to add a completions capability to your server.
Test this out by clicking on a resource template and typing in a value for the parameter.

Please set the playground first

Loading "Resource Template Completions"
Loading "Resource Template Completions"

Access Denied

You must login or register for the workshop to view the diff.

Check out this video to see how the diff tab works.