AI工具服务器

AI-Parrot MCP Server是一个模型上下文协议服务器,用于将AI工具和自定义功能暴露为MCP兼容的服务,供AI代理和客户端使用。

  • by phenobarbital
  • Makefile
  • 本地部署
  • 14 星标
  • 更新于
在 GitHub 查看 phenobarbital/parrot-mcp-server

使用说明

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)

创建新配置

  1. 创建目录 mcp_servers
  2. 在中创建新文件 mcp_servers/ (例如。, server.yaml).
  3. 添加 MCPServer 块。
  4. 列出您要公开的工具。

示例:谷歌搜索服务器

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-server

Dockerfile已配置为加载 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:

🤝 社区与支持


内置于❤️ AI鹦鹉团队