MCP Trader Server
by wshobson
# MCP Client Using LangChain / Python [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/hideya/langchain-mcp-tools-py/blob/main/LICENSE)
This simple [Model Context Protocol (MCP)](https://modelcontextprotocol.io/)
client demonstrates the use of MCP server tools by LangChain ReAct Agent.
It leverages a utility function `convert_mcp_to_langchain_tools()` from
[`langchain_mcp_tools`](https://pypi.org/project/langchain-mcp-tools/).
This function handles parallel initialization of specified multiple MCP servers
and converts their available tools into a list of LangChain-compatible tools
([List[BaseTool]](https://python.langchain.com/api_reference/core/tools/langchain_core.tools.base.BaseTool.html#langchain_core.tools.base.BaseTool)).
LLMs from Anthropic, OpenAI and Groq are currently supported.
A typescript version of this MCP client is available
[here](https://github.com/hideya/mcp-client-langchain-ts)
## Requirements
- Python 3.11+
- [`uv`](https://docs.astral.sh/uv/) installation
- API keys from [Anthropic](https://console.anthropic.com/settings/keys),
[OpenAI](https://platform.openai.com/api-keys), and/or
[Groq](https://console.groq.com/keys)
as needed
## Setup
1. Install dependencies:
```bash
make install
```
2. Setup API keys:
```bash
cp .env.template .env
```
- Update `.env` as needed.
- `.gitignore` is configured to ignore `.env`
to prevent accidental commits of the credentials.
3. Configure LLM and MCP Servers settings `llm_mcp_config.json5` as needed.
- [The configuration file format](https://github.com/hideya/mcp-client-langchain-ts/blob/main/llm_mcp_config.json5)
for MCP servers follows the same structure as
[Claude for Desktop](https://modelcontextprotocol.io/quickstart/user),
with one difference: the key name `mcpServers` has been changed
to `mcp_servers` to follow the snake_case convention
commonly used in JSON configuration files.
- The file format is [JSON5](https://json5.org/),
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.
## Usage
Run the app:
```bash
make start
```
It takes a while on the first run.
Run in verbose mode:
```bash
make start-v
```
See commandline options:
```bash
make 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`