AI鹦鹉MCP服务器
此存储库使用以下方式托管模型上下文协议(MCP)服务器配置 ai-parrot。它允许您暴露各种 ai-parrot 工具(或自定义功能)作为符合MCP的服务器,可供AI代理和客户端(如Claude Desktop、Antigravity等)使用。
快速开始
安装:
# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# Create virtual environment
uv venv --python 3.11 .venv
# Activate virtual environment
source .venv/bin/activate
# Install dependencies
uv sync
# or manually install ai-parrot:
uv pip install ai-parrot[mcp,llms]创建环境文件:
mkdir env
kardex create这将在以下位置创建整个NavConfig项目结构 parrot-mcp-server (环境:dev)
创建新配置
- 创建目录
mcp_servers - 在中创建新文件
mcp_servers/(例如。,server.yaml). - 添加
MCPServer块。 - 列出您要公开的工具。
示例:谷歌搜索服务器
MCPServer:
name: GoogleMCP
port: 8082
transport: http
tools:
- GoogleSearch:
api_key: GOOGLE_API_KEY
cse_id: GOOGLE_CSE_ID运行MCP服务器:
parrot mcp --config mcp_servers/server.yaml配置
服务器使用位于 mcp_servers/ 目录。
结构
配置文件定义了一个 MCPServer 块:
MCPServer:
name: MyServer # Friendly name
host: 0.0.0.0 # Host to bind to
port: 8081 # Port to listen on
transport: http # 'http' or 'stdio'
auth_method: api_key # 'none' or 'api_key'
api_key: MY_ENV_API_KEY # API Key (can be environment variable)
tools:
- ToolName: # Class name of the tool/toolkit
arg1: value # Arguments passed to __init__
arg2: ENV_VAR_NAME # Environment variable substitution关键属性
transport:
- http:启动web服务器(可用于远程访问)。 - stdio:使用标准输入/输出(可用于与Claude Desktop的本地集成)。 - sse:使用服务器发送事件启动web服务器(对远程访问有用)。 - ws:使用WebSocket启动web服务器(可用于远程访问)。 - quic:使用QUIC启动web服务器(可用于远程访问)。 - grpc:使用gRPC启动web服务器(可用于远程访问)。 - unix:使用Unix域套接字启动web服务器(对于与Claude Desktop的本地集成非常有用)。
auth_method:
- none:不需要身份验证。 - api_key:需要 X-API-Key 头球
api_key:
- 在以下情况下设置所需的API密钥 auth_method 是 api_key. - 环境替代:如果该值检查环境变量(例如。, MCP_SERVER_API_KEY),它将被使用。
tools:
- 要加载的工具列表。每个条目都是一个字典,其中的关键字是Tool/Toolkit类名(来自 ai-parrot)该值是一个参数字典。
环境变量替换
您可以使用环境变量 任何 配置中的字符串值(服务器参数或工具参数)。
- 如果一个值与现有的环境变量名称匹配,则将其替换为该变量的值。
- 例子:
"server_url": "JIRA_URL"->决心os.getenv("JIRA_URL").
阅读AI Parrot文档以获取更多信息。
可用工具
任何可用的工具 ai-parrot 可以加载。常用工具包括:
JiraToolkit:Jira的操作(获取、搜索、转换问题)。GoogleSearch:执行谷歌搜索。OpenWeather:获取天气数据。ArangoDBSearch:搜索ArangoDB。PostgreSQLToolkit/DatabaseQuery:SQL数据库交互。GitToolkit:Git存储库操作。AWSCloudWatch:AWS CloudWatch日志和指标。MsTeams:微软团队互动。Office365:Outlook和日历(通过O365Toolkit).
还有更多,请查看 ai-parrot 完整列表的文档。
*注意:确保您满足特定工具的Python依赖关系(例如。, jira 包装用于 JiraToolkit).*
Docker支持
您可以使用提供的Docker镜像运行服务器:
docker build -f docs/Dockerfile -t mcp-server .
docker run -p 8081:8081 --env-file .env.api mcp-serverDockerfile已配置为加载 server.yaml,这通常是指向您所需配置的符号链接 mcp_servers/.
添加自定义工具
您可以轻松扩展 parrot-mcp-server 通过在中添加自己的自定义工具 plugins/tools/ 目录。MCP服务器加载程序会自动扫描此目录,将其作为MCP端点公开。
构建自定义工具有三种主要方法:
1.延伸 AbstractTool
适用于实现特定功能的简单、单一用途工具 _execute 行动。
# plugins/tools/my_tools.py
import asyncio
from parrot.tools.abstract import AbstractTool
class MyCustomTool(AbstractTool):
name = "MyCustomTool"
description = "A custom tool that echoes text."
async def _execute(self, text: str) -> str:
return f"Echo: {text}"在 server.yaml:
MCPServer:
tools:
- MyCustomTool:2.延伸 AbstractToolkit
工具包旨在将多个相关工具组合到一个类中。 任何公共异步方法(不以开头 _)内部A AbstractToolkit 子类会自动作为自己的独立MCP工具公开。
这非常适合包装整个API或SDK,其中多个函数共享相同的初始化参数(如API键或连接)。
# plugins/tools/my_toolkit.py
from parrot.tools.toolkit import AbstractToolkit
class MyApiToolkit(AbstractToolkit):
def __init__(self, api_key: str):
self.api_key = api_key
async def get_user_info(self, user_id: int) -> str:
"""Fetch user information."""
return f"User {user_id} info using key {self.api_key}"
async def get_billing_status(self, user_id: int) -> str:
"""Fetch billing details."""
return f"Billing status for {user_id}"在 server.yaml,提供初始化参数(它们支持自动环境变量替换):
MCPServer:
tools:
- MyApiToolkit:
api_key: MY_SECRET_API_KEY*结果:MCP服务器将公开两个名为 get_user_info 和 get_billing_status.*
3.使用 @tool 装饰器
为了快速编写脚本,您可以装饰一个标准的Python函数。
# plugins/tools/simple_tools.py
from parrot.tools.decorators import tool
@tool(
name="SystemPing",
description="Returns a simple ping response"
)
async def ping_tool() -> str:
return "pong"在 server.yaml:
MCPServer:
tools:
- ping_tool:🤝 社区与支持
- 问题:
- 讨论:
- 贡献:欢迎拉取请求!请阅读
CONTRIBUTING.md.
______________________________________________________________________
*内置于❤️ AI鹦鹉团队*
