一个使用LangGraph和**MCP(模型上下文协议)**构建的极简AI编码助手。该项目展示了如何创建具有简洁架构的功能性编码助手,剥离复杂性以理解核心概念。
cd claude-code-tool
cp .env.example .env
# 编辑.env并添加你的ANTHROPIC_API_KEY
# uv会自动创建.venv并安装依赖项
uv sync
uv run main.py
启动后,你会看到一个彩色的终端界面。尝试这些命令:
help - 显示帮助信息
tools - 列出所有可用工具
exit/quit/q - 退出助手
"显示main.py的内容"
"你有哪些工具?"
"列出当前目录下的所有Python文件"
"运行单元测试"
"在代码库中搜索'agent'"
"读取README文件"
要启用MCP工具,你需要安装相应的MCP服务器:
npm install -g @modelcontextprotocol/server-filesystem
npm install -g @modelcontextprotocol/server-duckduckgo
npm install -g @modelcontextprotocol/server-github
# 在.env中设置GITHUB_TOKEN
# 构建Deno Docker镜像
docker build -t deno-docker:latest -f ./mcps/deno/Dockerfile ./mcps/deno
所有对话都保存在checkpoints.db中。你可以检查状态:
# 查看最近的写入
sqlite3 checkpoints.db "SELECT * FROM writes LIMIT 5"
# 查看检查点
sqlite3 checkpoints.db "SELECT * FROM checkpoints LIMIT 5"
创建一个.env文件,包含:
# 必需
ANTHROPIC_API_KEY=your_anthropic_api_key
# 可选
GITHUB_TOKEN=your_github_token
要添加自定义工具,请编辑tools/local_tools.py:
from langchain_core.tools import tool
@tool
def my_custom_tool(param: str) -> str:
"""工具描述"""
# 你的实现
return result
# 添加到get_local_tools()
def get_local_tools():
return [
# ... 现有工具
my_custom_tool,
]
claude-code-tool/
├── main.py # 入口点
├── agent.py # 核心代理实现
├── tools/
│ ├── __init__.py
│ ├── local_tools.py # 本地工具实现
│ └── mcp_tools.py # MCP工具集成
├── mcps/
│ └── deno/
│ └── Dockerfile # Deno MCP容器
├── pyproject.toml # 依赖项
├── .env.example # 环境模板
├── .gitignore
└── README.md
助手使用Rich进行终端UI。在agent.py中自定义外观:
_display_welcome()[bold cyan])Panel()配置助手包括pytest集成。要测试:
# 向助手询问
"运行单元测试"
# 或手动
uv run pytest -v
.env文件。使用环境变量。欢迎贡献!改进领域:
LangGraph的SQLite检查点在每一步之后保存整个对话状态:
根据需要启动模型上下文协议服务器:
愉快编码!🚀
有任何问题或意见?欢迎随时提出问题或贡献!
直接输出翻译后的中文技术文档,保持完整Markdown格式。