This simple Model Context Protocol (MCP) client with command line interface demonstrates the use of MCP server tools by the LangChain ReAct Agent.
When testing LLM and MCP servers, their settings can be conveniently configured via a configuration file, such as the following:
{
"llm": {
"model_provider": "openai",
"model": "gpt-4o-mini",
},
"mcp_servers": {
"fetch": {
"command": "uvx",
"args": [
"mcp-server-fetch"
]
},
"weather": {
"command": "npx",
"args": [
"-y",
"@h1deya/mcp-server-weather"
]
},
// Auto-detection: tries Streamable HTTP first, falls back to SSE
"remote-mcp-server": {
"url": "https://${SERVER_HOST}:${SERVER_PORT}/..."
},
// Example of authentication via Authorization header
"github": {
"type": "http", // recommended to specify the protocol explicitly when authentication is used
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer ${GITHUB_PERSONAL_ACCESS_TOKEN}"
}
},
}
}
It leverages a utility function convertMcpToLangchainTools()
from
@h1deya/langchain-mcp-tools
.
This function handles parallel initialization of specified multiple MCP servers
and converts their available tools into an array of LangChain-compatible tools
(StructuredTool[]
).
This client supports both local (stdio) MCP servers as well as remote (Streamable HTTP/SSE/WebSocket) MCP servers that are accessible via a simple URL. This client only supports text results of tool calls.
For the convenience of debugging MCP servers, this client prints local (stdio) MCP server logs to the console.
LLMs from Anthropic, OpenAI and Google (GenAI) are currently supported.
A python version of this MCP client is available here
- Node.js 16+
- npm 7+ (
npx
) to run Node.js-based MCP servers - [optional]
uv
(uvx
) installed to run Python-based MCP servers - API keys from Anthropic, OpenAI, and/or Google GenAI
as needed.
-
Install dependencies:
npm install
-
Setup API keys:
cp .env.template .env
- Update
.env
as needed. .gitignore
is configured to ignore.env
to prevent accidental commits of the credentials.
- Update
-
Configure LLM and MCP Servers settings
llm_mcp_config.json5
as needed.- The configuration file format
for MCP servers follows the same structure as
Claude for Desktop,
with one difference: the key name
mcpServers
has been changed tomcp_servers
to follow the snake_case convention commonly used in JSON configuration files. - The file format is JSON5, where comments and trailing commas are allowed.
- The format is further extended to replace
${...}
notations with the values of corresponding environment variables. - Keep all the credentials and private info in the
.env
file and refer to them with${...}
notation as needed.
- The configuration file format
for MCP servers follows the same structure as
Claude for Desktop,
with one difference: the key name
Run the app:
npm start
Run in verbose mode:
npm run start:v
See commandline options:
npm run start:h
At the prompt, you can simply press Enter to use example queries that perform MCP server tool invocations.
Example queries can be configured in llm_mcp_config.json5