English | 日本語
This library provides a function calling adapter for the Model Context Protocol (MCP).
You can use standardized MCP Server implementations directly with function calling through this library.
pnpm add mcp-function-calling-adapter
Here's an example using it with the OpenAI API:
import { McpFunctionCallingAdapter } from "mcp-function-calling-adapter"
const adapter = new McpFunctionCallingAdapter("example", {
"sequential-thinking": {
command: "npx",
args: ["-y", "@modelcontextprotocol/server-sequential-thinking"],
},
})
const openai = new OpenAI({
apiKey: "your api key here",
})
try {
await adapter.startServers()
const messages = [
{
role: "user",
content: "What's the weather like in Paris today?",
},
]
const completion = await openai.chat.completions.create({
model: "gpt-4o-mini",
messages,
tools: adapter.getTools().map((tool) => ({
type: "function",
function: {
name: tool.name,
description: tool.description ?? "",
parameters: tool.inputSchema,
},
})),
tool_choice: "auto",
})
// Call tool
const toolCall = completion.choices.at(0)?.message.tool_calls?.at(0)
if (toolCall && adapter.isRegisteredTool(toolCall.function.name)) {
const response = await adapter.executeTool(
toolCall.function.name,
JSON.parse(toolCall.function.arguments)
)
messages.push(completion.choices[0].message)
messages.push({
role: "tool",
tool_call_id: toolCall.id,
content: response.content.toString(),
})
}
} finally {
await adapter.clean()
}
Starts the MCP servers and loads available tools.
Disconnects from the MCP servers.
Returns a list of available tools. The response includes the tool name, description, and input JSONSchema, which can be directly used for function calling schema definitions.
Checks if a tool with the specified name is registered and available for use.
-
name
: The name of the tool to check - Returns:
boolean
-true
if the tool is registered,false
otherwise
Executes a tool with the specified name and returns the response from the MCP Server.
-
name
: The name of the tool to execute -
args
: Arguments to pass to the tool
We welcome contributions! Please see our Contributing Guidelines for details on how to submit pull requests, report issues, and contribute to the project.
- Clone the repository
- Install dependencies:
pnpm install
- Run tests:
pnpm test
- Build:
pnpm build
See CHANGELOG.md for a list of changes and version history.
This project is licensed under the MIT License - see the LICENSE file for details.