mcp-use
Version:
A utility library for integrating Model Context Protocol (MCP) with LangChain, Zod, and related tools. Provides helpers for schema conversion, event streaming, and SDK usage.
41 lines (40 loc) • 1.68 kB
JavaScript
import { SystemMessage } from '@langchain/core/messages';
export function generateToolDescriptions(tools, disallowedTools) {
const disallowedSet = new Set(disallowedTools ?? []);
const descriptions = [];
for (const tool of tools) {
if (disallowedSet.has(tool.name))
continue;
const escaped = tool.description
.replace(/\{/g, '{{')
.replace(/\}/g, '}}');
descriptions.push(`- ${tool.name}: ${escaped}`);
}
return descriptions;
}
export function buildSystemPromptContent(template, toolDescriptionLines, additionalInstructions) {
const block = toolDescriptionLines.join('\n');
let content;
if (template.includes('{tool_descriptions}')) {
content = template.replace('{tool_descriptions}', block);
}
else {
console.warn('`{tool_descriptions}` placeholder not found; appending at end.');
content = `${template}\n\nAvailable tools:\n${block}`;
}
if (additionalInstructions) {
content += `\n\n${additionalInstructions}`;
}
return content;
}
export function createSystemMessage(tools, systemPromptTemplate, serverManagerTemplate, useServerManager, disallowedTools, userProvidedPrompt, additionalInstructions) {
if (userProvidedPrompt) {
return new SystemMessage({ content: userProvidedPrompt });
}
const template = useServerManager
? serverManagerTemplate
: systemPromptTemplate;
const toolLines = generateToolDescriptions(tools, disallowedTools);
const finalContent = buildSystemPromptContent(template, toolLines, additionalInstructions);
return new SystemMessage({ content: finalContent });
}