PAL-个人AI层
用于自定义命令和提示管理的MCP(模型上下文协议)服务器。PAL使像Claude这样的LLM能够通过简单的 $$command 语法。
特性
- 自定义命令:使用定义和执行自定义提示
$$command语法 - 指挥管道:使用链命令
|操作员($$cmd1 | cmd2) - 及时管理:创建、查看和管理自定义提示
- 变量替换:使用
$MSG,$REPLY,$REPLY1..$REPLYN,$REPLIES,以及基于标题的变量 - 标记:标记和检索对话会话中的内容(需要Meilisearch)
- 备注:带有AI标签的全文可搜索笔记(需要Meilisearch)
- OAuth 2.0:使用PKCE进行外部连接的安全身份验证
- 可扩展:通过文件系统或内置默认值添加自定义提示
安装
来源
# Clone the repository
git clone https://github.com/atykhonov/pal-mcp.git
cd pal-mcp
# Install in development mode
pip install -e ".[dev]"使用Docker
docker compose up --build -d快速开始
运行服务器
# Using the CLI entry point
pal
# Or as a Python module
python -m pal
# Or directly
python src/pal/server.py服务器启动于 http://localhost:8090 默认情况下。
配置
PAL使用环境变量进行配置。您还可以使用 .env 项目根目录中的文件。
核心设置
| 变量 | 默认值 | 描述 |
|---|---|---|
PAL_TRANSPORT | sse | 运输类型: sse 或 stdio |
PAL_SERVER_PORT | 8090 | 服务器端口 |
PAL_SERVER_HOST | 0.0.0.0 | 服务器主机 |
PAL_PROMPTS_DIR | ~/.pal-mcp-prompts | 提示文件目录 |
PAL_FILES_DIR | ~/.pal-mcp-prompts/files | 静态文件目录 |
PAL_LOG_LEVEL | INFO | 日志记录级别 |
PAL_SSL_CERTFILE | - | SSL证书文件的路径 |
PAL_SSL_KEYFILE | - | SSL密钥文件的路径 |
OAuth设置
| 变量 | 默认值 | 描述 |
|---|---|---|
PAL_OAUTH_ENABLED | true | 为外部连接启用OAuth 2.0 |
PAL_OAUTH_PUBLIC_URL | - | OAuth重定向的公共URL |
PAL_OAUTH_SECRET | (已生成) | 用于签名令牌的密钥 |
PAL_OAUTH_TOKEN_EXPIRY | 86400 | 令牌过期时间(秒)(24小时) |
PAL_OAUTH_ALLOWED_NETWORKS | 127.0.0.0/8,... | 绕过OAuth的CIDR范围 |
备注设置
| 变量 | 默认值 | 描述 |
|---|---|---|
PAL_NOTES_ENABLED | false | 启用笔记功能 |
PAL_MEILISEARCH_URL . http://localhost:7700) | ||
PAL_NOTES_AI_PROVIDER | pal-follow-up | 用于标签生成的AI提供商: mcp-sampling, ollama, pal-follow-up,或 none |
PAL_OLLAMA_URL | http://localhost:11434 | 人工智能功能的Ollama URL |
PAL_OLLAMA_MODEL | llama3.2 | 人工智能特征的Ollama模型 |
用法
内置命令
| 命令 | 描述 |
|---|---|
$$help | 列出所有可用命令 |
$$echo | 回显文本(带变量替换) |
$$lorem-ipsum 生成lorem ipsum文本。 | |
$$prompt | 列出所有自定义提示 |
$$prompt | 显示提示定义 |
$$prompt | 创建/更新自定义提示 |
$$ --help | 显示可用子命令 |
注释命令
需要 PAL_NOTES_ENABLED=true 以及一个正在运行的Meilisearch实例。
| 命令 | 描述 |
|---|---|
$$notes add | 添加带有AI生成标签的新笔记 |
$$notes list | 列出所有笔记 |
$$notes list --tags tag1,tag2 | 列出按标签筛选的注释 |
$$notes search | 全文搜索注释 |
$$notes search --ai | 基于人工智能的语义搜索 |
$$notes view | 按ID查看笔记 |
$$notes tags | 为笔记重新生成标签 |
$$notes delete | 删除注释 |
创建自定义提示
# Create a translation prompt
$$prompt tr Translate the following text to Ukrainian:\n\n{input}
# Use the prompt
$$tr Hello, world!指挥管道
# Chain commands together
$$echo Hello | tr变量替换
LLM在调用命令之前会自动替换这些变量:
$MSG-用户之前的消息$REPLY-LLM之前的回应$REPLY1,$REPLY2, ...-较早的回复(1回、2回等)$REPLIES-LLM之前的所有响应(连接)$HEADING_NAME-内容如下## Heading Name在之前的回复中
标记内容
标记和检索对话会话中的内容:
| 命令 | 描述 |
|---|---|
$$session | 显示或初始化会话UUID |
$$tag tag1,tag2 [content] | 标记内容(默认为$REPLY) |
$$tags | 按标签获取项目 |
$$tags list | 列出标记的项目 |
$$tags search "query" | 搜索标记的内容 |
标签的作用域是使用LLM生成的SESSION_UID的对话。LLM在首次使用时生成此UUID $$tag 或 $$session 并在整个谈话过程中记住它。
项目结构
pal-mcp/
├── src/pal/ # Main package
│ ├── __init__.py
│ ├── __main__.py # Entry point
│ ├── config.py # Configuration (pydantic-settings)
│ ├── server.py # MCP server with OAuth 2.0
│ ├── auth.py # OAuth 2.1 manager
│ ├── prompts/ # Prompt management
│ │ ├── __init__.py
│ │ ├── defaults.py # Default prompts
│ │ └── loader.py # Prompt loading
│ └── tools/ # MCP tools
│ ├── __init__.py
│ ├── handlers.py # Command handlers
│ ├── parser.py # Command parsing
│ ├── registry.py # Tool registration
│ └── curl.py # Curl tool for HTTP requests
├── tests/ # Test suite
├── pyproject.toml # Project configuration
├── Dockerfile
└── docker-compose.yml # Includes Meilisearch & Ollama发展
设置
# Install with development dependencies
pip install -e ".[dev]"
# Set up pre-commit hooks
pre-commit install运行测试
# Run all tests
pytest
# Run with coverage
pytest --cov=src/pal --cov-report=html代码质量
# Format code
black src tests
# Lint
ruff check src tests
# Type checking
mypy src添加自定义提示
通过文件系统
创建 .md 文件在 ~/.pal-mcp-prompts/:
# Flat command: ~/.pal-mcp-prompts/mycommand.md
echo "Your prompt here" > ~/.pal-mcp-prompts/mycommand.md
# Nested command: ~/.pal-mcp-prompts/namespace/subcommand.md
mkdir -p ~/.pal-mcp-prompts/git
echo "Git commit prompt" > ~/.pal-mcp-prompts/git/commit.md
# Custom user prompts: ~/.pal-mcp-prompts/custom/
mkdir -p ~/.pal-mcp-prompts/custom
echo "Translate to Spanish:" > ~/.pal-mcp-prompts/custom/es.mdAPI终点
| 端点 | 方法 | 描述 |
|---|---|---|
/sse | MCP的GET | SSE连接 |
/mcp | POST | 可流式HTTP传输 |
/authorize | GET | OAuth 2.0授权 |
/token | POST | OAuth 2.0令牌交换 |
/files/* | GET | 静态文件服务 |
MCP工具
PAL公开了两个MCP工具:
run_pal_command
使用可选管道执行PAL命令。
{
"command": "git commit | review"
}list_pal_commands
列出所有可用命令。
许可证
麻省理工学院
