Mcpex
MCPEX是机器聊天协议(MCP)的Elixir实现。
开发设置
需求
- Elixir 1.18.3与Erlang/OTP 27
- 该项目包括
.tool-versions与一起使用的文件 asdf
自动设置
要在开发VM中快速设置,请运行:
./setup.sh此脚本将:
- 安装asdf版本管理器
- 使用asdf安装Erlang 27.0和Elixir 1.18.3(注意:Erlang编译可能需要10-20分钟)
- 安装Hex包管理器和钢筋
- 获取项目依赖关系
- 编译项目
- 运行测试以验证设置
注: Erlang编译可能需要花费大量时间(10-20分钟),因为它是从源代码构建的。您可以通过以下方式在另一个终端中监视进度: ``bash tail -f ~/.asdf/plugins/erlang/kerl-home/builds/asdf_*/otp_build*.log ``使用Makefile
该项目包括一个Makefile,用于简化常见的开发任务:
# Setup development environment
make setup
# Get dependencies
make deps
# Compile the project
make compile
# Run tests
make test
# Run the application
make run
# Format code
make format
# Run static code analysis
make lint
# Generate documentation
make docs
# Docker tasks
make docker-build
make docker-run
make docker-stop
# Show all available commands
make help手动设置
如果您更喜欢手动设置:
- 安装asdf版本管理器:
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.13.1
echo '. "$HOME/.asdf/asdf.sh"' >> ~/.bashrc
echo '. "$HOME/.asdf/completions/asdf.bash"' >> ~/.bashrc
source ~/.asdf/asdf.sh- 使用asdf安装Erlang和Elixir:
# Install required dependencies for building Erlang
apt-get update
apt-get install -y build-essential autoconf m4 libncurses5-dev libwxgtk3.2-dev libwxgtk-webview3.2-dev libgl1-mesa-dev libglu1-mesa-dev libpng-dev libssh-dev unixodbc-dev xsltproc fop libxml2-utils libncurses-dev openjdk-17-jdk
# Install asdf plugins
asdf plugin add erlang
asdf plugin add elixir
# Install versions from .tool-versions file
asdf install- 安装Hex包管理器和钢筋:
mix local.hex --force
mix local.rebar --force- 获取依赖关系:
mix deps.get- 编译项目:
mix compile- 运行测试:
mix test运行应用程序
本地运行
要在本地启动应用程序,请执行以下操作:
mix run --no-halt使用Docker运行
该项目包括Docker配置,便于容器化部署:
- 构建并启动容器:
docker-compose up- 或者在分离模式下构建和运行:
docker-compose up -d- 要停止容器:
docker-compose down作为依赖使用
如果 可用十六进制,该软件包可以安装 通过添加 mcpex 到中的依赖项列表 mix.exs:
def deps do
[
{:mcpex, "~> 0.1.0"}
]
end文档可以通过以下方式生成 ExDoc 并发表于 HexDocs。一旦发布,文档可以 在找到 .
JSON处理
MCPEX使用Elixir的内置 JSON 模块(自Elixir 1.18起可用)用于所有JSON编码和解码操作。使用此项目时,请不要将Jason或其他JSON库添加为依赖项。
有关此项目中JSON使用的更多详细信息,请参阅 docs/json_usage.md.
